diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 17a1cb5720e..203c7ae7607 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -18,6 +18,7 @@ apps/cli/src/auth @bitwarden/team-auth-dev apps/desktop/src/auth @bitwarden/team-auth-dev apps/web/src/app/auth @bitwarden/team-auth-dev libs/auth @bitwarden/team-auth-dev +libs/user-core @bitwarden/team-auth-dev # web connectors used for auth apps/web/src/connectors @bitwarden/team-auth-dev bitwarden_license/bit-web/src/app/auth @bitwarden/team-auth-dev @@ -91,6 +92,10 @@ libs/common/spec @bitwarden/team-platform-dev libs/common/src/state-migrations @bitwarden/team-platform-dev libs/platform @bitwarden/team-platform-dev libs/storage-core @bitwarden/team-platform-dev +libs/logging @bitwarden/team-platform-dev +libs/storage-test-utils @bitwarden/team-platform-dev +libs/messaging @bitwarden/team-platform-dev +libs/messaging-internal @bitwarden/team-platform-dev # Web utils used across app and connectors apps/web/src/utils/ @bitwarden/team-platform-dev # Web core and shared files @@ -131,9 +136,12 @@ libs/common/src/autofill @bitwarden/team-autofill-dev apps/desktop/macos/autofill-extension @bitwarden/team-autofill-dev apps/desktop/src/app/components/fido2placeholder.component.ts @bitwarden/team-autofill-dev apps/desktop/desktop_native/windows_plugin_authenticator @bitwarden/team-autofill-dev +apps/desktop/desktop_native/autotype @bitwarden/team-autofill-dev # DuckDuckGo integration apps/desktop/native-messaging-test-runner @bitwarden/team-autofill-dev apps/desktop/src/services/duckduckgo-message-handler.service.ts @bitwarden/team-autofill-dev +apps/desktop/src/services/encrypted-message-handler.service.ts @bitwarden/team-autofill-dev +.github/workflows/alert-ddg-files-modified.yml @bitwarden/team-autofill-dev # SSH Agent apps/desktop/desktop_native/core/src/ssh_agent @bitwarden/team-autofill-dev @bitwarden/wg-ssh-keys diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 09afb97174f..906bbbd7125 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -398,17 +398,7 @@ reviewers: ["team:team-vault-dev"], }, { - matchPackageNames: [ - "@types/argon2-browser", - "aes", - "argon2", - "argon2-browser", - "big-integer", - "cbc", - "rsa", - "russh-cryptovec", - "sha2", - ], + matchPackageNames: ["aes", "big-integer", "cbc", "rsa", "russh-cryptovec", "sha2"], description: "Key Management owned dependencies", commitMessagePrefix: "[deps] KM:", reviewers: ["team:team-key-management-dev"], diff --git a/.github/workflows/alert-ddg-files-modified.yml b/.github/workflows/alert-ddg-files-modified.yml new file mode 100644 index 00000000000..61bb7f1e8af --- /dev/null +++ b/.github/workflows/alert-ddg-files-modified.yml @@ -0,0 +1,50 @@ +name: DDG File Change Monitor + +on: + pull_request: + branches: [ main ] + types: [ opened, synchronize ] + +jobs: + check-files: + name: Check files + runs-on: ubuntu-22.04 + permissions: + contents: read + pull-requests: write + steps: + - name: Checkout code + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + fetch-depth: 0 + + - name: Get changed files + id: changed-files + uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + with: + list-files: shell + filters: | + monitored: + - 'apps/desktop/native-messaging-test-runner/**' + - 'apps/desktop/src/services/duckduckgo-message-handler.service.ts' + - 'apps/desktop/src/services/encrypted-message-handler.service.ts' + + - name: Comment on PR if monitored files changed + if: steps.changed-files.outputs.monitored == 'true' + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const changedFiles = `${{ steps.changed-files.outputs.monitored_files }}`.split(' ').filter(file => file.trim() !== ''); + + const message = `⚠️🦆 **DuckDuckGo Integration files have been modified in this PR:** + + ${changedFiles.map(file => `- \`${file}\``).join('\n')} + + Please run the DuckDuckGo native messaging test runner from this branch using [these instructions](https://contributing.bitwarden.com/getting-started/clients/desktop/native-messaging-test-runner) and ensure it functions properly.`; + + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: message + }); diff --git a/.github/workflows/build-browser-target.yml b/.github/workflows/build-browser-target.yml index a2ae48d419b..e89a41c1009 100644 --- a/.github/workflows/build-browser-target.yml +++ b/.github/workflows/build-browser-target.yml @@ -28,6 +28,8 @@ jobs: check-run: name: Check PR run uses: bitwarden/gh-actions/.github/workflows/check-run.yml@main + permissions: + contents: read run-workflow: name: Build Browser @@ -35,4 +37,8 @@ jobs: if: ${{ github.event.pull_request.head.repo.full_name != github.repository }} uses: ./.github/workflows/build-browser.yml secrets: inherit + permissions: + contents: write + pull-requests: write + id-token: write diff --git a/.github/workflows/build-browser.yml b/.github/workflows/build-browser.yml index ea113f8b9a5..be140b9a20e 100644 --- a/.github/workflows/build-browser.yml +++ b/.github/workflows/build-browser.yml @@ -41,7 +41,8 @@ defaults: run: shell: bash -permissions: {} +permissions: + contents: read jobs: setup: @@ -77,10 +78,8 @@ jobs: - name: Check secrets id: check-secrets - env: - AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} run: | - has_secrets=${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL != '' }} + has_secrets=${{ secrets.AZURE_CLIENT_ID != '' }} echo "has_secrets=$has_secrets" >> $GITHUB_OUTPUT @@ -163,10 +162,6 @@ jobs: FILES=$(find . -maxdepth 1 -type f) for FILE in $FILES; do cp "$FILE" browser-source/; done - # Copy patches to the Browser source directory - mkdir -p browser-source/patches - cp -r patches/* browser-source/patches - # Copy apps/browser to the Browser source directory mkdir -p browser-source/apps/browser cp -r apps/browser/* browser-source/apps/browser @@ -268,6 +263,29 @@ jobs: working-directory: browser-source/ run: npm link ../sdk-internal + - name: Check source file size + if: ${{ startsWith(matrix.name, 'firefox') }} + run: | + # Declare variable as indexed array + declare -a FILES + + # Search for source files that are greater than 5M + TARGET_DIR='./browser-source/apps/browser' + while IFS=' ' read -r RESULT; do + FILES+=("$RESULT") + done < <(find $TARGET_DIR -size +5M) + + # Validate results and provide messaging + if [[ ${#FILES[@]} -ne 0 ]]; then + echo "File(s) exceeds size limit: 5MB" + for FILE in ${FILES[@]}; do + echo "- $(du --si $FILE)" + done + echo "ERROR Firefox rejects extension uploads that contain files larger than 5MB" + # Invoke failure + exit 1 + fi + - name: Build extension run: npm run ${{ matrix.npm_command }} working-directory: browser-source/apps/browser @@ -283,6 +301,9 @@ jobs: build-safari: name: Build Safari runs-on: macos-13 + permissions: + contents: read + id-token: write needs: - setup - locales-test @@ -308,10 +329,19 @@ jobs: node --version npm --version - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} + + - name: Get Azure Key Vault secrets + id: get-kv-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: gh-clients + secrets: "KEYCHAIN-PASSWORD" - name: Download Provisioning Profiles secrets env: @@ -347,9 +377,12 @@ jobs: az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Set up keychain env: - KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + KEYCHAIN_PASSWORD: ${{ steps.get-kv-secrets.outputs.KEYCHAIN-PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain @@ -421,6 +454,10 @@ jobs: name: Crowdin Push if: github.event_name != 'pull_request_target' && github.ref == 'refs/heads/main' runs-on: ubuntu-22.04 + permissions: + contents: write + pull-requests: write + id-token: write needs: - build - build-safari @@ -430,10 +467,12 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -442,6 +481,9 @@ jobs: keyvault: "bitwarden-ci" secrets: "crowdin-api-token" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Upload Sources uses: crowdin/github-action@f214c8723025f41fc55b2ad26e67b60b80b1885d # v2.7.1 env: @@ -459,6 +501,9 @@ jobs: name: Check for failures if: always() runs-on: ubuntu-22.04 + permissions: + contents: read + id-token: write needs: - setup - locales-test @@ -474,11 +519,13 @@ jobs: && contains(needs.*.result, 'failure') run: exit 1 - - name: Login to Azure - Prod Subscription - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure if: failure() + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -488,6 +535,10 @@ jobs: keyvault: "bitwarden-ci" secrets: "devops-alerts-slack-webhook-url" + - name: Log out from Azure + if: failure() + uses: bitwarden/gh-actions/azure-logout@main + - name: Notify Slack on failure uses: act10ns/slack@44541246747a30eb3102d87f7a4cc5471b0ffb7d # v2.1.0 if: failure() diff --git a/.github/workflows/build-cli-target.yml b/.github/workflows/build-cli-target.yml index 6b493d4e6d9..54865ddaddd 100644 --- a/.github/workflows/build-cli-target.yml +++ b/.github/workflows/build-cli-target.yml @@ -28,6 +28,8 @@ jobs: check-run: name: Check PR run uses: bitwarden/gh-actions/.github/workflows/check-run.yml@main + permissions: + contents: read run-workflow: name: Build CLI @@ -35,4 +37,7 @@ jobs: if: ${{ github.event.pull_request.head.repo.full_name != github.repository }} uses: ./.github/workflows/build-cli.yml secrets: inherit + permissions: + contents: read + id-token: write diff --git a/.github/workflows/build-cli.yml b/.github/workflows/build-cli.yml index ac314a4c33a..b31b22b926e 100644 --- a/.github/workflows/build-cli.yml +++ b/.github/workflows/build-cli.yml @@ -78,10 +78,8 @@ jobs: - name: Check secrets id: check-secrets - env: - AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} run: | - has_secrets=${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL != '' }} + has_secrets=${{ secrets.AZURE_CLIENT_ID != '' }} echo "has_secrets=$has_secrets" >> $GITHUB_OUTPUT @@ -108,6 +106,10 @@ jobs: _NODE_VERSION: ${{ needs.setup.outputs.node_version }} _WIN_PKG_FETCH_VERSION: 20.11.1 _WIN_PKG_VERSION: 3.5 + permissions: + contents: read + id-token: write + steps: - name: Check out repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -156,9 +158,11 @@ jobs: - name: Login to Azure if: ${{ matrix.os.base == 'mac' && needs.setup.outputs.has_secrets == 'true' }} - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Get certificates if: ${{ matrix.os.base == 'mac' && needs.setup.outputs.has_secrets == 'true' }} @@ -168,10 +172,21 @@ jobs: az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-app-cert | jq -r .value | base64 -d > $HOME/certificates/devid-app-cert.p12 + - name: Get Azure Key Vault secrets + id: get-kv-secrets + if: ${{ matrix.os.base == 'mac' && needs.setup.outputs.has_secrets == 'true' }} + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: gh-clients + secrets: "KEYCHAIN-PASSWORD,APP-STORE-CONNECT-AUTH-KEY,APP-STORE-CONNECT-TEAM-ISSUER" + + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Set up keychain if: ${{ matrix.os.base == 'mac' && needs.setup.outputs.has_secrets == 'true' }} env: - KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + KEYCHAIN_PASSWORD: ${{ steps.get-kv-secrets.outputs.KEYCHAIN-PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain @@ -199,13 +214,13 @@ jobs: run: | mkdir ~/private_keys cat << EOF > ~/private_keys/AuthKey_6TV9MKN3GP.p8 - ${{ secrets.APP_STORE_CONNECT_AUTH_KEY }} + ${{ steps.get-kv-secrets.outputs.APP-STORE-CONNECT-AUTH-KEY }} EOF - name: Notarize app if: ${{ matrix.os.base == 'mac' && needs.setup.outputs.has_secrets == 'true' }} env: - APP_STORE_CONNECT_TEAM_ISSUER: ${{ secrets.APP_STORE_CONNECT_TEAM_ISSUER }} + APP_STORE_CONNECT_TEAM_ISSUER: ${{ steps.get-kv-secrets.outputs.APP-STORE-CONNECT-TEAM-ISSUER }} APP_STORE_CONNECT_AUTH_KEY: 6TV9MKN3GP APP_STORE_CONNECT_AUTH_KEY_PATH: ~/private_keys/AuthKey_6TV9MKN3GP.p8 run: | @@ -261,6 +276,9 @@ jobs: { build_prefix: "bit", artifact_prefix: "", readable: "commercial license" } ] runs-on: windows-2022 + permissions: + contents: read + id-token: write needs: setup env: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} @@ -344,11 +362,13 @@ jobs: 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: Login to Azure + - name: Log in to Azure if: ${{ needs.setup.outputs.has_secrets == 'true' }} - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -362,6 +382,10 @@ jobs: code-signing-client-secret, code-signing-cert-name" + - name: Log out from Azure + if: ${{ needs.setup.outputs.has_secrets == 'true' }} + uses: bitwarden/gh-actions/azure-logout@main + - name: Install run: npm ci working-directory: ./ @@ -520,6 +544,9 @@ jobs: name: Check for failures if: always() runs-on: ubuntu-24.04 + permissions: + contents: read + id-token: write needs: - setup - cli @@ -534,11 +561,13 @@ jobs: && contains(needs.*.result, 'failure') run: exit 1 - - name: Login to Azure - Prod Subscription - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure if: failure() + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -548,6 +577,10 @@ jobs: keyvault: "bitwarden-ci" secrets: "devops-alerts-slack-webhook-url" + - name: Log out from Azure + if: failure() + uses: bitwarden/gh-actions/azure-logout@main + - name: Notify Slack on failure uses: act10ns/slack@44541246747a30eb3102d87f7a4cc5471b0ffb7d # v2.1.0 if: failure() diff --git a/.github/workflows/build-desktop-target.yml b/.github/workflows/build-desktop-target.yml index fa21b3fe5d9..96a0e6880f8 100644 --- a/.github/workflows/build-desktop-target.yml +++ b/.github/workflows/build-desktop-target.yml @@ -28,6 +28,8 @@ jobs: check-run: name: Check PR run uses: bitwarden/gh-actions/.github/workflows/check-run.yml@main + permissions: + contents: read run-workflow: name: Build Desktop @@ -35,4 +37,8 @@ jobs: if: ${{ github.event.pull_request.head.repo.full_name != github.repository }} uses: ./.github/workflows/build-desktop.yml secrets: inherit + permissions: + contents: write + pull-requests: write + id-token: write diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index a022fe7fd0f..366d439fb45 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -147,10 +147,8 @@ jobs: - name: Check secrets id: check-secrets - env: - AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} run: | - has_secrets=${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL != '' }} + has_secrets=${{ secrets.AZURE_CLIENT_ID != '' }} echo "has_secrets=$has_secrets" >> $GITHUB_OUTPUT linux: @@ -404,6 +402,9 @@ jobs: runs-on: windows-2022 needs: - setup + permissions: + contents: read + id-token: write defaults: run: shell: pwsh @@ -438,11 +439,13 @@ jobs: choco --version rustup show - - name: Login to Azure + - name: Log in to Azure if: ${{ needs.setup.outputs.has_secrets == 'true' }} - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -456,6 +459,10 @@ jobs: code-signing-client-secret, code-signing-cert-name" + - name: Log out from Azure + if: ${{ needs.setup.outputs.has_secrets == 'true' }} + uses: bitwarden/gh-actions/azure-logout@main + - name: Install Node dependencies run: npm ci working-directory: ./ @@ -655,6 +662,9 @@ jobs: runs-on: macos-13 needs: - setup + permissions: + contents: read + id-token: write env: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} _NODE_VERSION: ${{ needs.setup.outputs.node_version }} @@ -700,11 +710,21 @@ jobs: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension - - name: Login to Azure + - name: Log in to Azure if: ${{ needs.setup.outputs.has_secrets == 'true' }} - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} + + - name: Get Azure Key Vault secrets + id: get-kv-secrets + if: ${{ needs.setup.outputs.has_secrets == 'true' }} + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: gh-clients + secrets: "KEYCHAIN-PASSWORD" - name: Download Provisioning Profiles secrets if: ${{ needs.setup.outputs.has_secrets == 'true' }} @@ -747,10 +767,14 @@ jobs: az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 + - name: Log out from Azure + if: ${{ needs.setup.outputs.has_secrets == 'true' }} + uses: bitwarden/gh-actions/azure-logout@main + - name: Set up keychain if: ${{ needs.setup.outputs.has_secrets == 'true' }} env: - KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + KEYCHAIN_PASSWORD: ${{ steps.get-kv-secrets.outputs.KEYCHAIN-PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain @@ -850,6 +874,10 @@ jobs: if: ${{ needs.setup.outputs.has_secrets == 'true' }} uses: ./.github/workflows/build-browser.yml secrets: inherit + permissions: + contents: write + pull-requests: write + id-token: write macos-package-github: @@ -860,6 +888,9 @@ jobs: - browser-build - macos-build - setup + permissions: + contents: read + id-token: write env: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} _NODE_VERSION: ${{ needs.setup.outputs.node_version }} @@ -905,10 +936,19 @@ jobs: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} + + - name: Get Azure Key Vault secrets + id: get-kv-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: gh-clients + secrets: "KEYCHAIN-PASSWORD,APP-STORE-CONNECT-AUTH-KEY,APP-STORE-CONNECT-TEAM-ISSUER" - name: Download Provisioning Profiles secrets env: @@ -949,9 +989,12 @@ jobs: az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Set up keychain env: - KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + KEYCHAIN_PASSWORD: ${{ steps.get-kv-secrets.outputs.KEYCHAIN-PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain @@ -1055,12 +1098,12 @@ jobs: run: | mkdir ~/private_keys cat << EOF > ~/private_keys/AuthKey_6TV9MKN3GP.p8 - ${{ secrets.APP_STORE_CONNECT_AUTH_KEY }} + ${{ steps.get-kv-secrets.outputs.APP-STORE-CONNECT-AUTH-KEY }} EOF - name: Build application (dist) env: - APP_STORE_CONNECT_TEAM_ISSUER: ${{ secrets.APP_STORE_CONNECT_TEAM_ISSUER }} + APP_STORE_CONNECT_TEAM_ISSUER: ${{ steps.get-kv-secrets.outputs.APP-STORE-CONNECT-TEAM-ISSUER }} APP_STORE_CONNECT_AUTH_KEY: 6TV9MKN3GP APP_STORE_CONNECT_AUTH_KEY_PATH: ~/private_keys/AuthKey_6TV9MKN3GP.p8 CSC_FOR_PULL_REQUEST: true @@ -1103,6 +1146,9 @@ jobs: - browser-build - macos-build - setup + permissions: + contents: read + id-token: write env: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} _NODE_VERSION: ${{ needs.setup.outputs.node_version }} @@ -1148,10 +1194,19 @@ jobs: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} + + - name: Get Azure Key Vault secrets + id: get-kv-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: gh-clients + secrets: "KEYCHAIN-PASSWORD,APP-STORE-CONNECT-AUTH-KEY,APP-STORE-CONNECT-TEAM-ISSUER" - name: Retrieve Slack secret id: retrieve-slack-secret @@ -1199,9 +1254,12 @@ jobs: az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Set up keychain env: - KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + KEYCHAIN_PASSWORD: ${{ steps.get-kv-secrets.outputs.KEYCHAIN-PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain @@ -1305,12 +1363,12 @@ jobs: run: | mkdir ~/private_keys cat << EOF > ~/private_keys/AuthKey_6TV9MKN3GP.p8 - ${{ secrets.APP_STORE_CONNECT_AUTH_KEY }} + ${{ steps.get-kv-secrets.outputs.APP-STORE-CONNECT-AUTH-KEY }} EOF - name: Build application for App Store env: - APP_STORE_CONNECT_TEAM_ISSUER: ${{ secrets.APP_STORE_CONNECT_TEAM_ISSUER }} + APP_STORE_CONNECT_TEAM_ISSUER: ${{ steps.get-kv-secrets.outputs.APP-STORE-CONNECT-TEAM-ISSUER }} APP_STORE_CONNECT_AUTH_KEY: 6TV9MKN3GP APP_STORE_CONNECT_AUTH_KEY_PATH: ~/private_keys/AuthKey_6TV9MKN3GP.p8 CSC_FOR_PULL_REQUEST: true @@ -1334,7 +1392,7 @@ jobs: cat << EOF > ~/secrets/appstoreconnect-fastlane.json { - "issuer_id": "${{ secrets.APP_STORE_CONNECT_TEAM_ISSUER }}", + "issuer_id": "${{ steps.get-kv-secrets.outputs.APP-STORE-CONNECT-TEAM-ISSUER }}", "key_id": "6TV9MKN3GP", "key": "$KEY_WITHOUT_NEWLINES" } @@ -1346,7 +1404,7 @@ jobs: github.event_name != 'pull_request_target' && (inputs.testflight_distribute || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/rc' || github.ref == 'refs/heads/hotfix-rc-desktop') env: - APP_STORE_CONNECT_TEAM_ISSUER: ${{ secrets.APP_STORE_CONNECT_TEAM_ISSUER }} + APP_STORE_CONNECT_TEAM_ISSUER: ${{ steps.get-kv-secrets.outputs.APP-STORE-CONNECT-TEAM-ISSUER }} APP_STORE_CONNECT_AUTH_KEY: 6TV9MKN3GP BRANCH: ${{ github.ref }} run: | @@ -1396,6 +1454,10 @@ jobs: - windows - macos-package-github - macos-package-mas + permissions: + contents: write + pull-requests: write + id-token: write runs-on: ubuntu-22.04 steps: - name: Check out repo @@ -1403,10 +1465,12 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -1415,6 +1479,9 @@ jobs: keyvault: "bitwarden-ci" secrets: "crowdin-api-token" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Upload Sources uses: crowdin/github-action@f214c8723025f41fc55b2ad26e67b60b80b1885d # v2.7.1 env: @@ -1442,6 +1509,9 @@ jobs: - macos-package-github - macos-package-mas - crowdin-push + permissions: + contents: read + id-token: write steps: - name: Check if any job failed if: | @@ -1450,11 +1520,13 @@ jobs: && contains(needs.*.result, 'failure') run: exit 1 - - name: Login to Azure - Prod Subscription - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure if: failure() + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -1464,6 +1536,9 @@ jobs: keyvault: "bitwarden-ci" secrets: "devops-alerts-slack-webhook-url" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Notify Slack on failure uses: act10ns/slack@44541246747a30eb3102d87f7a4cc5471b0ffb7d # v2.1.0 if: failure() @@ -1471,3 +1546,4 @@ jobs: SLACK_WEBHOOK_URL: ${{ steps.retrieve-secrets.outputs.devops-alerts-slack-webhook-url }} with: status: ${{ job.status }} + diff --git a/.github/workflows/build-web-target.yml b/.github/workflows/build-web-target.yml index ca10e6d46f2..2f9e201ac60 100644 --- a/.github/workflows/build-web-target.yml +++ b/.github/workflows/build-web-target.yml @@ -27,6 +27,8 @@ jobs: check-run: name: Check PR run uses: bitwarden/gh-actions/.github/workflows/check-run.yml@main + permissions: + contents: read run-workflow: name: Build Web @@ -34,4 +36,9 @@ jobs: if: ${{ github.event.pull_request.head.repo.full_name != github.repository }} uses: ./.github/workflows/build-web.yml secrets: inherit + permissions: + contents: write + pull-requests: write + id-token: write + security-events: write diff --git a/.github/workflows/build-web.yml b/.github/workflows/build-web.yml index 745376b46d8..b4163d161cf 100644 --- a/.github/workflows/build-web.yml +++ b/.github/workflows/build-web.yml @@ -51,7 +51,8 @@ env: _AZ_REGISTRY: bitwardenprod.azurecr.io _GITHUB_PR_REPO_NAME: ${{ github.event.pull_request.head.repo.full_name }} -permissions: {} +permissions: + contents: read jobs: setup: @@ -80,10 +81,8 @@ jobs: - name: Check secrets id: check-secrets - env: - AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} run: | - has_secrets=${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL != '' }} + has_secrets=${{ secrets.AZURE_CLIENT_ID != '' }} echo "has_secrets=$has_secrets" >> $GITHUB_OUTPUT @@ -204,11 +203,13 @@ jobs: uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0 ########## ACRs ########## - - name: Login to Prod Azure + - name: Log in to Azure if: ${{ needs.setup.outputs.has_secrets == 'true' }} - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Log into Prod container registry if: ${{ needs.setup.outputs.has_secrets == 'true' }} @@ -328,11 +329,19 @@ jobs: - name: Log out of Docker run: docker logout $_AZ_REGISTRY + - name: Log out from Azure + if: ${{ needs.setup.outputs.has_secrets == 'true' }} + uses: bitwarden/gh-actions/azure-logout@main + crowdin-push: name: Crowdin Push if: github.event_name != 'pull_request_target' && github.ref == 'refs/heads/main' needs: build-containers + permissions: + contents: write + pull-requests: write + id-token: write runs-on: ubuntu-24.04 steps: - name: Check out repo @@ -340,10 +349,12 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -352,6 +363,9 @@ jobs: keyvault: "bitwarden-ci" secrets: "crowdin-api-token" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Upload Sources uses: crowdin/github-action@f214c8723025f41fc55b2ad26e67b60b80b1885d # v2.7.1 env: @@ -370,11 +384,15 @@ jobs: if: github.event_name != 'pull_request_target' && github.ref == 'refs/heads/main' runs-on: ubuntu-24.04 needs: build-containers + permissions: + id-token: write steps: - - name: Login to Azure - CI Subscription - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve github PAT secrets id: retrieve-secret-pat @@ -383,6 +401,9 @@ jobs: keyvault: "bitwarden-ci" secrets: "github-pat-bitwarden-devops-bot-repo-scope" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Trigger web vault deploy using GitHub Run ID uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: @@ -409,6 +430,8 @@ jobs: - build-containers - crowdin-push - trigger-web-vault-deploy + permissions: + id-token: write steps: - name: Check if any job failed if: | @@ -417,11 +440,13 @@ jobs: && contains(needs.*.result, 'failure') run: exit 1 - - name: Login to Azure - Prod Subscription - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main if: failure() with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -431,6 +456,9 @@ jobs: keyvault: "bitwarden-ci" secrets: "devops-alerts-slack-webhook-url" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Notify Slack on failure uses: act10ns/slack@44541246747a30eb3102d87f7a4cc5471b0ffb7d # v2.1.0 if: failure() diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 78733bc5a8b..d0b9cab4c45 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -15,6 +15,8 @@ jobs: check-run: name: Check PR run uses: bitwarden/gh-actions/.github/workflows/check-run.yml@main + permissions: + contents: read chromatic: name: Chromatic @@ -23,6 +25,7 @@ jobs: permissions: contents: read pull-requests: write + id-token: write steps: - name: Check out repo @@ -30,13 +33,13 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 - + - name: Get changed files id: get-changed-files-for-chromatic uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 with: filters: | - storyFiles: + storyFiles: - "apps/!(cli)/**" - "bitwarden_license/bit-web/src/app/**" - "libs/!(eslint)/**" @@ -74,14 +77,34 @@ jobs: if: steps.get-changed-files-for-chromatic.outputs.storyFiles == 'true' run: npm run build-storybook:ci + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main + with: + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} + + - name: Get Azure Key Vault secrets + id: get-kv-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: gh-clients + secrets: "CHROMATIC-PROJECT-TOKEN" + + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Publish to Chromatic uses: chromaui/action@e8cc4c31775280b175a3c440076c00d19a9014d7 # v11.28.2 with: token: ${{ secrets.GITHUB_TOKEN }} - projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} + projectToken: ${{ steps.get-kv-secrets.outputs.CHROMATIC-PROJECT-TOKEN }} storybookBuildDir: ./storybook-static exitOnceUploaded: true onlyChanged: true - externals: "[\"libs/components/**/*.scss\", \"libs/components/**/*.css\", \"libs/components/tailwind.config*.js\"]" + externals: | + libs/components/**/*.scss + libs/components/**/*.css + libs/components/tailwind.config*.js # Rather than use an `if` check on the whole publish step, we need to tell Chromatic to skip so that any Chromatic-spawned actions are properly skipped skip: ${{ steps.get-changed-files-for-chromatic.outputs.storyFiles == 'false' }} diff --git a/.github/workflows/crowdin-pull.yml b/.github/workflows/crowdin-pull.yml index 2fc035ec038..0b891203855 100644 --- a/.github/workflows/crowdin-pull.yml +++ b/.github/workflows/crowdin-pull.yml @@ -10,6 +10,9 @@ jobs: crowdin-sync: name: Autosync runs-on: ubuntu-24.04 + permissions: + contents: read + id-token: write strategy: fail-fast: false matrix: @@ -21,22 +24,19 @@ jobs: - app_name: web crowdin_project_id: "308189" steps: - - name: Generate GH App token - uses: actions/create-github-app-token@30bf6253fa41bdc8d1501d202ad15287582246b4 # v2.0.3 - id: app-token + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - app-id: ${{ secrets.BW_GHAPP_ID }} - private-key: ${{ secrets.BW_GHAPP_KEY }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - - name: Checkout repo - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: Get Azure Key Vault secrets + id: get-kv-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: - token: ${{ steps.app-token.outputs.token }} - - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 - with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + keyvault: gh-org-bitwarden + secrets: "BW-GHAPP-ID,BW-GHAPP-KEY" - name: Retrieve secrets id: retrieve-secrets @@ -45,6 +45,21 @@ jobs: keyvault: "bitwarden-ci" secrets: "crowdin-api-token, github-gpg-private-key, github-gpg-private-key-passphrase" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + + - name: Generate GH App token + uses: actions/create-github-app-token@30bf6253fa41bdc8d1501d202ad15287582246b4 # v2.0.3 + id: app-token + with: + app-id: ${{ steps.get-kv-secrets.outputs.BW-GHAPP-ID }} + private-key: ${{ steps.get-kv-secrets.outputs.BW-GHAPP-KEY }} + + - name: Checkout repo + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + token: ${{ steps.app-token.outputs.token }} + - name: Download translations uses: bitwarden/gh-actions/crowdin@main env: diff --git a/.github/workflows/deploy-web.yml b/.github/workflows/deploy-web.yml index 1cde8dd636a..e21f7ae1e79 100644 --- a/.github/workflows/deploy-web.yml +++ b/.github/workflows/deploy-web.yml @@ -66,8 +66,9 @@ jobs: environment_url: ${{ steps.config.outputs.environment_url }} environment_name: ${{ steps.config.outputs.environment_name }} environment_artifact: ${{ steps.config.outputs.environment_artifact }} - azure_login_creds: ${{ steps.config.outputs.azure_login_creds }} - retrive_secrets_keyvault: ${{ steps.config.outputs.retrive_secrets_keyvault }} + azure_login_client_key_name: ${{ steps.config.outputs.azure_login_client_key_name }} + azure_login_subscription_id_key_name: ${{ steps.config.outputs.azure_login_subscription_id_key_name }} + retrieve_secrets_keyvault: ${{ steps.config.outputs.retrieve_secrets_keyvault }} sync_utility: ${{ steps.config.outputs.sync_utility }} sync_delete_destination_files: ${{ steps.config.outputs.sync_delete_destination_files }} slack_channel_name: ${{ steps.config.outputs.slack_channel_name }} @@ -81,40 +82,45 @@ jobs: case ${{ inputs.environment }} in "USQA") - echo "azure_login_creds=AZURE_KV_US_QA_SERVICE_PRINCIPAL" >> $GITHUB_OUTPUT - echo "retrive_secrets_keyvault=bw-webvault-rlktusqa-kv" >> $GITHUB_OUTPUT + echo "azure_login_client_key_name=AZURE_CLIENT_ID_USQA" >> $GITHUB_OUTPUT + echo "azure_login_subscription_id_key_name=AZURE_SUBSCRIPTION_ID_USQA" >> $GITHUB_OUTPUT + echo "retrieve_secrets_keyvault=bw-webvault-rlktusqa-kv" >> $GITHUB_OUTPUT echo "environment_artifact=web-*-cloud-QA.zip" >> $GITHUB_OUTPUT echo "environment_name=Web Vault - US QA Cloud" >> $GITHUB_OUTPUT echo "environment_url=http://vault.$ENV_NAME_LOWER.bitwarden.pw" >> $GITHUB_OUTPUT echo "slack_channel_name=alerts-deploy-qa" >> $GITHUB_OUTPUT ;; "EUQA") - echo "azure_login_creds=AZURE_KV_EU_QA_SERVICE_PRINCIPAL" >> $GITHUB_OUTPUT - echo "retrive_secrets_keyvault=webvaulteu-westeurope-qa" >> $GITHUB_OUTPUT + echo "azure_login_client_key_name=AZURE_CLIENT_ID_EUQA" >> $GITHUB_OUTPUT + echo "azure_login_subscription_id_key_name=AZURE_SUBSCRIPTION_ID_EUQA" >> $GITHUB_OUTPUT + echo "retrieve_secrets_keyvault=webvaulteu-westeurope-qa" >> $GITHUB_OUTPUT echo "environment_artifact=web-*-cloud-euqa.zip" >> $GITHUB_OUTPUT echo "environment_name=Web Vault - EU QA Cloud" >> $GITHUB_OUTPUT echo "environment_url=http://vault.$ENV_NAME_LOWER.bitwarden.pw" >> $GITHUB_OUTPUT echo "slack_channel_name=alerts-deploy-qa" >> $GITHUB_OUTPUT ;; "USPROD") - echo "azure_login_creds=AZURE_KV_US_PROD_SERVICE_PRINCIPAL" >> $GITHUB_OUTPUT - echo "retrive_secrets_keyvault=bw-webvault-klrt-kv" >> $GITHUB_OUTPUT + echo "azure_login_client_key_name=AZURE_CLIENT_ID_USPROD" >> $GITHUB_OUTPUT + echo "azure_login_subscription_id_key_name=AZURE_SUBSCRIPTION_ID_USPROD" >> $GITHUB_OUTPUT + echo "retrieve_secrets_keyvault=bw-webvault-klrt-kv" >> $GITHUB_OUTPUT echo "environment_artifact=web-*-cloud-COMMERCIAL.zip" >> $GITHUB_OUTPUT echo "environment_name=Web Vault - US Production Cloud" >> $GITHUB_OUTPUT echo "environment_url=http://vault.bitwarden.com" >> $GITHUB_OUTPUT echo "slack_channel_name=alerts-deploy-prd" >> $GITHUB_OUTPUT ;; "EUPROD") - echo "azure_login_creds=AZURE_KV_EU_PRD_SERVICE_PRINCIPAL" >> $GITHUB_OUTPUT - echo "retrive_secrets_keyvault=webvault-westeurope-prod" >> $GITHUB_OUTPUT + echo "azure_login_client_key_name=AZURE_CLIENT_ID_EUPROD" >> $GITHUB_OUTPUT + echo "azure_login_subscription_id_key_name=AZURE_SUBSCRIPTION_ID_EUPROD" >> $GITHUB_OUTPUT + echo "retrieve_secrets_keyvault=webvault-westeurope-prod" >> $GITHUB_OUTPUT echo "environment_artifact=web-*-cloud-euprd.zip" >> $GITHUB_OUTPUT echo "environment_name=Web Vault - EU Production Cloud" >> $GITHUB_OUTPUT echo "environment_url=http://vault.bitwarden.eu" >> $GITHUB_OUTPUT echo "slack_channel_name=alerts-deploy-prd" >> $GITHUB_OUTPUT ;; "USDEV") - echo "azure_login_creds=AZURE_KV_US_DEV_SERVICE_PRINCIPAL" >> $GITHUB_OUTPUT - echo "retrive_secrets_keyvault=webvault-eastus-dev" >> $GITHUB_OUTPUT + echo "azure_login_client_key_name=AZURE_CLIENT_ID_USDEV" >> $GITHUB_OUTPUT + echo "azure_login_subscription_id_key_name=AZURE_SUBSCRIPTION_ID_USDEV" >> $GITHUB_OUTPUT + echo "retrieve_secrets_keyvault=webvault-eastus-dev" >> $GITHUB_OUTPUT echo "environment_artifact=web-*-cloud-usdev.zip" >> $GITHUB_OUTPUT echo "environment_name=Web Vault - US Development Cloud" >> $GITHUB_OUTPUT echo "environment_url=http://vault.$ENV_NAME_LOWER.bitwarden.pw" >> $GITHUB_OUTPUT @@ -180,6 +186,9 @@ jobs: name: Check if Web artifact is present runs-on: ubuntu-22.04 needs: setup + permissions: + contents: read + id-token: write env: _ENVIRONMENT_ARTIFACT: ${{ needs.setup.outputs.environment_artifact }} outputs: @@ -209,11 +218,13 @@ jobs: branch: ${{ inputs.branch-or-tag }} artifacts: ${{ env._ENVIRONMENT_ARTIFACT }} - - name: Login to Azure + - name: Log in to Azure if: ${{ steps.download-latest-artifacts.outcome == 'failure' }} - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets for Build trigger if: ${{ steps.download-latest-artifacts.outcome == 'failure' }} @@ -223,6 +234,10 @@ jobs: keyvault: "bitwarden-ci" secrets: "github-pat-bitwarden-devops-bot-repo-scope" + - name: Log out from Azure + if: ${{ steps.download-latest-artifacts.outcome == 'failure' }} + uses: bitwarden/gh-actions/azure-logout@main + - name: 'Trigger build web for missing branch/tag ${{ inputs.branch-or-tag }}' if: ${{ steps.download-latest-artifacts.outcome == 'failure' }} uses: convictional/trigger-workflow-and-wait@f69fa9eedd3c62a599220f4d5745230e237904be # v1.6.5 @@ -262,6 +277,8 @@ jobs: - artifact-check runs-on: ubuntu-22.04 if: ${{ always() && ( contains( inputs.environment , 'QA' ) || contains( inputs.environment , 'DEV' ) ) }} + permissions: + id-token: write outputs: channel_id: ${{ steps.slack-message.outputs.channel_id }} ts: ${{ steps.slack-message.outputs.ts }} @@ -277,7 +294,9 @@ jobs: event: 'start' commit-sha: ${{ needs.artifact-check.outputs.artifact_build_commit }} url: https://github.com/bitwarden/clients/actions/runs/${{ github.run_id }} - AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} update-summary: name: Display commit @@ -302,6 +321,9 @@ jobs: _ENVIRONMENT_URL: ${{ needs.setup.outputs.environment_url }} _ENVIRONMENT_NAME: ${{ needs.setup.outputs.environment_name }} _ENVIRONMENT_ARTIFACT: ${{ needs.setup.outputs.environment_artifact }} + permissions: + id-token: write + deployments: write steps: - name: Create GitHub deployment uses: chrnorm/deployment-action@55729fcebec3d284f60f5bcabbd8376437d696b1 # v2.0.7 @@ -309,23 +331,25 @@ jobs: with: token: '${{ secrets.GITHUB_TOKEN }}' initial-status: 'in_progress' - environment_url: ${{ env._ENVIRONMENT_URL }} + environment-url: ${{ env._ENVIRONMENT_URL }} environment: ${{ env._ENVIRONMENT_NAME }} task: 'deploy' description: 'Deployment from branch/tag: ${{ inputs.branch-or-tag }}' ref: ${{ needs.artifact-check.outputs.artifact_build_commit }} - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets[needs.setup.outputs.azure_login_creds] }} + subscription_id: ${{ secrets[needs.setup.outputs.azure_login_subscription_id_key_name] }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets[needs.setup.outputs.azure_login_client_key_name] }} - name: Retrieve Storage Account connection string for az sync if: ${{ needs.setup.outputs.sync_utility == 'az-sync' }} id: retrieve-secrets-az-sync uses: bitwarden/gh-actions/get-keyvault-secrets@main with: - keyvault: ${{ needs.setup.outputs.retrive_secrets_keyvault }} + keyvault: ${{ needs.setup.outputs.retrieve_secrets_keyvault }} secrets: "sa-bitwarden-web-vault-dev-key-temp" - name: Retrieve Storage Account name and SPN credentials for azcopy @@ -333,9 +357,12 @@ jobs: id: retrieve-secrets-azcopy uses: bitwarden/gh-actions/get-keyvault-secrets@main with: - keyvault: ${{ needs.setup.outputs.retrive_secrets_keyvault }} + keyvault: ${{ needs.setup.outputs.retrieve_secrets_keyvault }} secrets: "sa-bitwarden-web-vault-name,sp-bitwarden-web-vault-password,sp-bitwarden-web-vault-appid,sp-bitwarden-web-vault-tenant" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: 'Download latest cloud asset using GitHub Run ID: ${{ inputs.build-web-run-id }}' if: ${{ inputs.build-web-run-id }} uses: bitwarden/gh-actions/download-artifacts@main @@ -397,7 +424,7 @@ jobs: uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' - environment_url: ${{ env._ENVIRONMENT_URL }} + environment-url: ${{ env._ENVIRONMENT_URL }} state: 'success' deployment-id: ${{ steps.deployment.outputs.deployment_id }} @@ -406,7 +433,7 @@ jobs: uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' - environment_url: ${{ env._ENVIRONMENT_URL }} + environment-url: ${{ env._ENVIRONMENT_URL }} state: 'failure' deployment-id: ${{ steps.deployment.outputs.deployment_id }} @@ -419,6 +446,8 @@ jobs: - notify-start - azure-deploy - artifact-check + permissions: + id-token: write steps: - name: Notify Slack with result uses: bitwarden/gh-actions/report-deployment-status-to-slack@main @@ -431,4 +460,6 @@ jobs: url: https://github.com/bitwarden/clients/actions/runs/${{ github.run_id }} commit-sha: ${{ needs.artifact-check.outputs.artifact_build_commit }} update-ts: ${{ needs.notify-start.outputs.ts }} - AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} diff --git a/.github/workflows/lint-crowdin-config.yml b/.github/workflows/lint-crowdin-config.yml index adb5950e3a0..38a3ef59ea7 100644 --- a/.github/workflows/lint-crowdin-config.yml +++ b/.github/workflows/lint-crowdin-config.yml @@ -5,12 +5,14 @@ on: types: [opened, synchronize] paths: - '**/crowdin.yml' -permissions: {} jobs: lint-crowdin-config: name: Lint Crowdin Config ${{ matrix.app.name }} runs-on: ubuntu-24.04 + permissions: + contents: read + id-token: write strategy: matrix: app: [ @@ -22,17 +24,25 @@ jobs: - name: Check out repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: - fetch-depth: 1 - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + fetch-depth: 1 + + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} + - name: Retrieve secrets id: retrieve-secrets uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "crowdin-api-token" + + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Lint ${{ matrix.app.name }} config uses: crowdin/github-action@f214c8723025f41fc55b2ad26e67b60b80b1885d # v2.7.1 env: @@ -42,4 +52,4 @@ jobs: with: dryrun_action: true command: 'config lint' - command_args: '--verbose -c ${{ matrix.app.config_path }}' \ No newline at end of file + command_args: '--verbose -c ${{ matrix.app.config_path }}' diff --git a/.github/workflows/publish-cli.yml b/.github/workflows/publish-cli.yml index d758e6f11c9..efb0f541d70 100644 --- a/.github/workflows/publish-cli.yml +++ b/.github/workflows/publish-cli.yml @@ -48,6 +48,10 @@ jobs: defaults: run: working-directory: . + permissions: + contents: read + deployments: write + steps: - name: Branch check if: ${{ inputs.publish_type != 'Dry Run' }} @@ -86,6 +90,10 @@ jobs: name: Deploy Snap runs-on: ubuntu-22.04 needs: setup + permissions: + contents: read + packages: read + id-token: write if: inputs.snap_publish env: _PKG_VERSION: ${{ needs.setup.outputs.release_version }} @@ -93,10 +101,12 @@ jobs: - name: Checkout repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -105,6 +115,9 @@ jobs: keyvault: "bitwarden-ci" secrets: "snapcraft-store-token" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Install Snap uses: samuelmeuli/action-snapcraft@d33c176a9b784876d966f80fb1b461808edc0641 # v2.1.1 @@ -123,6 +136,10 @@ jobs: name: Deploy Choco runs-on: windows-2022 needs: setup + permissions: + contents: read + packages: read + id-token: write if: inputs.choco_publish env: _PKG_VERSION: ${{ needs.setup.outputs.release_version }} @@ -130,10 +147,12 @@ jobs: - name: Checkout repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -142,6 +161,9 @@ jobs: keyvault: "bitwarden-ci" secrets: "cli-choco-api-key" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Setup Chocolatey run: choco apikey --key $env:CHOCO_API_KEY --source https://push.chocolatey.org/ env: @@ -163,6 +185,10 @@ jobs: name: Publish NPM runs-on: ubuntu-22.04 needs: setup + permissions: + contents: read + packages: read + id-token: write if: inputs.npm_publish env: _PKG_VERSION: ${{ needs.setup.outputs.release_version }} @@ -170,10 +196,12 @@ jobs: - name: Checkout repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -182,6 +210,9 @@ jobs: keyvault: "bitwarden-ci" secrets: "npm-api-key" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Download and set up artifact run: | mkdir -p build @@ -210,6 +241,10 @@ jobs: - npm - snap - choco + permissions: + contents: read + deployments: write + if: ${{ always() && inputs.publish_type != 'Dry Run' }} steps: - name: Check if any job failed diff --git a/.github/workflows/publish-desktop.yml b/.github/workflows/publish-desktop.yml index ae631165db9..aafc4d25ed4 100644 --- a/.github/workflows/publish-desktop.yml +++ b/.github/workflows/publish-desktop.yml @@ -42,6 +42,9 @@ jobs: release_channel: ${{ steps.release_channel.outputs.channel }} tag_name: ${{ steps.version.outputs.tag_name }} deployment_id: ${{ steps.deployment.outputs.deployment_id }} + permissions: + contents: read + deployments: write steps: - name: Branch check if: ${{ inputs.publish_type != 'Dry Run' }} @@ -106,14 +109,21 @@ jobs: name: Electron blob publish runs-on: ubuntu-22.04 needs: setup + permissions: + contents: read + packages: read + id-token: write + deployments: write env: _PKG_VERSION: ${{ needs.setup.outputs.release_version }} _RELEASE_TAG: ${{ needs.setup.outputs.tag_name }} steps: - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -124,6 +134,9 @@ jobs: aws-electron-access-key, aws-electron-bucket-name" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Create artifacts directory run: mkdir -p apps/desktop/artifacts @@ -176,6 +189,9 @@ jobs: name: Deploy Snap runs-on: ubuntu-22.04 needs: setup + permissions: + contents: read + id-token: write if: inputs.snap_publish env: _PKG_VERSION: ${{ needs.setup.outputs.release_version }} @@ -184,10 +200,12 @@ jobs: - name: Checkout Repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -196,6 +214,9 @@ jobs: keyvault: "bitwarden-ci" secrets: "snapcraft-store-token" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Install Snap uses: samuelmeuli/action-snapcraft@d33c176a9b784876d966f80fb1b461808edc0641 # v2.1.1 @@ -220,6 +241,9 @@ jobs: name: Deploy Choco runs-on: windows-2022 needs: setup + permissions: + contents: read + id-token: write if: inputs.choco_publish env: _PKG_VERSION: ${{ needs.setup.outputs.release_version }} @@ -233,10 +257,12 @@ jobs: dotnet --version dotnet nuget --version - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -245,6 +271,9 @@ jobs: keyvault: "bitwarden-ci" secrets: "cli-choco-api-key" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Setup Chocolatey run: choco apikey --key $env:CHOCO_API_KEY --source https://push.chocolatey.org/ env: @@ -271,6 +300,9 @@ jobs: - electron-blob - snap - choco + permissions: + contents: read + deployments: write if: ${{ always() && inputs.publish_type != 'Dry Run' }} steps: - name: Check if any job failed diff --git a/.github/workflows/publish-web.yml b/.github/workflows/publish-web.yml index 69b29086d36..a6f0f1be066 100644 --- a/.github/workflows/publish-web.yml +++ b/.github/workflows/publish-web.yml @@ -24,6 +24,8 @@ jobs: outputs: release_version: ${{ steps.version.outputs.version }} tag_version: ${{ steps.version.outputs.tag }} + permissions: + contents: read steps: - name: Checkout repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -52,6 +54,10 @@ jobs: name: Release self-host docker runs-on: ubuntu-22.04 needs: setup + permissions: + id-token: write + contents: read + deployments: write env: _BRANCH_NAME: ${{ github.ref_name }} _RELEASE_VERSION: ${{ needs.setup.outputs.release_version }} @@ -69,10 +75,12 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 ########## ACR ########## - - name: Login to Azure - PROD Subscription - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Login to Azure ACR run: az acr login -n bitwardenprod @@ -121,6 +129,9 @@ jobs: docker push $_AZ_REGISTRY/web-sh:latest fi + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Update deployment status to Success if: ${{ inputs.publish_type != 'Dry Run' && success() }} uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 @@ -147,11 +158,15 @@ jobs: runs-on: ubuntu-22.04 needs: - setup + permissions: + id-token: write steps: - - name: Log in to Azure - CI subscription - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve GitHub PAT secrets id: retrieve-secret-pat @@ -160,6 +175,9 @@ jobs: keyvault: "bitwarden-ci" secrets: "github-pat-bitwarden-devops-bot-repo-scope" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Trigger self-host build uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: diff --git a/.github/workflows/release-desktop-beta.yml b/.github/workflows/release-desktop-beta.yml index a5e374395d8..e3eb9090cb7 100644 --- a/.github/workflows/release-desktop-beta.yml +++ b/.github/workflows/release-desktop-beta.yml @@ -15,6 +15,8 @@ jobs: setup: name: Setup runs-on: ubuntu-22.04 + permissions: + contents: write outputs: release_version: ${{ steps.version.outputs.version }} release_channel: ${{ steps.release_channel.outputs.channel }} @@ -115,6 +117,8 @@ jobs: name: Linux Build runs-on: ubuntu-22.04 needs: setup + permissions: + contents: read env: _PACKAGE_VERSION: ${{ needs.setup.outputs.release_version }} _NODE_VERSION: ${{ needs.setup.outputs.node_version }} @@ -204,6 +208,9 @@ jobs: name: Windows Build runs-on: windows-2022 needs: setup + permissions: + contents: read + id-token: write defaults: run: shell: pwsh @@ -237,10 +244,12 @@ jobs: npm --version choco --version - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -253,6 +262,9 @@ jobs: code-signing-client-secret, code-signing-cert-name" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Install Node dependencies run: npm ci working-directory: ./ @@ -394,6 +406,9 @@ jobs: name: MacOS Build runs-on: macos-13 needs: setup + permissions: + contents: read + id-token: write env: _PACKAGE_VERSION: ${{ needs.setup.outputs.release_version }} _NODE_VERSION: ${{ needs.setup.outputs.node_version }} @@ -438,6 +453,20 @@ jobs: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main + with: + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} + + - name: Get Azure Key Vault secrets + id: get-kv-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: gh-clients + secrets: "KEYCHAIN-PASSWORD" + - name: Download Provisioning Profiles secrets env: ACCOUNT_NAME: bitwardenci @@ -472,9 +501,12 @@ jobs: az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Set up keychain env: - KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + KEYCHAIN_PASSWORD: ${{ steps.get-kv-secrets.outputs.KEYCHAIN-PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain @@ -528,6 +560,10 @@ jobs: needs: - setup - macos-build + permissions: + contents: read + packages: read + id-token: write env: _PACKAGE_VERSION: ${{ needs.setup.outputs.release_version }} _NODE_VERSION: ${{ needs.setup.outputs.node_version }} @@ -572,10 +608,19 @@ jobs: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} + + - name: Get Azure Key Vault secrets + id: get-kv-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: gh-clients + secrets: "KEYCHAIN-PASSWORD,APPLE-ID-USERNAME,APPLE-ID-PASSWORD" - name: Download Provisioning Profiles secrets env: @@ -611,9 +656,12 @@ jobs: az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Set up keychain env: - KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + KEYCHAIN_PASSWORD: ${{ steps.get-kv-secrets.outputs.KEYCHAIN-PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain @@ -702,8 +750,8 @@ jobs: - name: Build application (dist) env: - APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }} - APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + APPLE_ID_USERNAME: ${{ steps.get-kv-secrets.outputs.APPLE-ID-USERNAME }} + APPLE_ID_PASSWORD: ${{ steps.get-kv-secrets.outputs.APPLE-ID-PASSWORD }} run: npm run pack:mac - name: Upload .zip artifact @@ -741,6 +789,10 @@ jobs: needs: - setup - macos-build + permissions: + contents: read + packages: read + id-token: write env: _PACKAGE_VERSION: ${{ needs.setup.outputs.release_version }} _NODE_VERSION: ${{ needs.setup.outputs.node_version }} @@ -785,6 +837,20 @@ jobs: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main + with: + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} + + - name: Get Azure Key Vault secrets + id: get-kv-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: gh-clients + secrets: "KEYCHAIN-PASSWORD,APPLE-ID-USERNAME,APPLE-ID-PASSWORD" + - name: Download Provisioning Profiles secrets env: ACCOUNT_NAME: bitwardenci @@ -819,9 +885,12 @@ jobs: az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Set up keychain env: - KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + KEYCHAIN_PASSWORD: ${{ steps.get-kv-secrets.outputs.KEYCHAIN-PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain @@ -911,8 +980,8 @@ jobs: - 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 }} + APPLE_ID_USERNAME: ${{ steps.get-kv-secrets.outputs.APPLE-ID-USERNAME }} + APPLE_ID_PASSWORD: ${{ steps.get-kv-secrets.outputs.APPLE-ID-PASSWORD }} - name: Upload .pkg artifact uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 @@ -931,6 +1000,10 @@ jobs: - macos-build - macos-package-github - macos-package-mas + permissions: + contents: read + id-token: write + deployments: write steps: - name: Create GitHub deployment uses: chrnorm/deployment-action@55729fcebec3d284f60f5bcabbd8376437d696b1 # v2.0.7 @@ -942,10 +1015,12 @@ jobs: description: 'Deployment ${{ needs.setup.outputs.release_version }} to channel ${{ needs.setup.outputs.release_channel }} from branch ${{ needs.setup.outputs.branch_name }}' task: release - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -956,6 +1031,9 @@ jobs: aws-electron-access-key, aws-electron-bucket-name" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Download all artifacts uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: @@ -1008,6 +1086,8 @@ jobs: - macos-package-github - macos-package-mas - release + permissions: + contents: write steps: - name: Checkout repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 diff --git a/.github/workflows/repository-management.yml b/.github/workflows/repository-management.yml index d91e0a12afd..ecb8e448a8a 100644 --- a/.github/workflows/repository-management.yml +++ b/.github/workflows/repository-management.yml @@ -36,7 +36,9 @@ on: description: "New version override (leave blank for automatic calculation, example: '2024.1.0')" required: false type: string + permissions: {} + jobs: setup: name: Setup @@ -56,6 +58,7 @@ jobs: fi echo "branch=$BRANCH" >> $GITHUB_OUTPUT + bump_version: name: Bump Version if: ${{ always() }} @@ -66,6 +69,9 @@ jobs: version_cli: ${{ steps.set-final-version-output.outputs.version_cli }} version_desktop: ${{ steps.set-final-version-output.outputs.version_desktop }} version_web: ${{ steps.set-final-version-output.outputs.version_web }} + permissions: + id-token: write + steps: - name: Validate version input format if: ${{ inputs.version_number_override != '' }} @@ -73,12 +79,29 @@ jobs: with: version: ${{ inputs.version_number_override }} + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main + with: + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} + + - name: Get Azure Key Vault secrets + id: get-kv-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: gh-org-bitwarden + secrets: "BW-GHAPP-ID,BW-GHAPP-KEY" + + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Generate GH App token uses: actions/create-github-app-token@30bf6253fa41bdc8d1501d202ad15287582246b4 # v2.0.3 id: app-token with: - app-id: ${{ secrets.BW_GHAPP_ID }} - private-key: ${{ secrets.BW_GHAPP_KEY }} + app-id: ${{ steps.get-kv-secrets.outputs.BW-GHAPP-ID }} + private-key: ${{ steps.get-kv-secrets.outputs.BW-GHAPP-KEY }} - name: Check out branch uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -400,6 +423,7 @@ jobs: - name: Push changes if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} run: git push + cut_branch: name: Cut branch if: ${{ needs.setup.outputs.branch == 'rc' }} @@ -407,13 +431,33 @@ jobs: - setup - bump_version runs-on: ubuntu-24.04 + permissions: + id-token: write + steps: + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main + with: + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} + + - name: Get Azure Key Vault secrets + id: get-kv-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: gh-org-bitwarden + secrets: "BW-GHAPP-ID,BW-GHAPP-KEY" + + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Generate GH App token uses: actions/create-github-app-token@30bf6253fa41bdc8d1501d202ad15287582246b4 # v2.0.3 id: app-token with: - app-id: ${{ secrets.BW_GHAPP_ID }} - private-key: ${{ secrets.BW_GHAPP_KEY }} + app-id: ${{ steps.get-kv-secrets.outputs.BW-GHAPP-ID }} + private-key: ${{ steps.get-kv-secrets.outputs.BW-GHAPP-KEY }} - name: Check out target ref uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -435,4 +479,4 @@ jobs: BRANCH_NAME: ${{ needs.setup.outputs.branch }} run: | git switch --quiet --create $BRANCH_NAME - git push --quiet --set-upstream origin $BRANCH_NAME \ No newline at end of file + git push --quiet --set-upstream origin $BRANCH_NAME diff --git a/.github/workflows/retrieve-current-desktop-rollout.yml b/.github/workflows/retrieve-current-desktop-rollout.yml index 2ab3072f566..c45453ed9d0 100644 --- a/.github/workflows/retrieve-current-desktop-rollout.yml +++ b/.github/workflows/retrieve-current-desktop-rollout.yml @@ -11,11 +11,15 @@ jobs: rollout: name: Retrieve Rollout Percentage runs-on: ubuntu-22.04 + permissions: + id-token: write steps: - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -26,6 +30,9 @@ jobs: aws-electron-access-key, aws-electron-bucket-name" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Download channel update info files from S3 env: AWS_ACCESS_KEY_ID: ${{ steps.retrieve-secrets.outputs.aws-electron-access-id }} diff --git a/.github/workflows/scan.yml b/.github/workflows/scan.yml index 59ef1e0734e..c96dae51c0e 100644 --- a/.github/workflows/scan.yml +++ b/.github/workflows/scan.yml @@ -10,79 +10,44 @@ on: pull_request: types: [opened, synchronize, reopened] branches-ignore: - - main + - "main" pull_request_target: types: [opened, synchronize, reopened] branches: - "main" +permissions: {} + jobs: check-run: name: Check PR run uses: bitwarden/gh-actions/.github/workflows/check-run.yml@main + permissions: + contents: read sast: - name: SAST scan - runs-on: ubuntu-22.04 + name: Checkmarx + uses: bitwarden/gh-actions/.github/workflows/_checkmarx.yml@main needs: check-run + secrets: + AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} permissions: contents: read pull-requests: write security-events: write - - steps: - - name: Check out repo - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - ref: ${{ github.event.pull_request.head.sha }} - - - name: Scan with Checkmarx - uses: checkmarx/ast-github-action@184bf2f64f55d1c93fd6636d539edf274703e434 # 2.0.41 - env: - INCREMENTAL: "${{ contains(github.event_name, 'pull_request') && '--sast-incremental' || '' }}" - with: - project_name: ${{ github.repository }} - cx_tenant: ${{ secrets.CHECKMARX_TENANT }} - base_uri: https://ast.checkmarx.net/ - cx_client_id: ${{ secrets.CHECKMARX_CLIENT_ID }} - cx_client_secret: ${{ secrets.CHECKMARX_SECRET }} - additional_params: | - --report-format sarif \ - --filter "state=TO_VERIFY;PROPOSED_NOT_EXPLOITABLE;CONFIRMED;URGENT" \ - --output-path . ${{ env.INCREMENTAL }} - - - name: Upload Checkmarx results to GitHub - uses: github/codeql-action/upload-sarif@d68b2d4edb4189fd2a5366ac14e72027bd4b37dd # v3.28.2 - with: - sarif_file: cx_result.sarif - sha: ${{ contains(github.event_name, 'pull_request') && github.event.pull_request.head.sha || github.sha }} - ref: ${{ contains(github.event_name, 'pull_request') && format('refs/pull/{0}/head', github.event.pull_request.number) || github.ref }} + id-token: write quality: - name: Quality scan - runs-on: ubuntu-22.04 + name: Sonar + uses: bitwarden/gh-actions/.github/workflows/_sonar.yml@main needs: check-run + secrets: + AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} permissions: contents: read pull-requests: write - - steps: - - name: Check out repo - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - fetch-depth: 0 - ref: ${{ github.event.pull_request.head.sha }} - - - name: Scan with SonarCloud - uses: sonarsource/sonarqube-scan-action@2500896589ef8f7247069a56136f8dc177c27ccf # v5.2.0 - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - with: - args: > - -Dsonar.organization=${{ github.repository_owner }} - -Dsonar.projectKey=${{ github.repository_owner }}_${{ github.event.repository.name }} - -Dsonar.tests=. - -Dsonar.sources=. - -Dsonar.test.inclusions=**/*.spec.ts - -Dsonar.exclusions=**/*.spec.ts - -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} + id-token: write \ No newline at end of file diff --git a/.github/workflows/staged-rollout-desktop.yml b/.github/workflows/staged-rollout-desktop.yml index 4ec3af3be97..4adf81100bd 100644 --- a/.github/workflows/staged-rollout-desktop.yml +++ b/.github/workflows/staged-rollout-desktop.yml @@ -18,11 +18,15 @@ jobs: rollout: name: Update Rollout Percentage runs-on: ubuntu-22.04 + permissions: + id-token: write steps: - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Retrieve secrets id: retrieve-secrets @@ -33,6 +37,9 @@ jobs: aws-electron-access-key, aws-electron-bucket-name" + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Download channel update info files from S3 env: AWS_ACCESS_KEY_ID: ${{ steps.retrieve-secrets.outputs.aws-electron-access-id }} diff --git a/.github/workflows/version-auto-bump.yml b/.github/workflows/version-auto-bump.yml index e8bd1dde246..3cb5646886a 100644 --- a/.github/workflows/version-auto-bump.yml +++ b/.github/workflows/version-auto-bump.yml @@ -9,13 +9,33 @@ jobs: bump-version: name: Bump Desktop Version runs-on: ubuntu-24.04 + permissions: + id-token: write + contents: write steps: + - name: Log in to Azure + uses: bitwarden/gh-actions/azure-login@main + with: + subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + tenant_id: ${{ secrets.AZURE_TENANT_ID }} + client_id: ${{ secrets.AZURE_CLIENT_ID }} + + - name: Get Azure Key Vault secrets + id: get-kv-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: gh-org-bitwarden + secrets: "BW-GHAPP-ID,BW-GHAPP-KEY" + + - name: Log out from Azure + uses: bitwarden/gh-actions/azure-logout@main + - name: Generate GH App token uses: actions/create-github-app-token@30bf6253fa41bdc8d1501d202ad15287582246b4 # v2.0.3 id: app-token with: - app-id: ${{ secrets.BW_GHAPP_ID }} - private-key: ${{ secrets.BW_GHAPP_KEY }} + app-id: ${{ steps.get-kv-secrets.outputs.BW-GHAPP-ID }} + private-key: ${{ steps.get-kv-secrets.outputs.BW-GHAPP-KEY }} - name: Check out target ref uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 diff --git a/apps/browser/package.json b/apps/browser/package.json index 9b6d0174b0f..70dd0d7a241 100644 --- a/apps/browser/package.json +++ b/apps/browser/package.json @@ -1,6 +1,6 @@ { "name": "@bitwarden/browser", - "version": "2025.6.0", + "version": "2025.7.0", "scripts": { "build": "npm run build:chrome", "build:chrome": "cross-env BROWSER=chrome MANIFEST_VERSION=3 NODE_OPTIONS=\"--max-old-space-size=8192\" webpack", diff --git a/apps/browser/src/_locales/ar/messages.json b/apps/browser/src/_locales/ar/messages.json index 6c7f7f0fccd..65ee9cab458 100644 --- a/apps/browser/src/_locales/ar/messages.json +++ b/apps/browser/src/_locales/ar/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "البحث في الخزانة" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "تعديل" }, @@ -1173,6 +1176,12 @@ "message": "أوه لا! لم نتمكن من حفظ هذا. حاول إدخال التفاصيل يدويا.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "اسأل عن تحديث تسجيل الدخول الحالي" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "رمز الأمان" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "مثال." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "يجب عليك تأكيد بريدك الإلكتروني لاستخدام هذه الميزة. يمكنك تأكيد بريدك الإلكتروني في خزانة الويب." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "تحديث كلمة المرور الرئيسية" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "كلمة المرور الرئيسية مكشوفة" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "موافقة الجهاز مطلوبة. حدّد خيار الموافقة أدناه:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "طلب موافقة المدير" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/az/messages.json b/apps/browser/src/_locales/az/messages.json index e189b3ba292..16b74ffe175 100644 --- a/apps/browser/src/_locales/az/messages.json +++ b/apps/browser/src/_locales/az/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Seyfdə axtar" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Düzəliş et" }, @@ -1173,6 +1176,12 @@ "message": "Bunu saxlaya bilmədik. Məlumatları manual daxil etməyə çalışın.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Parolunuzu dəyişdirdikdən sonra yeni parolunuzla giriş etməli olacaqsınız. Digər cihazlardakı aktiv seanslar bir saat ərzində çıxış sonlandırılacaq." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Hesabın geri qaytarılması prosesini tamamlamaq üçün ana parolunuzu dəyişdirin." + }, "enableChangedPasswordNotification": { "message": "Mövcud girişin güncəllənməsini soruş" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Güvənlik kodu" }, + "cardNumber": { + "message": "kart nömrəsi" + }, "ex": { "message": "məs." }, @@ -2488,10 +2500,10 @@ "message": "Bir təşkilat siyasəti, elementlərin fərdi seyfinizə köçürülməsini əngəllədi." }, "restrictCardTypeImport": { - "message": "Cannot import card item types" + "message": "Kart element növləri daxilə köçürülə bilmir" }, "restrictCardTypeImportDesc": { - "message": "A policy set by 1 or more organizations prevents you from importing cards to your vaults." + "message": "1 və ya daha çox təşkilat tərəfindən təyin edilən bir siyasət, kartların seyfinizə köçürülməsini əngəlləyir." }, "domainsTitle": { "message": "Domenlər", @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Bu özəlliyi istifadə etmək üçün e-poçtunuzu doğrulamalısınız. E-poçtunuzu veb seyfdə doğrulaya bilərsiniz." }, + "masterPasswordSuccessfullySet": { + "message": "Ana parol uğurla təyin edildi" + }, "updatedMasterPassword": { "message": "Güncəllənmiş ana parol" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Tələb göndərildi" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "$DEVICE$ cihazında $EMAIL$ üçün giriş tələbi təsdiqləndi", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Başqa bir cihazdan giriş cəhdinə rədd cavabı verdiniz. Bu siz idinizsə, cihazla yenidən giriş etməyə çalışın." + }, + "device": { + "message": "Cihaz" + }, + "loginStatus": { + "message": "Giriş statusu" + }, + "masterPasswordChanged": { + "message": "Ana parol saxlanıldı" + }, "exposedMasterPassword": { "message": "İfşa olunmuş ana parol" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Gələcək girişləri problemsiz etmək üçün bu cihazı xatırla" }, + "manageDevices": { + "message": "Cihazları idarə et" + }, + "currentSession": { + "message": "Hazırkı seans" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Uzantı", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Masaüstü", + "description": "Desktop app" + }, + "webVault": { + "message": "Veb seyf" + }, + "webApp": { + "message": "Veb tətbiq" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Tələb gözlənir" + }, + "firstLogin": { + "message": "İlk giriş" + }, + "trusted": { + "message": "Güvənli" + }, + "needsApproval": { + "message": "Təsdiq lazımdır" + }, + "devices": { + "message": "Cihazlar" + }, + "accessAttemptBy": { + "message": "$EMAIL$ ilə müraciət cəhdi", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Müraciəti təsdiqlə" + }, + "denyAccess": { + "message": "Müraciətə rədd cavabı ver" + }, + "time": { + "message": "Vaxt" + }, + "deviceType": { + "message": "Cihaz növü" + }, + "loginRequest": { + "message": "Giriş tələbi" + }, + "thisRequestIsNoLongerValid": { + "message": "Bu tələb artıq yararsızdır." + }, + "areYouTryingToAccessYourAccount": { + "message": "Hesabınıza müraciət etməyə çalışırsınız?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "$DEVICE$ cihazında $EMAIL$ üçün giriş təsdiqləndi", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Başqa bir cihazdan giriş cəhdinə rədd cavabı verdiniz. Bu həqiqətən siz idinizsə, cihazla yenidən giriş etməyə çalışın." + }, + "loginRequestHasAlreadyExpired": { + "message": "Giriş tələbinin müddəti artıq bitib." + }, + "justNow": { + "message": "İndicə" + }, + "requestedXMinutesAgo": { + "message": "$MINUTES$ dəqiqə əvvəl tələb göndərildi", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Cihaz təsdiqi tələb olunur. Aşağıdan bir təsdiq variantı seçin:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Admin təsdiqini tələb et" }, + "unableToCompleteLogin": { + "message": "Giriş prosesi tamamlana bilmir" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Güvəndiyiniz bir cihazda giriş etməli və ya inzibatçınızdan sizə bir parol təyin etməsini xahiş etməlisiniz." + }, "ssoIdentifierRequired": { "message": "Təşkilat SSO identifikatoru tələb olunur." }, @@ -4244,6 +4397,26 @@ "message": "Ortaq formatlar", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI uyuşma aşkarlaması, Bitwarden-in avto-doldurma təkliflərini necə müəyyən etdiyini göstərir.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Müntəzəm ifadə\", kimlik məlumatlarının ifşa olunma riskini artıran qabaqcıl bir seçimdir.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"İlə başlayır\", kimlik məlumatlarının ifşa olunma riskini artıran qabaqcıl bir seçimdir.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Uyuşma aşkarlaması barədə daha çox", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Qabaqcıl seçimlər", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Brauzer ayarları ilə davam edilsin?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Kopyala: $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Kopyala: $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, @@ -5072,7 +5245,7 @@ "message": "PIN ilə kilid açma təyini" }, "unlockWithBiometricSet": { - "message": "Unlock with biometrics set" + "message": "Kilidi biometriklə aç ayarı" }, "authenticating": { "message": "Kimlik doğrulama" diff --git a/apps/browser/src/_locales/be/messages.json b/apps/browser/src/_locales/be/messages.json index 3944569df94..d7a1db3adc8 100644 --- a/apps/browser/src/_locales/be/messages.json +++ b/apps/browser/src/_locales/be/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Пошук у сховішчы" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Рэдагаваць" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Пытацца пра абнаўленні існуючага лагіна" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Код бяспекі" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "напр." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Вы павінны праверыць свой адрас электроннай пошты, каб выкарыстоўваць гэту функцыю. Зрабіць гэта можна ў вэб-сховішчы." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Асноўны пароль абноўлены" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Скампраметаваны асноўны пароль" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Патрабуецца ўхваленне прылады. Выберыце параметры ўхвалення ніжэй:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Запытаць ухваленне адміністратара" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/bg/messages.json b/apps/browser/src/_locales/bg/messages.json index 53e896e6a72..79e13cdb677 100644 --- a/apps/browser/src/_locales/bg/messages.json +++ b/apps/browser/src/_locales/bg/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Търсене в трезора" }, + "resetSearch": { + "message": "Нулиране на търсенето" + }, "edit": { "message": "Редактиране" }, @@ -1173,6 +1176,12 @@ "message": "О, не! Запазването не беше успешно. Опитайте да въведете данните ръчно.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "След като промените паролата си, ще трябва да се впишете отново с новата си парола. Сесиите на други устройства също ще бъдат прекратени в рамките на един час." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Променете главната си парола, за да завършите възстановяването на акаунта." + }, "enableChangedPasswordNotification": { "message": "Питане за обновяване на съществуващ запис" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Код за сигурност" }, + "cardNumber": { + "message": "номер на карта" + }, "ex": { "message": "напр." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Трябва да потвърдите е-пощата си, за да използвате тази функционалност. Можете да го направите в уеб-трезора." }, + "masterPasswordSuccessfullySet": { + "message": "Главната парола е зададена успешно" + }, "updatedMasterPassword": { "message": "Главната парола е променена" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Заявката е изпратена" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Заявката за вписване за $EMAIL$ на $DEVICE$ е одобрена", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Вие отказахте опит за вписване от друго устройство. Ако това сте били Вие, опитайте да се впишете от устройството отново." + }, + "device": { + "message": "Устройство" + }, + "loginStatus": { + "message": "Състояние на вписването" + }, + "masterPasswordChanged": { + "message": "Главната парола е запазена" + }, "exposedMasterPassword": { "message": "Разкрита главна парола" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Запомняне на това устройство, така че в бъдеще вписването да бъде по-лесно" }, + "manageDevices": { + "message": "Управление на устройствата" + }, + "currentSession": { + "message": "Текуща сесия" + }, + "mobile": { + "message": "Мобилно приложение", + "description": "Mobile app" + }, + "extension": { + "message": "Добавка за браузър", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Работен плот", + "description": "Desktop app" + }, + "webVault": { + "message": "Трезор по уеб" + }, + "webApp": { + "message": "Приложение по уеб" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Чакаща заявка" + }, + "firstLogin": { + "message": "Първо вписване" + }, + "trusted": { + "message": "Доверено" + }, + "needsApproval": { + "message": "Изисква одобрение" + }, + "devices": { + "message": "Устройства" + }, + "accessAttemptBy": { + "message": "Опит за достъп от $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Разрешаване на достъпа" + }, + "denyAccess": { + "message": "Отказване на достъпа" + }, + "time": { + "message": "Време" + }, + "deviceType": { + "message": "Вид устройство" + }, + "loginRequest": { + "message": "Заявка за вписване" + }, + "thisRequestIsNoLongerValid": { + "message": "Тази заявка вече не е активна." + }, + "areYouTryingToAccessYourAccount": { + "message": "Опитвате ли се да получите достъп до акаунта си?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Вписването за $EMAIL$ на $DEVICE$ е одобрено", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Вие отказахте опит за вписване от друго устройство. Ако това наистина сте били Вие, опитайте да се впишете от устройството отново." + }, + "loginRequestHasAlreadyExpired": { + "message": "Заявката за вписване вече е изтекла." + }, + "justNow": { + "message": "Току-що" + }, + "requestedXMinutesAgo": { + "message": "Заявено преди $MINUTES$ минути", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Изисква се одобрение на устройството. Изберете начин за одобрение по-долу:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Подаване на заявка за одобрение от администратор" }, + "unableToCompleteLogin": { + "message": "Вписването не може да бъде завършено" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Трябва да се впишете на доверено устройство или да помолите администратора си да Ви зададе парола." + }, "ssoIdentifierRequired": { "message": "Идентификаторът за еднократна идентификация на организация е задължителен." }, @@ -4244,6 +4397,26 @@ "message": "Често използвани формати", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "Разпознаването на съвпадения чрез адреса е начинът, по който Битуорден определя кои елементи да предложи за автоматично попълване.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "„Регулярен израз“ е по-сложен метод, който е и по-рисков, тъй като може да застраши сигурността на данните за вписване.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "„Започва с“ е по-сложен метод, който е и по-рисков, тъй като може да застраши сигурността на данните за вписване.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Повече относно разпознаването на съвпадения", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Разширени настройки", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Продължаване към настройките на браузъра?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Копиране на $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Копиране на $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, @@ -5098,7 +5271,7 @@ "description": "Represents the ~ key in screen reader content as a readable word" }, "backtickCharacterDescriptor": { - "message": "Backtick", + "message": "Обратен апостроф", "description": "Represents the ` key in screen reader content as a readable word" }, "exclamationCharacterDescriptor": { diff --git a/apps/browser/src/_locales/bn/messages.json b/apps/browser/src/_locales/bn/messages.json index 29e0e3800c8..a3c029fb963 100644 --- a/apps/browser/src/_locales/bn/messages.json +++ b/apps/browser/src/_locales/bn/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "ভল্ট খুঁজুন" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "সম্পাদনা" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "নিরাপত্তা কোড" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "উদাহরণ" }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "প্রধান পাসওয়ার্ড আপডেট করা হয়েছে" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/bs/messages.json b/apps/browser/src/_locales/bs/messages.json index 7c575cdb72b..8a94ba3e9e9 100644 --- a/apps/browser/src/_locales/bs/messages.json +++ b/apps/browser/src/_locales/bs/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Search vault" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edit" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/ca/messages.json b/apps/browser/src/_locales/ca/messages.json index ff3226255e3..42fb9c24003 100644 --- a/apps/browser/src/_locales/ca/messages.json +++ b/apps/browser/src/_locales/ca/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Cerca en la caixa forta" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edita" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Demana d'actualitzar els inicis de sessió existents" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Codi de seguretat" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "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." }, + "masterPasswordSuccessfullySet": { + "message": "La contrasenya mestra s'ha configurat correctament" + }, "updatedMasterPassword": { "message": "Contrasenya mestra actualitzada" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Sol·licitud enviada" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Contrasenya mestra exposada" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Cal l'aprovació del dispositiu. Seleccioneu una opció d'aprovació a continuació:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Sol·liciteu l'aprovació de l'administrador" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Es requereix un identificador SSO de l'organització." }, @@ -4244,6 +4397,26 @@ "message": "Formats comuns", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Voleu continuar a la configuració del navegador?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/cs/messages.json b/apps/browser/src/_locales/cs/messages.json index 52c548a93b0..3f8dd2e2b48 100644 --- a/apps/browser/src/_locales/cs/messages.json +++ b/apps/browser/src/_locales/cs/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Vyhledat v trezoru" }, + "resetSearch": { + "message": "Resetovat hledání" + }, "edit": { "message": "Upravit" }, @@ -1173,6 +1176,12 @@ "message": "Ale ne! Nemohli jsme to uložit. Zkuste zadat podrobnosti ručně.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Po změně hesla se budete muset přihlásit pomocí svého nového hesla. Aktivní relace na jiných zařízeních budou odhlášeny do jedné hodiny." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Pro dokončení obnovy účtu změňte hlavní heslo." + }, "enableChangedPasswordNotification": { "message": "Zeptat se na aktualizaci existujícího přihlášení" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Bezpečnostní kód" }, + "cardNumber": { + "message": "číslo karty" + }, "ex": { "message": "např." }, @@ -2919,6 +2931,9 @@ "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." }, + "masterPasswordSuccessfullySet": { + "message": "Hlavní heslo bylo úspěšně nastaveno" + }, "updatedMasterPassword": { "message": "Hlavní heslo bylo aktualizováno" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Požadavek odeslán" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Požadavek na přihlášení byl schválen pro $EMAIL$ na $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Pokus o přihlášení byl zamítnut z jiného zařízení. Pokud jste to Vy, zkuste se znovu přihlásit do zařízení." + }, + "device": { + "message": "Zařízení" + }, + "loginStatus": { + "message": "Stav přihlášení" + }, + "masterPasswordChanged": { + "message": "Hlavní heslo bylo uloženo" + }, "exposedMasterPassword": { "message": "Odhalené hlavní heslo" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Zapamatovat si toto zařízení pro bezproblémové budoucí přihlášení" }, + "manageDevices": { + "message": "Spravovat zařízení" + }, + "currentSession": { + "message": "Aktuální relace" + }, + "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" + }, + "webApp": { + "message": "Webová aplikace" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Čekající požadavek" + }, + "firstLogin": { + "message": "První přihlášení" + }, + "trusted": { + "message": "Důvěryhodný" + }, + "needsApproval": { + "message": "Vyžaduje schválení" + }, + "devices": { + "message": "Zařízení" + }, + "accessAttemptBy": { + "message": "Pokus o přístup z $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Potvrdit přístup" + }, + "denyAccess": { + "message": "Zamítnout přístup" + }, + "time": { + "message": "Čas" + }, + "deviceType": { + "message": "Typ zařízení" + }, + "loginRequest": { + "message": "Požadavek na přihlášení" + }, + "thisRequestIsNoLongerValid": { + "message": "Tento požadavek již není platný." + }, + "areYouTryingToAccessYourAccount": { + "message": "Pokoušíte se získat přístup k Vašemu účtu?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Přihlášení bylo potvrzeno z $EMAIL$ pro $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Pokus o přihlášení byl zamítnut z jiného zařízení. Pokud jste to opravdu Vy, zkuste se znovu přihlásit do zařízení." + }, + "loginRequestHasAlreadyExpired": { + "message": "Požadavek na přihlášení již vypršel." + }, + "justNow": { + "message": "Právě teď" + }, + "requestedXMinutesAgo": { + "message": "Požadováno před $MINUTES$ minutami", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Vyžaduje se schválení zařízení. Vyberte možnost schválení níže:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Žádost o schválení správcem" }, + "unableToCompleteLogin": { + "message": "Nelze dokončit přihlášení" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Musíte se přihlásit na důvěryhodném zařízení nebo požádat správce, aby Vám přiřadil heslo." + }, "ssoIdentifierRequired": { "message": "Je vyžadován SSO identifikátor organizace." }, @@ -4244,6 +4397,26 @@ "message": "Společné formáty", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "Detekce shody URI je způsob, jakým Bitwarden identifikuje návrhy automatického vyplňování.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regulární výraz\" je pokročilá volba se zvýšeným rizikem odhalení přihlašovacích údajů.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Začíná na\" je pokročilá volba se zvýšeným rizikem odhalení přihlašovacích údajů.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Další informace o detekci shody", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Rozšířené volby", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Pokračovat do nastavení prohlížeče?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Kopírovat $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Kopírovat $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/cy/messages.json b/apps/browser/src/_locales/cy/messages.json index c060d81bcfc..307373da9aa 100644 --- a/apps/browser/src/_locales/cy/messages.json +++ b/apps/browser/src/_locales/cy/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Chwilio'r gell" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Golygu" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Gofyn i ddiweddaru manylion mewngofnodi sy'n bodoli eisoes" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Cod diogelwch" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "engh." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Diweddarwyd y prif gyfrinair" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Fformatau cyffredin", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json index 1b79fc0ecf9..4b6da81a994 100644 --- a/apps/browser/src/_locales/da/messages.json +++ b/apps/browser/src/_locales/da/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Søg i boks" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Redigér" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Bed om at opdatere eksisterende login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Sikkerhedskode" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "eks." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Du skal bekræfte din e-mail for at bruge denne funktion. Du kan bekræfte din e-mail i web-boksen." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Hovedadgangskode opdateret" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Kompromitteret hovedadgangskode" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Husk denne enhed for at gøre fremtidige indlogninger gnidningsløse" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Enhedsgodkendelse kræves. Vælg en godkendelsesmulighed nedenfor:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Anmod om admin-godkendelse" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organisations SSO-identifikator kræves." }, @@ -4244,6 +4397,26 @@ "message": "Almindelige formater", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Fortsæt til Browserindstillinger?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/de/messages.json b/apps/browser/src/_locales/de/messages.json index 418c15dc3a0..9ef82a6d5ae 100644 --- a/apps/browser/src/_locales/de/messages.json +++ b/apps/browser/src/_locales/de/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Tresor durchsuchen" }, + "resetSearch": { + "message": "Suche zurücksetzen" + }, "edit": { "message": "Bearbeiten" }, @@ -1060,7 +1063,7 @@ "message": "Soll Bitwarden sich dieses Passwort merken?" }, "notificationAddSave": { - "message": "Ja, jetzt speichern" + "message": "Speichern" }, "notificationViewAria": { "message": "$ITEMNAME$ anzeigen, öffnet sich in neuem Fenster", @@ -1173,6 +1176,12 @@ "message": "Oh nein! Das konnten wir nicht speichern. Versuch, die Details manuell einzugeben.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Nachdem du dein Passwort geändert hast, musst du dich mit deinem neuen Passwort anmelden. Aktive Sitzungen auf anderen Geräten werden innerhalb einer Stunde abgemeldet." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Ändere dein Master-Passwort, um die Kontowiederherstellung abzuschließen." + }, "enableChangedPasswordNotification": { "message": "Nach dem Aktualisieren bestehender Zugangsdaten fragen" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Sicherheitscode" }, + "cardNumber": { + "message": "Kartennummer" + }, "ex": { "message": "Bsp." }, @@ -2919,6 +2931,9 @@ "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." }, + "masterPasswordSuccessfullySet": { + "message": "Master-Passwort erfolgreich festgelegt" + }, "updatedMasterPassword": { "message": "Master-Passwort aktualisiert" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Anfrage gesendet" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Anmeldeanfrage für $EMAIL$ auf $DEVICE$ genehmigt", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Du hast einen Anmeldeversuch von einem anderen Gerät abgelehnt. Wenn du das wirklich warst, versuche dich erneut mit dem Gerät anzumelden." + }, + "device": { + "message": "Gerät" + }, + "loginStatus": { + "message": "Anmeldestatus" + }, + "masterPasswordChanged": { + "message": "Master-Passwort gespeichert" + }, "exposedMasterPassword": { "message": "Kompromittiertes Master-Passwort" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Dieses Gerät merken, um zukünftige Anmeldungen reibungslos zu gestalten" }, + "manageDevices": { + "message": "Geräte verwalten" + }, + "currentSession": { + "message": "Aktuelle Sitzung" + }, + "mobile": { + "message": "Mobile App", + "description": "Mobile app" + }, + "extension": { + "message": "Erweiterung", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web-Tresor" + }, + "webApp": { + "message": "Web-App" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Anfrage ausstehend" + }, + "firstLogin": { + "message": "Erste Anmeldung" + }, + "trusted": { + "message": "Vertrauenswürdig" + }, + "needsApproval": { + "message": "Benötigt Genehmigung" + }, + "devices": { + "message": "Geräte" + }, + "accessAttemptBy": { + "message": "Zugriffsversuch von $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Zugriff bestätigen" + }, + "denyAccess": { + "message": "Zugriff ablehnen" + }, + "time": { + "message": "Zeit" + }, + "deviceType": { + "message": "Gerätetyp" + }, + "loginRequest": { + "message": "Anmeldungsanfrage" + }, + "thisRequestIsNoLongerValid": { + "message": "Diese Anfrage ist nicht mehr gültig." + }, + "areYouTryingToAccessYourAccount": { + "message": "Versuchst du auf dein Konto zuzugreifen?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Anmeldung von $EMAIL$ auf $DEVICE$ bestätigt", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Du hast einen Anmeldeversuch von einem anderen Gerät abgelehnt. Wenn du das wirklich warst, versuche dich erneut mit dem Gerät anzumelden." + }, + "loginRequestHasAlreadyExpired": { + "message": "Anmeldeanfrage ist bereits abgelaufen." + }, + "justNow": { + "message": "Gerade eben" + }, + "requestedXMinutesAgo": { + "message": "Vor $MINUTES$ Minuten angefordert", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Geräte-Genehmigung erforderlich. Wähle unten eine Genehmigungsoption aus:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Admin-Genehmigung anfragen" }, + "unableToCompleteLogin": { + "message": "Anmeldung kann nicht abgeschlossen werden" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Du musst dich auf einem vertrauenswürdigen Gerät anmelden oder deinem Administrator bitten, dir ein Passwort zuzuweisen." + }, "ssoIdentifierRequired": { "message": "SSO-Kennung der Organisation erforderlich." }, @@ -4244,6 +4397,26 @@ "message": "Gängigste Formate", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "Die URI-Übereinstimmungserkennung ist die Methode, mit der Bitwarden Auto-Ausfüllen-Vorschläge erkennt.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regulärer Ausdruck\" ist eine erweiterte Option mit erhöhtem Risiko der Kompromittierung von Zugangsdaten.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Beginnt mit\" ist eine erweiterte Option mit erhöhtem Risiko der Kompromittierung von Zugangsdaten.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Mehr über die Übereinstimmungs-Erkennung", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Erweiterte Optionen", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Weiter zu den Browsereinstellungen?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "$FIELD$, $VALUE$ kopieren", + "copyFieldCipherName": { + "message": "$FIELD$, $CIPHERNAME$ kopieren", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/el/messages.json b/apps/browser/src/_locales/el/messages.json index acd7cac0c9b..fa4f3ac0f3c 100644 --- a/apps/browser/src/_locales/el/messages.json +++ b/apps/browser/src/_locales/el/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Αναζήτηση στο vault" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Επεξεργασία" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ζητήστε να ενημερώσετε την υπάρχουσα σύνδεση" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Κωδικός ασφαλείας" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "πχ." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Πρέπει να επαληθεύσετε το email σας για να χρησιμοποιήσετε αυτή τη δυνατότητα. Μπορείτε να επαληθεύσετε το email σας στο web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Ενημερώθηκε ο κύριος κωδικός πρόσβασης" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Εκτεθειμένος Κύριος Κωδικός Πρόσβασης" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Απομνημόνευση αυτής της συσκευής για την αυτόματες συνδέσεις στο μέλλον" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Απαιτείται έγκριση συσκευής. Επιλέξτε μια επιλογή έγκρισης παρακάτω:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Αίτηση έγκρισης διαχειριστή" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Απαιτείται αναγνωριστικό οργανισμού SSO." }, @@ -4244,6 +4397,26 @@ "message": "Κοινοί τύποι", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Συνεχίστε στις ρυθμίσεις περιηγητή;", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json index b6a8d1834b4..a1b41b44bfd 100644 --- a/apps/browser/src/_locales/en/messages.json +++ b/apps/browser/src/_locales/en/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Search vault" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edit" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4243,6 +4396,26 @@ "commonImportFormats": { "message": "Common formats", "description": "Label indicating the most common import formats" + }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption":{ + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/en_GB/messages.json b/apps/browser/src/_locales/en_GB/messages.json index ffca2486ff4..a70fbd85123 100644 --- a/apps/browser/src/_locales/en_GB/messages.json +++ b/apps/browser/src/_locales/en_GB/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Search vault" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edit" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "e.g." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organisation SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/en_IN/messages.json b/apps/browser/src/_locales/en_IN/messages.json index 02d2ba35060..39de06249fc 100644 --- a/apps/browser/src/_locales/en_IN/messages.json +++ b/apps/browser/src/_locales/en_IN/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Search vault" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edit" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "e.g." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated Master Password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organisation SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/es/messages.json b/apps/browser/src/_locales/es/messages.json index 89d5b928f25..3b681054abc 100644 --- a/apps/browser/src/_locales/es/messages.json +++ b/apps/browser/src/_locales/es/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Buscar en caja fuerte" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Editar" }, @@ -881,13 +884,13 @@ "message": "Pulsa tu YubiKey para identificarte" }, "duoTwoFactorRequiredPageSubtitle": { - "message": "Se requiere inicio de sesión en dos pasos para tu cuenta. Sigue los pasos siguientes para terminar de iniciar sesión." + "message": "Se requiere el inicio de sesión en dos pasos de Duo en tu cuenta. Sigue los siguientes pasos para terminar de iniciar sesión." }, "followTheStepsBelowToFinishLoggingIn": { "message": "Sigue los pasos de abajo para terminar de iniciar sesión." }, "followTheStepsBelowToFinishLoggingInWithSecurityKey": { - "message": "Sigue los siguientes pasos de abajo para terminar de iniciar sesión con tu clave de seguridad." + "message": "Sigue los siguientes pasos para terminar de iniciar sesión con tu clave de seguridad." }, "restartRegistration": { "message": "Reiniciar registro" @@ -1083,7 +1086,7 @@ "message": "Nueva notificación" }, "labelWithNotification": { - "message": "$LABEL$: New notification", + "message": "$LABEL$: Nueva notificación", "description": "Label for the notification with a new login suggestion.", "placeholders": { "label": { @@ -1121,7 +1124,7 @@ "description": "Button text for updating an existing login entry." }, "unlockToSave": { - "message": "Unlock to save this login", + "message": "Desbloquea para guardar este inicio de sesión", "description": "User prompt to take action in order to save the login they just entered." }, "saveLogin": { @@ -1141,7 +1144,7 @@ "description": "Message displayed when login details are successfully updated." }, "loginUpdateTaskSuccess": { - "message": "Great job! You took the steps to make you and $ORGANIZATION$ more secure.", + "message": "¡Buen trabajo! Has dado los pasos para que tú y $ORGANIZATION$ seáis más seguros.", "placeholders": { "organization": { "content": "$1" @@ -1150,7 +1153,7 @@ "description": "Shown to user after login is updated." }, "loginUpdateTaskSuccessAdditional": { - "message": "Thank you for making $ORGANIZATION$ more secure. You have $TASK_COUNT$ more passwords to update.", + "message": "Gracias por hacer $ORGANIZATION$ más seguro. Tienes $TASK_COUNT$ contraseñas más que actualizar.", "placeholders": { "organization": { "content": "$1" @@ -1162,7 +1165,7 @@ "description": "Shown to user after login is updated." }, "nextSecurityTaskAction": { - "message": "Change next password", + "message": "Cambiar siguiente contraseña", "description": "Message prompting user to undertake completion of another security task." }, "saveFailure": { @@ -1170,9 +1173,15 @@ "description": "Error message shown when the system fails to save login details." }, "saveFailureDetails": { - "message": "Oh no! We couldn't save this. Try entering the details manually.", + "message": "¡Oh no! No pudimos guardar esto. Intenta introducir los datos manualmente.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Solicitar la actualización de los datos de inicio de sesión existentes" }, @@ -1366,7 +1375,7 @@ "message": "Característica no disponible" }, "legacyEncryptionUnsupported": { - "message": "Legacy encryption is no longer supported. Please contact support to recover your account." + "message": "La encriptación antigua ya no está soportada. Por favor, contacta con soporte para recuperar tu cuenta." }, "premiumMembership": { "message": "Membresía Premium" @@ -1411,7 +1420,7 @@ "message": "Comprar Premium" }, "premiumPurchaseAlertV2": { - "message": "You can purchase Premium from your account settings on the Bitwarden web app." + "message": "Puedes comprar el Premium desde los ajustes de tu cuenta en la aplicación web de Bitwarden." }, "premiumCurrentMember": { "message": "¡Eres un miembro Premium!" @@ -1474,7 +1483,7 @@ } }, "dontAskAgainOnThisDeviceFor30Days": { - "message": "Don't ask again on this device for 30 days" + "message": "No volver a preguntar en este dispositivo durante 30 días" }, "selectAnotherMethod": { "message": "Selecciona otro método", @@ -1511,7 +1520,7 @@ "message": "Opciones de la autenticación en dos pasos" }, "selectTwoStepLoginMethod": { - "message": "Select two-step login method" + "message": "Selecciona un método de inicio de sesió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." @@ -1600,13 +1609,13 @@ "message": "Sugerencias de autocompletar" }, "autofillSpotlightTitle": { - "message": "Easily find autofill suggestions" + "message": "Encuentra fácilmente sugerencias de autocompletado" }, "autofillSpotlightDesc": { - "message": "Turn off your browser's autofill settings, so they don't conflict with Bitwarden." + "message": "Desactiva los ajustes de autocompletado de tu navegador para que no entren en conflicto con Bitwarden." }, "turnOffBrowserAutofill": { - "message": "Turn off $BROWSER$ autofill", + "message": "Desactivar autocompletado de $BROWSER$", "placeholders": { "browser": { "content": "$1", @@ -1615,22 +1624,22 @@ } }, "turnOffAutofill": { - "message": "Turn off autofill" + "message": "Desactivar autocompletado" }, "showInlineMenuLabel": { - "message": "Show autofill suggestions on form fields" + "message": "Mostrar sugerencias de autocompletado en campos de formulario" }, "showInlineMenuIdentitiesLabel": { - "message": "Display identities as suggestions" + "message": "Mostrar identidades como sugerencias" }, "showInlineMenuCardsLabel": { "message": "Mostrar tarjetas como sugerencias" }, "showInlineMenuOnIconSelectionLabel": { - "message": "Display suggestions when icon is selected" + "message": "Mostrar sugerencias cuando el icono esté seleccionado" }, "showInlineMenuOnFormFieldsDescAlt": { - "message": "Applies to all logged in accounts." + "message": "Se aplica a todas las cuentas a las que se haya iniciado sesión." }, "turnOffBrowserBuiltInPasswordManagerSettings": { "message": "Desactive la configuración del gestor de contraseñas del navegador para evitar conflictos." @@ -1693,13 +1702,13 @@ "message": "Abrir caja fuerte en la barra lateral" }, "commandAutofillLoginDesc": { - "message": "Autofill the last used login for the current website" + "message": "Autocompletar el último inicio de sesión usado para el sitio web actual" }, "commandAutofillCardDesc": { - "message": "Autofill the last used card for the current website" + "message": "Autocompletar la última tarjeta usada para el sitio web actual" }, "commandAutofillIdentityDesc": { - "message": "Autofill the last used identity for the current website" + "message": "Autocompletar la última identidad usada para el sitio web actual" }, "commandGeneratePasswordDesc": { "message": "Generar y copiar una nueva contraseña aleatoria al portapapeles." @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Código de seguridad" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ej." }, @@ -2491,7 +2503,7 @@ "message": "Cannot import card item types" }, "restrictCardTypeImportDesc": { - "message": "A policy set by 1 or more organizations prevents you from importing cards to your vaults." + "message": "Una política establecida en 1 o más organizaciones te impide importar tarjetas a tus cajas fuertes." }, "domainsTitle": { "message": "Dominios", @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Debes verificar tu correo electrónico para usar esta función. Puedes verificar tu correo electrónico en la caja fuerte web." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Contraseña maestra actualizada" }, @@ -2991,7 +3006,7 @@ } }, "vaultTimeoutPolicyInEffect1": { - "message": "$HOURS$ hour(s) and $MINUTES$ minute(s) maximum.", + "message": "$HOURS$ hora(s) y $MINUTES$ minuto(s) como máximo.", "placeholders": { "hours": { "content": "$1", @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Solicitud enviada" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Contraseña maestra comprometida" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Se requiere aprobación del dispositivo. Seleccione una opción de aprobación a continuación:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Solicitar aprobación del administrador" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Se requiere un identificador único de inicio de sesión de la organización." }, @@ -3621,7 +3774,7 @@ "message": "Falta el correo electrónico del usuario" }, "activeUserEmailNotFoundLoggingYouOut": { - "message": "Active user email not found. Logging you out." + "message": "Correo electrónico del usuario activo no encontrado. Cerrando sesión." }, "deviceTrusted": { "message": "Dispositivo de confianza" @@ -3651,11 +3804,11 @@ "message": "Confiar con el usuario" }, "sendsTitleNoItems": { - "message": "Send sensitive information safely", + "message": "Envía información sensible de forma segura", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendsBodyNoItems": { - "message": "Share files and data securely with anyone, on any platform. Your information will remain end-to-end encrypted while limiting exposure.", + "message": "Comparte archivos y datos de forma segura con cualquiera, en cualquier plataforma. Tu información permanecerá encriptada de extremo a extremo, limitando su exposición.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "inputRequired": { @@ -3820,7 +3973,7 @@ "description": "Button text to display in overlay when the account is locked." }, "unlockAccountAria": { - "message": "Unlock your account, opens in a new window", + "message": "Desbloquea tu cuenta, se abre en una nueva ventana", "description": "Screen reader text (aria-label) for unlock account button in overlay" }, "totpCodeAria": { @@ -3828,7 +3981,7 @@ "description": "Aria label for the totp code displayed in the inline menu for autofill" }, "totpSecondsSpanAria": { - "message": "Time remaining before current TOTP expires", + "message": "Tiempo restante antes de que el TOTP actual expire", "description": "Aria label for the totp seconds displayed in the inline menu for autofill" }, "fillCredentialsFor": { @@ -3856,7 +4009,7 @@ "description": "Button text to display within inline menu when there are no matching items on a login field" }, "addNewLoginItemAria": { - "message": "Add new vault login item, opens in a new window", + "message": "Añadir nuevo elemento de inicio de sesión a la caja fuerte, se abre en una nueva ventana", "description": "Screen reader text (aria-label) for new login button within inline menu" }, "newCard": { @@ -4081,7 +4234,7 @@ "message": "No hay inicios de sesión coincidentes para este sitio" }, "searchSavePasskeyNewLogin": { - "message": "Search or save passkey as new login" + "message": "Busca o guarda la clave de acceso como nuevo inicio de sesión" }, "confirm": { "message": "Confirmar" @@ -4093,10 +4246,10 @@ "message": "Guardar clave de acceso como nuevo inicio de sesión" }, "chooseCipherForPasskeySave": { - "message": "Choose a login to save this passkey to" + "message": "Elige un inicio de sesión al que guardar esta clave de acceso" }, "chooseCipherForPasskeyAuth": { - "message": "Choose a passkey to log in with" + "message": "Elige una clave de acceso para iniciar sesión en" }, "passkeyItem": { "message": "Elemento de clave de acceso" @@ -4244,8 +4397,28 @@ "message": "Formatos comunes", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { - "message": "Continue to browser settings?", + "message": "¿Continuar a los ajustes del navegador?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" }, "confirmContinueToHelpCenter": { @@ -4325,7 +4498,7 @@ "message": "Sugerencias de autocompletado" }, "itemSuggestions": { - "message": "Suggested items" + "message": "Elementos sugeridos" }, "autofillSuggestionsTip": { "message": "Guarda un elemento de inicio de sesión para este sitio para autocompletar" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copiar $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, @@ -4767,7 +4940,7 @@ "message": "Solo los miembros de la organización con acceso a estas colecciones podrán ver los elementos." }, "bulkCollectionAssignmentWarning": { - "message": "You have selected $TOTAL_COUNT$ items. You cannot update $READONLY_COUNT$ of the items because you do not have edit permissions.", + "message": "Has seleccionado $TOTAL_COUNT$ elementos. No puedes actualizar $READONLY_COUNT$ de los elementos porque no tienes permisos de edición.", "placeholders": { "total_count": { "content": "$1", @@ -4865,10 +5038,10 @@ } }, "selectCollectionsToAssign": { - "message": "Select collections to assign" + "message": "Selecciona colecciones para asignar" }, "personalItemTransferWarningSingular": { - "message": "1 item will be permanently transferred to the selected organization. You will no longer own this item." + "message": "1 elemento será transferido permanentemente a la organización seleccionada. Ya no serás el propietario de este elemento." }, "personalItemsTransferWarningPlural": { "message": "$PERSONAL_ITEMS_COUNT$ items will be permanently transferred to the selected organization. You will no longer own these items.", @@ -4902,13 +5075,13 @@ } }, "successfullyAssignedCollections": { - "message": "Successfully assigned collections" + "message": "Colecciones asignadas correctamente" }, "nothingSelected": { - "message": "You have not selected anything." + "message": "No has seleccionado nada." }, "itemsMovedToOrg": { - "message": "Items moved to $ORGNAME$", + "message": "Elementos movidos a $ORGNAME$", "placeholders": { "orgname": { "content": "$1", @@ -4917,7 +5090,7 @@ } }, "itemMovedToOrg": { - "message": "Item moved to $ORGNAME$", + "message": "Elemento movido a $ORGNAME$", "placeholders": { "orgname": { "content": "$1", @@ -4961,13 +5134,13 @@ "message": "Acciones de cuenta" }, "showNumberOfAutofillSuggestions": { - "message": "Show number of login autofill suggestions on extension icon" + "message": "Mostrar número de sugerencias de autocompletado de inicios de sesión en el icono de la extensión" }, "showQuickCopyActions": { "message": "Show quick copy actions on Vault" }, "systemDefault": { - "message": "System default" + "message": "Predeterminado del sistema" }, "enterprisePolicyRequirementsApplied": { "message": "Enterprise policy requirements have been applied to this setting" @@ -5009,10 +5182,10 @@ "message": "File saved to device. Manage from your device downloads." }, "showCharacterCount": { - "message": "Show character count" + "message": "Mostrar número de caracteres" }, "hideCharacterCount": { - "message": "Hide character count" + "message": "Ocultar número de caracteres" }, "itemsInTrash": { "message": "Elementos en la papelera" @@ -5069,10 +5242,10 @@ "message": "You can customize your unlock and timeout settings to more quickly access your vault." }, "unlockPinSet": { - "message": "Unlock PIN set" + "message": "Desbloqueo con PIN establecido" }, "unlockWithBiometricSet": { - "message": "Unlock with biometrics set" + "message": "Desbloqueo con biometría establecido" }, "authenticating": { "message": "Autenticando" @@ -5309,7 +5482,7 @@ "message": "Quick and easy login" }, "quickLoginBody": { - "message": "Set up biometric unlock and autofill to log into your accounts without typing a single letter." + "message": "Configura el desbloqueo biométrico y el autocompletado para iniciar sesión en tus cuentas sin tener que escribir ni una sola letra." }, "secureUser": { "message": "Level up your logins" @@ -5318,7 +5491,7 @@ "message": "Utilice el generador para crear y guardar contraseñas fuertes y únicas para todas sus cuentas." }, "secureDevices": { - "message": "Your data, when and where you need it" + "message": "Tus datos, dónde y cuándo los necesites" }, "secureDevicesBody": { "message": "Guarda contraseñas ilimitadas a través de dispositivos ilimitados con aplicaciones móviles, de navegador y de escritorio de Bitwarden." @@ -5348,7 +5521,7 @@ "message": "Search your vault for something else" }, "newLoginNudgeTitle": { - "message": "Save time with autofill" + "message": "Ahorra tiempo con el autocompletado" }, "newLoginNudgeBodyOne": { "message": "Include a", @@ -5372,7 +5545,7 @@ "message": "With cards, easily autofill payment forms securely and accurately." }, "newIdentityNudgeTitle": { - "message": "Simplify creating accounts" + "message": "Simplifica la creación de cuentas" }, "newIdentityNudgeBody": { "message": "With identities, quickly autofill long registration or contact forms." diff --git a/apps/browser/src/_locales/et/messages.json b/apps/browser/src/_locales/et/messages.json index 6893dec3f4f..8b61aa70a60 100644 --- a/apps/browser/src/_locales/et/messages.json +++ b/apps/browser/src/_locales/et/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Otsi hoidlast" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Muuda" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Paku olemasolevate andmete uuendamist" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Turvakood" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "nt." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Selle funktsiooni kasutamiseks pead kinnitama oma e-posti aadressi. Saad seda teha veebihoidlas." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Uuendas ülemparooli" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Ülemparool on haavatav" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Nõutav on seadme kinnitamine. Vali kinnitamise meetod alt:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Küsi admini kinnitust" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Nõutav on organisatsiooni SSO identifikaator." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/eu/messages.json b/apps/browser/src/_locales/eu/messages.json index 49e87abcf83..73bd992dacb 100644 --- a/apps/browser/src/_locales/eu/messages.json +++ b/apps/browser/src/_locales/eu/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Bilatu kutxa gotorrean" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Editatu" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Galdetu uneko saio-hasiera eguneratzeko" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Segurtasun-kodea" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "adib." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Emaila egiaztatu behar duzu funtzio hau erabiltzeko. Emaila web-eko kutxa gotorrean egiazta dezakezu." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Pasahitz nagusia eguneratuta" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Eskatu administratzailearen onarpena" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/fa/messages.json b/apps/browser/src/_locales/fa/messages.json index a1979d703bf..18afcb775f9 100644 --- a/apps/browser/src/_locales/fa/messages.json +++ b/apps/browser/src/_locales/fa/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "جستجوی گاوصندوق" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "ویرایش" }, @@ -1173,6 +1176,12 @@ "message": "اوه نه! نتوانستیم این را ذخیره کنیم. لطفاً جزئیات را به‌صورت دستی وارد کنید.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "درخواست برای به‌روزرسانی ورود به سیستم موجود" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "کد امنیتی" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "مثال." }, @@ -1923,7 +1935,7 @@ "message": "کلید SSH" }, "typeNote": { - "message": "Note" + "message": "یادداشت" }, "newItemHeader": { "message": "$TYPE$ جدید", @@ -2157,7 +2169,7 @@ "message": "کد پین خود را برای باز کردن Bitwarden تنظیم کنید. اگر به طور کامل از برنامه خارج شوید، تنظیمات پین شما از بین می‌رود." }, "setPinCode": { - "message": "You can use this PIN to unlock Bitwarden. Your PIN will be reset if you ever fully log out of the application." + "message": "شما می‌توانید از این کد پین برای باز کردن قفل Bitwarden استفاده کنید. در صورتی که کامل از برنامه خارج شوید، کد پین شما مجدداً تنظیم خواهد شد." }, "pinRequired": { "message": "کد پین الزامیست." @@ -2488,10 +2500,10 @@ "message": "یک سیاست سازمانی، درون ریزی موارد به گاوصندوق فردی شما را مسدود کرده است." }, "restrictCardTypeImport": { - "message": "Cannot import card item types" + "message": "نمی‌توان انواع مورد کارت را درون ریزی کرد" }, "restrictCardTypeImportDesc": { - "message": "A policy set by 1 or more organizations prevents you from importing cards to your vaults." + "message": "یک سیاست تعیین شده توسط یک یا چند سازمان، مانع از درون ریزی کارت‌ها به گاوصندوق‌های شما شده است." }, "domainsTitle": { "message": "دامنه‌ها", @@ -2525,7 +2537,7 @@ "message": "تغییر" }, "changePassword": { - "message": "Change password", + "message": "تغییر رمز عبور", "description": "Change password button for browser at risk notification on login." }, "changeButtonTitle": { @@ -2538,7 +2550,7 @@ } }, "atRiskPassword": { - "message": "At-risk password" + "message": "کلمه عبور در معرض خطر" }, "atRiskPasswords": { "message": "کلمات عبور در معرض خطر" @@ -2575,7 +2587,7 @@ } }, "atRiskChangePrompt": { - "message": "Your password for this site is at-risk. $ORGANIZATION$ has requested that you change it.", + "message": "کلمه عبور شما برای این سایت در معرض خطر است. $ORGANIZATION$ درخواست کرده است که آن را تغییر دهید.", "placeholders": { "organization": { "content": "$1", @@ -2585,7 +2597,7 @@ "description": "Notification body when a login triggers an at-risk password change request and the change password domain is known." }, "atRiskNavigatePrompt": { - "message": "$ORGANIZATION$ wants you to change this password because it is at-risk. Navigate to your account settings to change the password.", + "message": "$ORGANIZATION$ از شما می‌خواهد این کلمه عبور را تغییر دهید چون در معرض خطر است. برای تغییر کلمه عبور به تنظیمات حساب کاربری خود مراجعه کنید.", "placeholders": { "organization": { "content": "$1", @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "برای استفاده از این ویژگی باید ایمیل خود را تأیید کنید. می‌توانید ایمیل خود را در گاوصندوق وب تأیید کنید." }, + "masterPasswordSuccessfullySet": { + "message": "کلمه عبور اصلی با موفقیت تنظیم شد" + }, "updatedMasterPassword": { "message": "کلمه عبور اصلی به‌روزرسانی شد" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "درخواست ارسال شد" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "کلمه عبور اصلی افشا شده" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "این دستگاه را به خاطر بسپار تا ورودهای بعدی بدون مشکل انجام شود" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "تأیید دستگاه لازم است. یک روش تأیید انتخاب کنید:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "درخواست تأیید مدیر" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "شناسه سازمان SSO مورد نیاز است." }, @@ -4244,6 +4397,26 @@ "message": "فرمت‌های رایج", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "تشخیص تطابق نشانی اینترنتی روشی است که Bitwarden برای شناسایی پیشنهادهای پر کردن خودکار استفاده می‌کند.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"عبارت منظم\" یک گزینه پیشرفته است که خطر افشای اطلاعات ورود را افزایش می‌دهد.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"شروع با\" یک گزینه پیشرفته است که خطر افشای اطلاعات ورود را افزایش می‌دهد.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "اطلاعات بیشتر درباره‌ی تشخیص تطابق", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "تنظیمات پیشرفته", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "ادامه به تنظیمات مرورگر؟", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "کپی $FIELD$، $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, @@ -5072,7 +5245,7 @@ "message": "بازکردن قفل کد پین تنظیم شد" }, "unlockWithBiometricSet": { - "message": "Unlock with biometrics set" + "message": "باز کردن قفل با بیومتریک تنظیم شد" }, "authenticating": { "message": "در حال احراز هویت" @@ -5417,7 +5590,7 @@ "message": "شما اجازه دسترسی به این صفحه را ندارید. لطفاً با حساب کاربری دیگری وارد شوید." }, "wasmNotSupported": { - "message": "WebAssembly is not supported on your browser or is not enabled. WebAssembly is required to use the Bitwarden app.", + "message": "WebAssembly در مرورگر شما پشتیبانی نمی‌شود یا فعال نیست. برای استفاده از برنامه Bitwarden، فعال بودن WebAssembly الزامی است.", "description": "'WebAssembly' is a technical term and should not be translated." } } diff --git a/apps/browser/src/_locales/fi/messages.json b/apps/browser/src/_locales/fi/messages.json index 098e361223a..894b50b5273 100644 --- a/apps/browser/src/_locales/fi/messages.json +++ b/apps/browser/src/_locales/fi/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Etsi holvista" }, + "resetSearch": { + "message": "Nollaa haku" + }, "edit": { "message": "Muokkaa" }, @@ -887,7 +890,7 @@ "message": "Viimeistele kirjautuminen seuraamalla seuraavia vaiheita." }, "followTheStepsBelowToFinishLoggingInWithSecurityKey": { - "message": "Follow the steps below to finish logging in with your security key." + "message": "Seuraa alla olevia ohjeita, jotta pääset kirjautumaan suojausavaimellasi." }, "restartRegistration": { "message": "Aloita rekisteröityminen alusta" @@ -1063,7 +1066,7 @@ "message": "Tallenna" }, "notificationViewAria": { - "message": "View $ITEMNAME$, opens in new window", + "message": "Näytä $ITEMNAME$. Avautuu uudessa ikkunassa", "placeholders": { "itemName": { "content": "$1" @@ -1093,15 +1096,15 @@ } }, "notificationLoginSaveConfirmation": { - "message": "saved to Bitwarden.", + "message": "tallennettu Bitwardeniin.", "description": "Shown to user after item is saved." }, "notificationLoginUpdatedConfirmation": { - "message": "updated in Bitwarden.", + "message": "päivitetty Bitwardeniin.", "description": "Shown to user after item is updated." }, "selectItemAriaLabel": { - "message": "Select $ITEMTYPE$, $ITEMNAME$", + "message": "Valitse $ITEMTYPE$, $ITEMNAME$", "description": "Used by screen readers. $1 is the item type (like vault or folder), $2 is the selected item name.", "placeholders": { "itemType": { @@ -1121,7 +1124,7 @@ "description": "Button text for updating an existing login entry." }, "unlockToSave": { - "message": "Unlock to save this login", + "message": "Avaa tallentaaksesi tämä kirjautumistieto", "description": "User prompt to take action in order to save the login they just entered." }, "saveLogin": { @@ -1173,6 +1176,12 @@ "message": "Voi ei! Emme voineet tallentaa tätä. Yritä syöttää tiedot manuaalisesti.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Kun olet vaihtanut salasanaasi, sinun täytyy kirjautua sisään uudella salasanalla. Aktiiviset istunnot muilla laitteilla kirjataan ulos tunnin kuluessa." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Vaihda pääsalasanasi, jotta voit jatkaa tilin palautusta." + }, "enableChangedPasswordNotification": { "message": "Kysy päivitetäänkö kirjautumistieto" }, @@ -1366,7 +1375,7 @@ "message": "Ominaisuus ei ole käytettävissä" }, "legacyEncryptionUnsupported": { - "message": "Legacy encryption is no longer supported. Please contact support to recover your account." + "message": "Vanhaa salausta ei enää tueta. Ota yhteyttä tukeen palauttaaksesi tilisi." }, "premiumMembership": { "message": "Premium-jäsenyys" @@ -1600,10 +1609,10 @@ "message": "Automaattitäytön ehdotukset" }, "autofillSpotlightTitle": { - "message": "Easily find autofill suggestions" + "message": "Löydä helposti automaattisen täytön ehdotukset" }, "autofillSpotlightDesc": { - "message": "Turn off your browser's autofill settings, so they don't conflict with Bitwarden." + "message": "Poista käytöstä selaimesi oletuksena asetetut automaattisen täytön asetukset, joten ne eivät aiheuta ongelmia Bitwardenin kanssa." }, "turnOffBrowserAutofill": { "message": "Poista automaattitäyttö käytöstä selaimessa $BROWSER$", @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Turvakoodi (CVC/CVV)" }, + "cardNumber": { + "message": "kortin numero" + }, "ex": { "message": "esim." }, @@ -1923,7 +1935,7 @@ "message": "SSH-avain" }, "typeNote": { - "message": "Note" + "message": "Muistiinpano" }, "newItemHeader": { "message": "Uusi $TYPE$", @@ -2157,7 +2169,7 @@ "message": "Aseta PIN-koodi Bitwardenin avaukselle. PIN-asetukset tyhjentyvät, jos kirjaudut laajennuksesta kokonaan ulos." }, "setPinCode": { - "message": "You can use this PIN to unlock Bitwarden. Your PIN will be reset if you ever fully log out of the application." + "message": "Voit käyttää PIN-koodia avataksesi Bitwardenin. PIN-koodisi nollataan, mikäli kirjaudut täysin ulos sovelluksesta." }, "pinRequired": { "message": "PIN-koodi vaaditaan." @@ -2208,7 +2220,7 @@ "message": "Käytä tätä salasanaa" }, "useThisPassphrase": { - "message": "Use this passphrase" + "message": "Käytä tätä salalausetta" }, "useThisUsername": { "message": "Käytä tätä käyttäjätunnusta" @@ -2488,10 +2500,10 @@ "message": "Organisaatiokäytäntö estää kohteiden tuonnin yksityiseen holviisi." }, "restrictCardTypeImport": { - "message": "Cannot import card item types" + "message": "Ei voitu tuoda kortteja" }, "restrictCardTypeImportDesc": { - "message": "A policy set by 1 or more organizations prevents you from importing cards to your vaults." + "message": "Käytäntö, jonka on asettanut 1 tai useampi organisaatiosi estää sinua tuomasta korttitietoja holviisi." }, "domainsTitle": { "message": "Verkkotunnukset", @@ -2525,7 +2537,7 @@ "message": "Vaihda" }, "changePassword": { - "message": "Change password", + "message": "Vaihda salasana", "description": "Change password button for browser at risk notification on login." }, "changeButtonTitle": { @@ -2538,7 +2550,7 @@ } }, "atRiskPassword": { - "message": "At-risk password" + "message": "Riskialttiit salasanat" }, "atRiskPasswords": { "message": "Vaarantuneet salasanat" @@ -2575,7 +2587,7 @@ } }, "atRiskChangePrompt": { - "message": "Your password for this site is at-risk. $ORGANIZATION$ has requested that you change it.", + "message": "Salasanasi tälle sivustolle ei ole turvallinen. $ORGANIZATION$ on ilmoittanut, että se tulisi vaihtaa.", "placeholders": { "organization": { "content": "$1", @@ -2585,7 +2597,7 @@ "description": "Notification body when a login triggers an at-risk password change request and the change password domain is known." }, "atRiskNavigatePrompt": { - "message": "$ORGANIZATION$ wants you to change this password because it is at-risk. Navigate to your account settings to change the password.", + "message": "$ORGANIZATION$ ovat pyytäneet, että vaihdat tämän salasnaan, sillä se ei ole turvallinen. Mene tilin asetuksiin ja vaihda salasana.", "placeholders": { "organization": { "content": "$1", @@ -2714,7 +2726,7 @@ "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", + "message": "Käyttökertojen enimmäismäärä on saavutettu", "description": "This text will be displayed after a Send has been accessed the maximum amount of times." }, "hideTextByDefault": { @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Sinun on vahvistettava sähköpostiosoitteesi käyttääksesi ominaisuutta. Voit vahvistaa osoitteesi verkkoholvissa." }, + "masterPasswordSuccessfullySet": { + "message": "Pääsalasana asetettu" + }, "updatedMasterPassword": { "message": "Pääsalasanasi on vaihdettu" }, @@ -3058,13 +3073,13 @@ "message": "Yksilöllistä tunnistetta ei löytynyt." }, "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." + "message": "Pääsalasanaa ei enää tarvita tämän organisaation jäsenille. Ole hyvä ja vahvista alla oleva verkkotunnus organisaation ylläpitäjän kanssa." }, "organizationName": { "message": "Organisaation nimi" }, "keyConnectorDomain": { - "message": "Key Connector domain" + "message": "Key Connector URL" }, "leaveOrganization": { "message": "Poistu organisaatiosta" @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Pyyntö lähetetty" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Kirjautuminen hyväksytty tunnuksella $EMAIL$ laitteella $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Kirjautumispyyntö on estetty toiselta laitteelta. Jos se olit sinä, yritä kirjautua uudelleen samalla laitteella." + }, + "device": { + "message": "Laite" + }, + "loginStatus": { + "message": "Kirjautumisen tila" + }, + "masterPasswordChanged": { + "message": "Pääsalasana tallennettiin" + }, "exposedMasterPassword": { "message": "Paljastunut pääsalasana" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Muista tämä laite tehdäksesi tulevista kirjautumisista saumattomia" }, + "manageDevices": { + "message": "Hallinnoi laitteita" + }, + "currentSession": { + "message": "Nykyinen istunto" + }, + "mobile": { + "message": "Mobiili", + "description": "Mobile app" + }, + "extension": { + "message": "Laajennus", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Työpöytä", + "description": "Desktop app" + }, + "webVault": { + "message": "Verkkoholvi" + }, + "webApp": { + "message": "Verkkosovellus" + }, + "cli": { + "message": "Komentorivi" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Pyyntö odottaa" + }, + "firstLogin": { + "message": "Ensimmäinen kirjautuminen" + }, + "trusted": { + "message": "Luotettu" + }, + "needsApproval": { + "message": "Vaatii hyväksynnän" + }, + "devices": { + "message": "Laitteet" + }, + "accessAttemptBy": { + "message": "Kirjautumisyritys sähköpostilla $EMAIL$ ", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Hyväksy pääsy" + }, + "denyAccess": { + "message": "Estä pääsy" + }, + "time": { + "message": "Aika" + }, + "deviceType": { + "message": "Laitteen tyyppi" + }, + "loginRequest": { + "message": "Kirjautumispyyntö" + }, + "thisRequestIsNoLongerValid": { + "message": "Tämä pyyntö ei ole enää voimassa." + }, + "areYouTryingToAccessYourAccount": { + "message": "Yritätkö kirjautua tilillesi?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Kirjautuminen vahvistettu tunnuksella $EMAIL$ laitteella $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Estit toisen laitteen lähettämän kirjautumispyynnön. Jos kuitenkin tunnistit kirjautumisyrityksen, suorita kirjautuminen uudelleen." + }, + "loginRequestHasAlreadyExpired": { + "message": "Kirjautumispyyntö on jo vanhentunut." + }, + "justNow": { + "message": "juuri nyt" + }, + "requestedXMinutesAgo": { + "message": "pyydetty $MINUTES$ minuuttia sitten", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Laitehyväksyntä vaaditaan. Valitse hyväksyntätapa alta:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Pyydä hyväksyntää ylläpidolta" }, + "unableToCompleteLogin": { + "message": "Kirjautuminen epäonnistui" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Sinun on kirjauduttava luotettuun laitteeseen tai pyydettävä järjestelmänvalvojaasi antamaan sinulle salasana." + }, "ssoIdentifierRequired": { "message": "Organisaation kertakirjautumistunniste tarvitaan." }, @@ -3639,23 +3792,23 @@ "message": "Organisaatio ei ole luotettu" }, "emergencyAccessTrustWarning": { - "message": "For the security of your account, only confirm if you have granted emergency access to this user and their fingerprint matches what is displayed in their account" + "message": "Tilisi turvallisuuden varmistamiseksi, vahvista vain, jos olet antanut hätäpääsyn tälle käyttäjälle ja hänen sormenjälkensä vastaa sitä, mitä hänen tilillään näkyy" }, "orgTrustWarning": { - "message": "For the security of your account, only proceed if you are a member of this organization, have account recovery enabled, and the fingerprint displayed below matches the organization's fingerprint." + "message": "Tilisi turvallisuuden takaamiseksi jatka vain, jos olet tämän organisaation jäsen, tilin palautus on käytössä ja alla näkyvä sormenjälki vastaa organisaatiosi sormenjälkeä." }, "orgTrustWarning1": { - "message": "This organization has an Enterprise policy that will enroll you in account recovery. Enrollment will allow organization administrators to change your password. Only proceed if you recognize this organization and the fingerprint phrase displayed below matches the organization's fingerprint." + "message": "Tällä organisaatiolla on yrityskäytäntö, joka tulee ilmi, kun yrität palauttaa tiliäsi. Ilmoittautuminen sallii organisaation ylläpitäjien vaihtaa salasanasi. Jatka vain, jos tunnistat tämän organisaation ja alla näkyvän sormenjäljen, joka vastaa organisaation sormenjälkeä." }, "trustUser": { "message": "Luota käyttäjään" }, "sendsTitleNoItems": { - "message": "Send sensitive information safely", + "message": "Lähetä arkaluonteisia tietoja turvallisesti", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendsBodyNoItems": { - "message": "Share files and data securely with anyone, on any platform. Your information will remain end-to-end encrypted while limiting exposure.", + "message": "Jaa tiedostoja ja dataa turvallisesti kenen tahansa kanssa millä tahansa alustalla. Tiedot pysyvät päästä päähän salattuina.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "inputRequired": { @@ -4244,6 +4397,26 @@ "message": "Yleiset muodot", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI:n Säännöllinen lauseke -asetus on se tapa, jolla Bitwarden tekee automaattisen täytön.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "Säänöllinen lauseke -asetus on kehittynyt asetus, joka lisää kirjautumistietoja kaappausriskiä.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "Alkaa sanoilla -asetus on kehittynyt asetus, joka lisää kirjautumistietoja kaappausriskiä.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Lisätietoa vastaavuustunnistuksesta", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Lisäasetukset", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Avataanko selaimen asetukset?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Kopioi $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Kopioi $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, @@ -4584,16 +4757,16 @@ "message": "Hanki mobiilisovellus" }, "getTheMobileAppDesc": { - "message": "Access your passwords on the go with the Bitwarden mobile app." + "message": "Pääse käsiksi salasanoihisi, jos et pääse tietokoneen ääreen Bitwarden-mobiilisovelluksella." }, "getTheDesktopApp": { "message": "Hanki työpöytäsovellus" }, "getTheDesktopAppDesc": { - "message": "Access your vault without a browser, then set up unlock with biometrics to expedite unlocking in both the desktop app and browser extension." + "message": "Käytä holviasi ilman selainta ja aseta sitten lukitus biometriikan avulla nopeuttaaksesi lukituksen avaamista sekä työpöytäsovelluksessa että selaimessa." }, "downloadFromBitwardenNow": { - "message": "Download from bitwarden.com now" + "message": "Lataa bitwarden.comista nyt" }, "getItOnGooglePlay": { "message": "Hanki se Google Playstä" @@ -5063,16 +5236,16 @@ "message": "Biometrinen avaus ei ole tällä hetkellä käytettävissä tuntemattomasta syystä." }, "unlockVault": { - "message": "Unlock your vault in seconds" + "message": "Avaa holvisi lukitus sekunneissa" }, "unlockVaultDesc": { - "message": "You can customize your unlock and timeout settings to more quickly access your vault." + "message": "Voit muokata avaus- ja aikakatkaisuasetuksiasi päästäksesi holvisi nopeammin käsiksi." }, "unlockPinSet": { - "message": "Unlock PIN set" + "message": "PIN asetettu" }, "unlockWithBiometricSet": { - "message": "Unlock with biometrics set" + "message": "Biometrinen kirjautuminen otettu käyttöön" }, "authenticating": { "message": "Todennetaan" @@ -5294,7 +5467,7 @@ "message": "Holvin asetukset" }, "emptyVaultDescription": { - "message": "The vault protects more than just your passwords. Store secure logins, IDs, cards and notes securely here." + "message": "Holvi suojaa muutakin kuin salasanojasi. Säilytä kirjautumsitietojen lisäksi kortteja, muistiinpanoja ja henkilötietoja turvallisesti." }, "introCarouselLabel": { "message": "Tervetuloa Bitwardeniin" @@ -5330,7 +5503,7 @@ "message": "Tuo olemassa olevat salasanat" }, "emptyVaultNudgeBody": { - "message": "Use the importer to quickly transfer logins to Bitwarden without manually adding them." + "message": "Käytä tuojaa siirtääksesi kirjautumisia nopeasti Bitwardeniin lisäämättä niitä manuaalisesti." }, "emptyVaultNudgeButton": { "message": "Tuo nyt" @@ -5339,19 +5512,19 @@ "message": "Tervetuloa holviisi!" }, "hasItemsVaultNudgeBodyOne": { - "message": "Autofill items for the current page" + "message": "Täytä nykyisen sivun kohteet automaattisesti" }, "hasItemsVaultNudgeBodyTwo": { - "message": "Favorite items for easy access" + "message": "Suosikkikohteita helppoon käyttöön" }, "hasItemsVaultNudgeBodyThree": { - "message": "Search your vault for something else" + "message": "Etsi holvistasi jotain muuta" }, "newLoginNudgeTitle": { "message": "Säästä aikaa automaattitäytöllä" }, "newLoginNudgeBodyOne": { - "message": "Include a", + "message": "Sisällytä a", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, @@ -5361,63 +5534,63 @@ "example": "Include a Website so this login appears as an autofill suggestion." }, "newLoginNudgeBodyTwo": { - "message": "so this login appears as an autofill suggestion.", + "message": ", joten tämä kirjautuminen näkyy automaattisen täytön ehdotuksena.", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newCardNudgeTitle": { - "message": "Seamless online checkout" + "message": "Saumaton verkkomaksaminen" }, "newCardNudgeBody": { - "message": "With cards, easily autofill payment forms securely and accurately." + "message": "Korteilla voit helposti täyttää automaattisesti maksulomakkeet turvallisesti ja oikein." }, "newIdentityNudgeTitle": { - "message": "Simplify creating accounts" + "message": "Yksinkertaista tilien luomista" }, "newIdentityNudgeBody": { - "message": "With identities, quickly autofill long registration or contact forms." + "message": "Identiteettien avulla täytä pitkät rekisteröinti- tai yhteydenottolomakkeet nopeasti automaattisesti." }, "newNoteNudgeTitle": { - "message": "Keep your sensitive data safe" + "message": "Pidä arkaluonteiset tietosi turvassa" }, "newNoteNudgeBody": { - "message": "With notes, securely store sensitive data like banking or insurance details." + "message": "Muistiinpanojen avulla tallennetaan turvallisesti arkaluonteiset tiedot, kuten pankkitiedot." }, "newSshNudgeTitle": { - "message": "Developer-friendly SSH access" + "message": "Kehittäjäystävällinen SSH-käyttö" }, "newSshNudgeBodyOne": { - "message": "Store your keys and connect with the SSH agent for fast, encrypted authentication.", + "message": "Säilytä avaimet ja yhdistä SSH-agenttiin, niin saat nopean ja salatun todennuksen.", "description": "Two part message", "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, "newSshNudgeBodyTwo": { - "message": "Learn more about SSH agent", + "message": "Lue lisää SSH-agentista", "description": "Two part message", "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, "generatorNudgeTitle": { - "message": "Quickly create passwords" + "message": "Luo salasanat nopeasti" }, "generatorNudgeBodyOne": { - "message": "Easily create strong and unique passwords by clicking on", + "message": "Luo helposti vahvoja ja uniikkeja salasanoja klikkaamalla", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyTwo": { - "message": "to help you keep your logins secure.", + "message": "auttaakssi sinua pitämään kirjautumisesi turvassa.", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyAria": { - "message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.", + "message": "Luo helposti vahvoja ja uniikkeja salasanoja klikkaamalla Luo salasana -painiketta. Sen avuilla voit pitää kirjautumisesi turvallisina.", "description": "Aria label for the body content of the generator nudge" }, "noPermissionsViewPage": { - "message": "You do not have permissions to view this page. Try logging in with a different account." + "message": "Sinulla ei ole oikeuksia tähän sivuun. Yritä kirjautua sisään toisella tilillä." }, "wasmNotSupported": { - "message": "WebAssembly is not supported on your browser or is not enabled. WebAssembly is required to use the Bitwarden app.", + "message": "WebAssembly ei ole tuettu selaimessasi tai se ei ole käytössä. WebAssembly vaaditaan, jotta voi käyttää Bitwardenia.", "description": "'WebAssembly' is a technical term and should not be translated." } } diff --git a/apps/browser/src/_locales/fil/messages.json b/apps/browser/src/_locales/fil/messages.json index de17e87a57b..dfc8d65cfd9 100644 --- a/apps/browser/src/_locales/fil/messages.json +++ b/apps/browser/src/_locales/fil/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Hanapin ang vault" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "I-edit" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Tanungin ang update ng umiiral na login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Kodigo ng Seguridad" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Kailangan mong i-verify ang iyong email upang gamitin ang tampok na ito. Maaari mong i-verify ang iyong email sa web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "I-update ang master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Nakalantad na Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/fr/messages.json b/apps/browser/src/_locales/fr/messages.json index e1397980675..c35f4ca4bb9 100644 --- a/apps/browser/src/_locales/fr/messages.json +++ b/apps/browser/src/_locales/fr/messages.json @@ -3,7 +3,7 @@ "message": "Bitwarden" }, "appLogoLabel": { - "message": "Bitwarden logo" + "message": "Logo de Bitwarden" }, "extName": { "message": "Gestionnaire de mots de passe Bitwarden", @@ -547,6 +547,9 @@ "searchVault": { "message": "Rechercher dans le coffre" }, + "resetSearch": { + "message": "Réinitialiser la recherche" + }, "edit": { "message": "Modifier" }, @@ -887,7 +890,7 @@ "message": "Suivez les étapes ci-dessous afin de réussir à vous connecter." }, "followTheStepsBelowToFinishLoggingInWithSecurityKey": { - "message": "Follow the steps below to finish logging in with your security key." + "message": "Suivez les étapes ci-dessous pour terminer la connexion avec votre clé de sécurité." }, "restartRegistration": { "message": "Redémarrer l'inscription" @@ -1063,7 +1066,7 @@ "message": "Enregistrer" }, "notificationViewAria": { - "message": "View $ITEMNAME$, opens in new window", + "message": "Afficher $ITEMNAME$, s'ouvre dans une nouvelle fenêtre", "placeholders": { "itemName": { "content": "$1" @@ -1076,14 +1079,14 @@ "description": "Aria label for the new item button in notification bar confirmation message when error is prompted" }, "notificationEditTooltip": { - "message": "Edit before saving", + "message": "Modifier avant d'enregistrer", "description": "Tooltip and Aria label for edit button on cipher item" }, "newNotification": { - "message": "New notification" + "message": "Nouvelle notification" }, "labelWithNotification": { - "message": "$LABEL$: New notification", + "message": "$LABEL$: Nouvelle notification", "description": "Label for the notification with a new login suggestion.", "placeholders": { "label": { @@ -1093,15 +1096,15 @@ } }, "notificationLoginSaveConfirmation": { - "message": "saved to Bitwarden.", + "message": "enregistré dans Bitwarden.", "description": "Shown to user after item is saved." }, "notificationLoginUpdatedConfirmation": { - "message": "updated in Bitwarden.", + "message": "mis à jour dans Bitwarden.", "description": "Shown to user after item is updated." }, "selectItemAriaLabel": { - "message": "Select $ITEMTYPE$, $ITEMNAME$", + "message": "Sélectionner $ITEMTYPE$, $ITEMNAME$", "description": "Used by screen readers. $1 is the item type (like vault or folder), $2 is the selected item name.", "placeholders": { "itemType": { @@ -1129,7 +1132,7 @@ "description": "Prompt asking the user if they want to save their login details." }, "updateLogin": { - "message": "Update existing login", + "message": "Mettre à jour de l'identifiant existant", "description": "Prompt asking the user if they want to update an existing login entry." }, "loginSaveSuccess": { @@ -1141,7 +1144,7 @@ "description": "Message displayed when login details are successfully updated." }, "loginUpdateTaskSuccess": { - "message": "Great job! You took the steps to make you and $ORGANIZATION$ more secure.", + "message": "Bon travail ! Vous avez pris les mesures pour rendre vous et $ORGANIZATION$ plus sécurisés.", "placeholders": { "organization": { "content": "$1" @@ -1150,7 +1153,7 @@ "description": "Shown to user after login is updated." }, "loginUpdateTaskSuccessAdditional": { - "message": "Thank you for making $ORGANIZATION$ more secure. You have $TASK_COUNT$ more passwords to update.", + "message": "Merci d'avoir rendu $ORGANIZATION$ plus sécurisé. Il vous reste $TASK_COUNT$ mots de passe à mettre à jour.", "placeholders": { "organization": { "content": "$1" @@ -1162,7 +1165,7 @@ "description": "Shown to user after login is updated." }, "nextSecurityTaskAction": { - "message": "Change next password", + "message": "Changer le mot de passe suivant", "description": "Message prompting user to undertake completion of another security task." }, "saveFailure": { @@ -1173,6 +1176,12 @@ "message": "Oh non ! Nous n'avons pas pu enregistrer cela. Essayez de saisir les détails manuellement.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Après avoir changé votre mot de passe, vous devrez vous connecter avec votre nouveau mot de passe. Les sessions actives sur d'autres appareils seront déconnectées dans l'heure qui suit." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Changez votre mot de passe principal pour finaliser la récupération de compte." + }, "enableChangedPasswordNotification": { "message": "Demander de mettre à jour un identifiant existant" }, @@ -1366,7 +1375,7 @@ "message": "Fonctionnalité indisponible" }, "legacyEncryptionUnsupported": { - "message": "Legacy encryption is no longer supported. Please contact support to recover your account." + "message": "Le chiffrement hérité n'est plus pris en charge. Veuillez contacter le support pour récupérer votre compte." }, "premiumMembership": { "message": "Adhésion Premium" @@ -1600,13 +1609,13 @@ "message": "Suggestions de saisie automatique" }, "autofillSpotlightTitle": { - "message": "Easily find autofill suggestions" + "message": "Trouver facilement des suggestions de remplissage automatique" }, "autofillSpotlightDesc": { - "message": "Turn off your browser's autofill settings, so they don't conflict with Bitwarden." + "message": "Désactivez les paramètres de remplissage automatique de votre navigateur pour qu'ils n'entrent pas en conflit avec Bitwarden." }, "turnOffBrowserAutofill": { - "message": "Turn off $BROWSER$ autofill", + "message": "Désactiver le remplissage automatique de $BROWSER$", "placeholders": { "browser": { "content": "$1", @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Code de sécurité" }, + "cardNumber": { + "message": "numéro de carte" + }, "ex": { "message": "ex." }, @@ -2157,7 +2169,7 @@ "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." }, "setPinCode": { - "message": "You can use this PIN to unlock Bitwarden. Your PIN will be reset if you ever fully log out of the application." + "message": "Vous pouvez utiliser ce code PIN pour déverrouiller Bitwarden. Votre code PIN sera réinitialisé si vous vous déconnectez complètement de l'application." }, "pinRequired": { "message": "Le code PIN est requis." @@ -2208,7 +2220,7 @@ "message": "Utiliser ce mot de passe" }, "useThisPassphrase": { - "message": "Use this passphrase" + "message": "Utilisez cette phrase secrète" }, "useThisUsername": { "message": "Utiliser ce nom d'utilisateur" @@ -2488,10 +2500,10 @@ "message": "Une politique d'organisation a bloqué l'import d'éléments dans votre coffre personel." }, "restrictCardTypeImport": { - "message": "Cannot import card item types" + "message": "Impossible d'importer des types d'éléments de carte" }, "restrictCardTypeImportDesc": { - "message": "A policy set by 1 or more organizations prevents you from importing cards to your vaults." + "message": "Une politique définie par 1 ou plusieurs organisations vous empêche d'importer des cartes dans vos coffres." }, "domainsTitle": { "message": "Domaines", @@ -2525,7 +2537,7 @@ "message": "Modifier" }, "changePassword": { - "message": "Change password", + "message": "Changer le mot de passe", "description": "Change password button for browser at risk notification on login." }, "changeButtonTitle": { @@ -2538,7 +2550,7 @@ } }, "atRiskPassword": { - "message": "At-risk password" + "message": "Mot de passe à risque" }, "atRiskPasswords": { "message": "Mots de passe à risque" @@ -2575,7 +2587,7 @@ } }, "atRiskChangePrompt": { - "message": "Your password for this site is at-risk. $ORGANIZATION$ has requested that you change it.", + "message": "Votre mot de passe pour ce site est à risque. $ORGANIZATION$ vous a demandé de le modifier.", "placeholders": { "organization": { "content": "$1", @@ -2585,7 +2597,7 @@ "description": "Notification body when a login triggers an at-risk password change request and the change password domain is known." }, "atRiskNavigatePrompt": { - "message": "$ORGANIZATION$ wants you to change this password because it is at-risk. Navigate to your account settings to change the password.", + "message": "$ORGANIZATION$ souhaite que vous changiez ce mot de passe car il est à risque. Accédez aux paramètres de votre compte pour modifier le mot de passe.", "placeholders": { "organization": { "content": "$1", @@ -2623,14 +2635,14 @@ "description": "Description of the review at-risk login slide on the at-risk password page carousel" }, "reviewAtRiskLoginSlideImgAltPeriod": { - "message": "Illustration of a list of logins that are at-risk." + "message": "Illustration d'une liste de connexions à risque." }, "generatePasswordSlideDesc": { "message": "Générez rapidement un mot de passe fort et unique grâce au menu de saisie automatique de Bitwarden sur le site à risque.", "description": "Description of the generate password slide on the at-risk password page carousel" }, "generatePasswordSlideImgAltPeriod": { - "message": "Illustration of the Bitwarden autofill menu displaying a generated password." + "message": "Illustration du menu de remplissage automatique de Bitwarden affichant un mot de passe généré." }, "updateInBitwarden": { "message": "Mettre à jour dans Bitwarden" @@ -2640,7 +2652,7 @@ "description": "Description of the update in Bitwarden slide on the at-risk password page carousel" }, "updateInBitwardenSlideImgAltPeriod": { - "message": "Illustration of a Bitwarden’s notification prompting the user to update the login." + "message": "Illustration d'une notification de Bitwarden invitant l'utilisateur à mettre à jour la connexion." }, "turnOnAutofill": { "message": "Activer la saisie automatique" @@ -2714,7 +2726,7 @@ "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", + "message": "Nombre maximal d'accès atteint", "description": "This text will be displayed after a Send has been accessed the maximum amount of times." }, "hideTextByDefault": { @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Vous devez vérifier votre courriel pour utiliser cette fonctionnalité. Vous pouvez vérifier votre courriel dans le coffre web." }, + "masterPasswordSuccessfullySet": { + "message": "Mot de passe principal défini avec succès" + }, "updatedMasterPassword": { "message": "Mot de passe principal mis à jour" }, @@ -3058,13 +3073,13 @@ "message": "Aucun identifiant unique trouvé." }, "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." + "message": "Un mot de passe principal n’est plus requis pour les membres de l’organisation suivante. Veuillez confirmer le domaine ci-dessous auprès de l'administrateur de votre organisation." }, "organizationName": { "message": "Nom de l'organisation" }, "keyConnectorDomain": { - "message": "Key Connector domain" + "message": "Domaine du connecteur clé" }, "leaveOrganization": { "message": "Quitter l'organisation" @@ -3100,7 +3115,7 @@ } }, "exportingIndividualVaultWithAttachmentsDescription": { - "message": "Only the individual vault items including attachments associated with $EMAIL$ will be exported. Organization vault items will not be included", + "message": "Seuls les éléments individuels du coffre-fort, y compris les pièces jointes associées à $EMAIL$, seront exportés. Les éléments du coffre-fort de l'organisation ne seront pas inclus", "placeholders": { "email": { "content": "$1", @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Demande envoyée" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Demande de connexion approuvée pour $EMAIL$ sur $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Vous avez refusé une tentative de connexion depuis un autre appareil. Si c'était vous, essayez de vous reconnecter avec l'appareil." + }, + "device": { + "message": "Appareil" + }, + "loginStatus": { + "message": "Statut de connexion" + }, + "masterPasswordChanged": { + "message": "Mot de passe principal enregistré" + }, "exposedMasterPassword": { "message": "Mot de passe principal exposé" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Mémorisez cet appareil pour faciliter les futures connexions" }, + "manageDevices": { + "message": "Gérer les appareils" + }, + "currentSession": { + "message": "Session en cours" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Bureau", + "description": "Desktop app" + }, + "webVault": { + "message": "Coffre-fort Web" + }, + "webApp": { + "message": "Application web" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Demande en attente" + }, + "firstLogin": { + "message": "Première connexion" + }, + "trusted": { + "message": "Approuvé" + }, + "needsApproval": { + "message": "Requiert une approbation" + }, + "devices": { + "message": "Appareils" + }, + "accessAttemptBy": { + "message": "Tentative d'accès par $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirmer l'accès" + }, + "denyAccess": { + "message": "Refuser l'accès" + }, + "time": { + "message": "Temps" + }, + "deviceType": { + "message": "Type d'appareil" + }, + "loginRequest": { + "message": "Demande de connexion" + }, + "thisRequestIsNoLongerValid": { + "message": "Cette demande n'est plus valide." + }, + "areYouTryingToAccessYourAccount": { + "message": "Essayez-vous d'accéder à votre compte ?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Connexion confirmée pour $EMAIL$ sur $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Vous avez refusé une tentative de connexion depuis un autre appareil. Si c'était vraiment vous, essayez de vous reconnecter avec l'appareil." + }, + "loginRequestHasAlreadyExpired": { + "message": "La demande de connexion a déjà expiré." + }, + "justNow": { + "message": "À l’instant" + }, + "requestedXMinutesAgo": { + "message": "Demandé $MINUTES$ il y a quelques minutes", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "L'approbation de l'appareil est requise. Sélectionnez une option d'approbation ci-dessous :" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Demander l'approbation de l'administrateur" }, + "unableToCompleteLogin": { + "message": "Impossible de terminer la connexion" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Vous devez vous connecter sur un appareil de confiance ou demander à votre administrateur de vous attribuer un mot de passe." + }, "ssoIdentifierRequired": { "message": "Identifiant SSO de l'organisation requis." }, @@ -3627,7 +3780,7 @@ "message": "Appareil de confiance" }, "trustOrganization": { - "message": "Trust organization" + "message": "Faire confiance à l'organisation" }, "trust": { "message": "Faire confiance" @@ -3636,26 +3789,26 @@ "message": "Ne pas faire confiance" }, "organizationNotTrusted": { - "message": "Organization is not trusted" + "message": "L'organisation n'est pas fiable" }, "emergencyAccessTrustWarning": { - "message": "For the security of your account, only confirm if you have granted emergency access to this user and their fingerprint matches what is displayed in their account" + "message": "Pour la sécurité de votre compte, ne confirmez que si vous avez accordé un accès d'urgence à cet utilisateur et que son empreinte digitale correspond à ce qui est affiché dans son compte" }, "orgTrustWarning": { - "message": "For the security of your account, only proceed if you are a member of this organization, have account recovery enabled, and the fingerprint displayed below matches the organization's fingerprint." + "message": "Pour la sécurité de votre compte, ne procédez que si vous êtes membre de cette organisation, que la récupération de compte est activée et que l'empreinte digitale affichée ci-dessous correspond à l'empreinte digitale de l'organisation." }, "orgTrustWarning1": { - "message": "This organization has an Enterprise policy that will enroll you in account recovery. Enrollment will allow organization administrators to change your password. Only proceed if you recognize this organization and the fingerprint phrase displayed below matches the organization's fingerprint." + "message": "Cette organisation dispose d’une politique d’entreprise qui vous inscrira au recouvrement de compte. L'inscription permettra aux administrateurs de l'organisation de modifier votre mot de passe. Ne continuez que si vous reconnaissez cette organisation et que la phrase d'empreinte digitale affichée ci-dessous correspond à l'empreinte digitale de l'organisation." }, "trustUser": { - "message": "Trust user" + "message": "Faire confiance à l'utilisateur" }, "sendsTitleNoItems": { - "message": "Send sensitive information safely", + "message": "Envoyez des informations sensibles en toute sécurité", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendsBodyNoItems": { - "message": "Share files and data securely with anyone, on any platform. Your information will remain end-to-end encrypted while limiting exposure.", + "message": "Partagez des fichiers et des données en toute sécurité avec n'importe qui, sur n'importe quelle plateforme. Vos informations resteront cryptées de bout en bout tout en limitant l'exposition.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "inputRequired": { @@ -3786,7 +3939,7 @@ "description": "Toast message for informing the user that autofill on page load has been set to the default setting." }, "turnOffMasterPasswordPromptToEditField": { - "message": "Désactivez la resaisie du mot de passe maître pour éditer ce champ", + "message": "Désactivez la ressaisie du mot de passe principal pour modifier ce champ", "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." }, "toggleSideNavigation": { @@ -4244,6 +4397,26 @@ "message": "Formats communs", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "La détection de correspondance d'URI est la manière dont Bitwarden identifie les suggestions de remplissage automatique.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Expression régulière\" est une option avancée présentant un risque accru d’exposition des informations d’identification.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Commence par\" est une option avancée présentant un risque accru d’exposition des informations d’identification.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "En savoir plus sur la détection des correspondances", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Options avancées", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continuer vers les paramètres du navigateur ?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4390,7 +4563,7 @@ } }, "viewItemTitleWithField": { - "message": "View item - $ITEMNAME$ - $FIELD$", + "message": "Afficher l'élément - $ITEMNAME$ - $FIELD$", "description": "Title for a link that opens a view for an item.", "placeholders": { "itemname": { @@ -4414,7 +4587,7 @@ } }, "autofillTitleWithField": { - "message": "Autofill - $ITEMNAME$ - $FIELD$", + "message": "Remplissage automatique - $ITEMNAME$ - $FIELD$", "description": "Title for a button that autofills a login item.", "placeholders": { "itemname": { @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copier $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copiez $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, @@ -4584,22 +4757,22 @@ "message": "Télécharger l'application mobile" }, "getTheMobileAppDesc": { - "message": "Access your passwords on the go with the Bitwarden mobile app." + "message": "Accédez à vos mots de passe en déplacement avec l'application mobile Bitwarden." }, "getTheDesktopApp": { "message": "Télécharger l'application de bureau" }, "getTheDesktopAppDesc": { - "message": "Access your vault without a browser, then set up unlock with biometrics to expedite unlocking in both the desktop app and browser extension." + "message": "Accédez à votre coffre-fort sans navigateur, puis configurez le déverrouillage avec la biométrie pour accélérer le déverrouillage à la fois dans l'application de bureau et dans l'extension du navigateur." }, "downloadFromBitwardenNow": { - "message": "Download from bitwarden.com now" + "message": "Téléchargez maintenant depuis bitwarden.com" }, "getItOnGooglePlay": { - "message": "Get it on Google Play" + "message": "Obtenez-le sur Google Play" }, "downloadOnTheAppStore": { - "message": "Download on the App Store" + "message": "Télécharger depuis l’App Store" }, "permanentlyDeleteAttachmentConfirmation": { "message": "Êtes-vous sûr de vouloir supprimer définitivement cette pièce jointe ?" @@ -4806,10 +4979,10 @@ "message": "Entrez l'identifiant html, le nom, l'étiquette aria ou l'espace réservé du champ." }, "editField": { - "message": "Éditer le champ" + "message": "Modifier le champ" }, "editFieldLabel": { - "message": "Éditer $LABEL$", + "message": "Modifier $LABEL$", "placeholders": { "label": { "content": "$1", @@ -5063,16 +5236,16 @@ "message": "Le déverrouillage par biométrie n'est pas disponible actuellement pour une raison inconnue." }, "unlockVault": { - "message": "Unlock your vault in seconds" + "message": "Déverouillez votre coffre en quelques secondes" }, "unlockVaultDesc": { - "message": "You can customize your unlock and timeout settings to more quickly access your vault." + "message": "Vous pouvez personnaliser vos paramètres de déverrouillage et de délai d'attente pour accéder plus rapidement à votre coffre-fort." }, "unlockPinSet": { - "message": "Unlock PIN set" + "message": "Déverrouiller l'ensemble de codes PIN" }, "unlockWithBiometricSet": { - "message": "Unlock with biometrics set" + "message": "Déverrouiller avec l'ensemble biométrique" }, "authenticating": { "message": "Authentification" @@ -5086,7 +5259,7 @@ "description": "Notification message for when a password has been regenerated" }, "saveToBitwarden": { - "message": "Save to Bitwarden", + "message": "Enregistrer dans Bitwarden", "description": "Confirmation message for saving a login to Bitwarden" }, "spaceCharacterDescriptor": { @@ -5291,133 +5464,133 @@ "message": "Changer le mot de passe à risque" }, "settingsVaultOptions": { - "message": "Vault options" + "message": "Options du coffre" }, "emptyVaultDescription": { - "message": "The vault protects more than just your passwords. Store secure logins, IDs, cards and notes securely here." + "message": "Le coffre-fort protège bien plus que vos mots de passe. Stockez ici en toute sécurité des identifiants, des cartes d'identité, des cartes et des notes sécurisés." }, "introCarouselLabel": { - "message": "Welcome to Bitwarden" + "message": "Bienvenue sur Bitwarden" }, "securityPrioritized": { - "message": "Security, prioritized" + "message": "Priorité à la sécurité" }, "securityPrioritizedBody": { - "message": "Save logins, cards, and identities to your secure vault. Bitwarden uses zero-knowledge, end-to-end encryption to protect what’s important to you." + "message": "Enregistrez les identifiants, les cartes et les identités dans votre coffre-fort sécurisé. Bitwarden utilise un cryptage de bout en bout à connaissance nulle pour protéger ce qui est important pour vous." }, "quickLogin": { - "message": "Quick and easy login" + "message": "Connexion rapide et facile" }, "quickLoginBody": { - "message": "Set up biometric unlock and autofill to log into your accounts without typing a single letter." + "message": "Configurez le déverrouillage biométrique et le remplissage automatique pour vous connecter à vos comptes sans taper une seule lettre." }, "secureUser": { - "message": "Level up your logins" + "message": "Améliorez vos connexions" }, "secureUserBody": { - "message": "Use the generator to create and save strong, unique passwords for all your accounts." + "message": "Utilisez le générateur pour créer et enregistrer des mots de passe forts et uniques pour tous vos comptes." }, "secureDevices": { - "message": "Your data, when and where you need it" + "message": "Vos données, quand et où vous en avez besoin" }, "secureDevicesBody": { - "message": "Save unlimited passwords across unlimited devices with Bitwarden mobile, browser, and desktop apps." + "message": "Enregistrez des mots de passe illimités sur un nombre illimité d'appareils avec les applications mobiles, de navigateur et de bureau Bitwarden." }, "nudgeBadgeAria": { "message": "1 notification" }, "emptyVaultNudgeTitle": { - "message": "Import existing passwords" + "message": "Importer des mots de passe existants" }, "emptyVaultNudgeBody": { - "message": "Use the importer to quickly transfer logins to Bitwarden without manually adding them." + "message": "Utilisez l'importateur pour transférer rapidement les connexions vers Bitwarden sans les ajouter manuellement." }, "emptyVaultNudgeButton": { - "message": "Import now" + "message": "Importer maintenant" }, "hasItemsVaultNudgeTitle": { - "message": "Welcome to your vault!" + "message": "Bienvenue dans votre coffre !" }, "hasItemsVaultNudgeBodyOne": { - "message": "Autofill items for the current page" + "message": "Remplissage automatique des éléments de la page actuelle" }, "hasItemsVaultNudgeBodyTwo": { - "message": "Favorite items for easy access" + "message": "Articles préférés pour un accès facile" }, "hasItemsVaultNudgeBodyThree": { - "message": "Search your vault for something else" + "message": "Recherchez autre chose dans votre coffre-fort" }, "newLoginNudgeTitle": { - "message": "Save time with autofill" + "message": "Gagnez du temps avec le remplissage automatique" }, "newLoginNudgeBodyOne": { - "message": "Include a", + "message": "Inclure un", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newLoginNudgeBodyBold": { - "message": "Website", + "message": "Site internet", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newLoginNudgeBodyTwo": { - "message": "so this login appears as an autofill suggestion.", + "message": "cette connexion apparaît donc comme une suggestion de remplissage automatique.", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newCardNudgeTitle": { - "message": "Seamless online checkout" + "message": "Paiement en ligne transparent" }, "newCardNudgeBody": { - "message": "With cards, easily autofill payment forms securely and accurately." + "message": "Avec les cartes, remplissez facilement et automatiquement les formulaires de paiement de manière sécurisée et précise." }, "newIdentityNudgeTitle": { - "message": "Simplify creating accounts" + "message": "Simplifiez la création de comptes" }, "newIdentityNudgeBody": { - "message": "With identities, quickly autofill long registration or contact forms." + "message": "Avec les identités, remplissez rapidement automatiquement les longs formulaires d'inscription ou de contact." }, "newNoteNudgeTitle": { - "message": "Keep your sensitive data safe" + "message": "Gardez vos données sensibles en sécurité" }, "newNoteNudgeBody": { - "message": "With notes, securely store sensitive data like banking or insurance details." + "message": "Avec des notes, stockez en toute sécurité des données sensibles telles que des informations bancaires ou d’assurance." }, "newSshNudgeTitle": { - "message": "Developer-friendly SSH access" + "message": "Accès SSH convivial pour les développeurs" }, "newSshNudgeBodyOne": { - "message": "Store your keys and connect with the SSH agent for fast, encrypted authentication.", + "message": "Stockez vos clés et connectez-vous à l'agent SSH pour une authentification rapide et cryptée.", "description": "Two part message", "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, "newSshNudgeBodyTwo": { - "message": "Learn more about SSH agent", + "message": "En savoir plus sur l'agent SSH", "description": "Two part message", "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, "generatorNudgeTitle": { - "message": "Quickly create passwords" + "message": "Créez rapidement des mots de passe" }, "generatorNudgeBodyOne": { - "message": "Easily create strong and unique passwords by clicking on", + "message": "Créez facilement des mots de passe forts et uniques en cliquant sur", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyTwo": { - "message": "to help you keep your logins secure.", + "message": "pour vous aider à garder vos connexions sécurisées.", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyAria": { - "message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.", + "message": "Créez facilement des mots de passe forts et uniques en cliquant sur le bouton Générer un mot de passe pour vous aider à sécuriser vos connexions.", "description": "Aria label for the body content of the generator nudge" }, "noPermissionsViewPage": { - "message": "You do not have permissions to view this page. Try logging in with a different account." + "message": "Vous n'avez pas les autorisations pour consulter cette page. Essayez de vous connecter avec un autre compte." }, "wasmNotSupported": { - "message": "WebAssembly is not supported on your browser or is not enabled. WebAssembly is required to use the Bitwarden app.", + "message": "WebAssembly n'est pas pris en charge sur votre navigateur ou n'est pas activé. WebAssembly est requis pour utiliser l'application Bitwarden.", "description": "'WebAssembly' is a technical term and should not be translated." } } diff --git a/apps/browser/src/_locales/gl/messages.json b/apps/browser/src/_locales/gl/messages.json index 152f4d7236c..c7d47b61209 100644 --- a/apps/browser/src/_locales/gl/messages.json +++ b/apps/browser/src/_locales/gl/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Buscar na caixa forte" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Editar" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ofrecer actualizar as credenciais xa gardadas" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Código de seguridade" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Debes verificar o teu correo electrónico para empregar esta función. Podes facelo dende a aplicación web." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Contrasinal mestre actualizado" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Contrasinal mestre filtrado" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Lembrar este dispositivo para futuros inicios de sesión imperceptibles" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Aprobación de dispositivo requirida. Selecciona unha das seguintes opcións:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Solicitar aprobación do administrador" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Identificador SSO da organización requirido." }, @@ -4244,6 +4397,26 @@ "message": "Formatos comúns", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Ir ós axustes do navegador?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/he/messages.json b/apps/browser/src/_locales/he/messages.json index 215aa17988d..c13bcad10c6 100644 --- a/apps/browser/src/_locales/he/messages.json +++ b/apps/browser/src/_locales/he/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "חיפוש בכספת" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "ערוך" }, @@ -1173,6 +1176,12 @@ "message": "או לא! לא יכלנו לשמור זאת. נסה להזין את הפרטים באופן ידני.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "שאל אם לעדכן פרטי כניסה קיימת" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "קוד אבטחה" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "לדוגמא" }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "עליך לאמת את הדוא\"ל שלך כדי להשתמש בתכונה זו. ניתן לאמת את הדוא\"ל שלך בכספת הרשת." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "סיסמה ראשית עודכנה" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "בקשה נשלחה" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "סיסמה ראשית חשופה" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "זכור מכשיר זה כדי להפוך כניסות עתידיות לחלקות" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "נדרש אישור מכשיר. בחר אפשרות אישור למטה:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "בקש אישור מנהל" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "נדרש מזהה SSO של הארגון." }, @@ -4244,6 +4397,26 @@ "message": "פורמטים נפוצים", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "להמשיך אל הגדרות הדפדפן?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "העתק $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/hi/messages.json b/apps/browser/src/_locales/hi/messages.json index 64a98de313b..c6ae5e33c6b 100644 --- a/apps/browser/src/_locales/hi/messages.json +++ b/apps/browser/src/_locales/hi/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "वॉल्ट खोजे" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "संपादन करें" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "मौजूदा लॉगिन को अपडेट करने के लिए कहें" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security Code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "इस सुविधा का उपयोग करने के लिए आपको अपने ईमेल को सत्यापित करना होगा। आप वेब वॉल्ट में अपने ईमेल को सत्यापित कर सकते हैं।" }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "अपडेट किया गया मास्टर पासवर्ड" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/hr/messages.json b/apps/browser/src/_locales/hr/messages.json index 69a68e921ae..97bd79f2950 100644 --- a/apps/browser/src/_locales/hr/messages.json +++ b/apps/browser/src/_locales/hr/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Pretraži trezor" }, + "resetSearch": { + "message": "Ponovno postavljanje pretraživanja" + }, "edit": { "message": "Uredi" }, @@ -887,7 +890,7 @@ "message": "Prati korake za dovršetak prijave." }, "followTheStepsBelowToFinishLoggingInWithSecurityKey": { - "message": "Follow the steps below to finish logging in with your security key." + "message": "Prati korake za dovršetak prijave svojim sigurnosnim ključem." }, "restartRegistration": { "message": "Ponovno pokreni registraciju" @@ -1063,7 +1066,7 @@ "message": "Spremi" }, "notificationViewAria": { - "message": "View $ITEMNAME$, opens in new window", + "message": "Pogledaj $ITEMNAME$, otvara u novom prozoru", "placeholders": { "itemName": { "content": "$1" @@ -1072,18 +1075,18 @@ "description": "Aria label for the view button in notification bar confirmation message" }, "notificationNewItemAria": { - "message": "New Item, opens in new window", + "message": "Nova stavka, otvara u novom prozoru", "description": "Aria label for the new item button in notification bar confirmation message when error is prompted" }, "notificationEditTooltip": { - "message": "Edit before saving", + "message": "Uredi prije spremanja", "description": "Tooltip and Aria label for edit button on cipher item" }, "newNotification": { - "message": "New notification" + "message": "Nova obavijest" }, "labelWithNotification": { - "message": "$LABEL$: New notification", + "message": "$LABEL$: Nova obavijest", "description": "Label for the notification with a new login suggestion.", "placeholders": { "label": { @@ -1093,15 +1096,15 @@ } }, "notificationLoginSaveConfirmation": { - "message": "saved to Bitwarden.", + "message": "spremljeno u Bitwarden.", "description": "Shown to user after item is saved." }, "notificationLoginUpdatedConfirmation": { - "message": "updated in Bitwarden.", + "message": "ažurirano u Bitwarenu.", "description": "Shown to user after item is updated." }, "selectItemAriaLabel": { - "message": "Select $ITEMTYPE$, $ITEMNAME$", + "message": "Odaberi $ITEMTYPE$, $ITEMNAME$", "description": "Used by screen readers. $1 is the item type (like vault or folder), $2 is the selected item name.", "placeholders": { "itemType": { @@ -1121,15 +1124,15 @@ "description": "Button text for updating an existing login entry." }, "unlockToSave": { - "message": "Unlock to save this login", + "message": "Otključaj za spremanje ove prijave", "description": "User prompt to take action in order to save the login they just entered." }, "saveLogin": { - "message": "Save login", + "message": "Spremi prijavu", "description": "Prompt asking the user if they want to save their login details." }, "updateLogin": { - "message": "Update existing login", + "message": "Ažuriraj postojeću prijavu", "description": "Prompt asking the user if they want to update an existing login entry." }, "loginSaveSuccess": { @@ -1141,7 +1144,7 @@ "description": "Message displayed when login details are successfully updated." }, "loginUpdateTaskSuccess": { - "message": "Great job! You took the steps to make you and $ORGANIZATION$ more secure.", + "message": "Odlično! Ti i $ORGANIZATION$ ste sada sigurniji.", "placeholders": { "organization": { "content": "$1" @@ -1150,7 +1153,7 @@ "description": "Shown to user after login is updated." }, "loginUpdateTaskSuccessAdditional": { - "message": "Thank you for making $ORGANIZATION$ more secure. You have $TASK_COUNT$ more passwords to update.", + "message": "Hvala što je $ORGANIZATION$ sada sigurnija. Imaš još $TASK_COUNT$ lozinku za ažuriranje.", "placeholders": { "organization": { "content": "$1" @@ -1162,7 +1165,7 @@ "description": "Shown to user after login is updated." }, "nextSecurityTaskAction": { - "message": "Change next password", + "message": "Promjeni sljedeću lozinku", "description": "Message prompting user to undertake completion of another security task." }, "saveFailure": { @@ -1173,6 +1176,12 @@ "message": "Ups! Nismo mogli ovo spasiti. Pokušaj ručno unijeti detalje.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Nakon promjene lozinke, moraš se prijaviti s novom lozinkom. Aktivne sesije na drugim uređajima bit će odjavljene u roku od jednog sata." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Promijeni svoju glavnu lozinku za dovršetak oporavka računa." + }, "enableChangedPasswordNotification": { "message": "Upitaj za ažuriranje trenutne prijave" }, @@ -1366,7 +1375,7 @@ "message": "Značajka nije dostupna" }, "legacyEncryptionUnsupported": { - "message": "Legacy encryption is no longer supported. Please contact support to recover your account." + "message": "Zastarjelo šifriranje više nije podržano. Obrati se podršci za oporavak računa." }, "premiumMembership": { "message": "Premium članstvo" @@ -1600,13 +1609,13 @@ "message": "Prijedlozi auto-ispune" }, "autofillSpotlightTitle": { - "message": "Easily find autofill suggestions" + "message": "Jednostavno pronađi prijedloge auto-ispune" }, "autofillSpotlightDesc": { - "message": "Turn off your browser's autofill settings, so they don't conflict with Bitwarden." + "message": "Isključi postavke auto-ispune preglenika kako se ne bi kosile s Bitwardenom." }, "turnOffBrowserAutofill": { - "message": "Turn off $BROWSER$ autofill", + "message": "Isključi auto-ispunu za $BROWSER$", "placeholders": { "browser": { "content": "$1", @@ -1615,7 +1624,7 @@ } }, "turnOffAutofill": { - "message": "Turn off autofill" + "message": "Isključi auto-ispunu" }, "showInlineMenuLabel": { "message": "Prikaži prijedloge auto-ispune na poljima obrazaca" @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Sigurnosni kôd" }, + "cardNumber": { + "message": "broj kartice" + }, "ex": { "message": "npr." }, @@ -1923,7 +1935,7 @@ "message": "SSH ključ" }, "typeNote": { - "message": "Note" + "message": "Bilješka" }, "newItemHeader": { "message": "Novi $TYPE$", @@ -2157,7 +2169,7 @@ "message": "Postavi svoj PIN kôd za otključavanje Bitwardena. Postavke PIN-a se resetiraju ako se potpuno odjaviš iz aplikacije." }, "setPinCode": { - "message": "You can use this PIN to unlock Bitwarden. Your PIN will be reset if you ever fully log out of the application." + "message": "Ovim PIN-om možeš otključati Bitwarden. Tvoj PIN će se resetirati ako se ikada potpuno odjaviš iz aplikacije." }, "pinRequired": { "message": "Potreban je PIN." @@ -2208,7 +2220,7 @@ "message": "Koristi ovu lozinku" }, "useThisPassphrase": { - "message": "Use this passphrase" + "message": "Koristi ovu fraznu lozinku" }, "useThisUsername": { "message": "Koristi ovo korisničko ime" @@ -2380,7 +2392,7 @@ "message": "Pravila privatnosti" }, "yourNewPasswordCannotBeTheSameAsYourCurrentPassword": { - "message": "Your new password cannot be the same as your current password." + "message": "Tvoja nova lozinka ne može biti ista kao tvoja trenutna lozinka." }, "hintEqualsPassword": { "message": "Podsjetnik za lozinku ne može biti isti kao lozinka." @@ -2488,10 +2500,10 @@ "message": "Organizacijsko pravilo onemogućuje uvoz stavki u tvoj osobni trezor." }, "restrictCardTypeImport": { - "message": "Cannot import card item types" + "message": "Ne mogu uvesti stavke vrste Platna kartica" }, "restrictCardTypeImportDesc": { - "message": "A policy set by 1 or more organizations prevents you from importing cards to your vaults." + "message": "Pravila jedne ili više organizacija onemogućuju uvoz stavke vrste Platna kartica u tvoj trezor." }, "domainsTitle": { "message": "Domene", @@ -2525,7 +2537,7 @@ "message": "Promijeni" }, "changePassword": { - "message": "Change password", + "message": "Promijeni lozinku", "description": "Change password button for browser at risk notification on login." }, "changeButtonTitle": { @@ -2538,7 +2550,7 @@ } }, "atRiskPassword": { - "message": "At-risk password" + "message": "Rizična lozinka" }, "atRiskPasswords": { "message": "Rizične lozinke" @@ -2575,7 +2587,7 @@ } }, "atRiskChangePrompt": { - "message": "Your password for this site is at-risk. $ORGANIZATION$ has requested that you change it.", + "message": "Tvoja lozinka za ovo mjesto je rizična. $ORGANIZATION$ zahtijeva da ju promijeniš.", "placeholders": { "organization": { "content": "$1", @@ -2585,7 +2597,7 @@ "description": "Notification body when a login triggers an at-risk password change request and the change password domain is known." }, "atRiskNavigatePrompt": { - "message": "$ORGANIZATION$ wants you to change this password because it is at-risk. Navigate to your account settings to change the password.", + "message": "$ORGANIZATION$ želi da promjeniš ovu lozinku jer je rizična. Promijeni lozinku u postavkama računa.", "placeholders": { "organization": { "content": "$1", @@ -2623,14 +2635,14 @@ "description": "Description of the review at-risk login slide on the at-risk password page carousel" }, "reviewAtRiskLoginSlideImgAltPeriod": { - "message": "Illustration of a list of logins that are at-risk." + "message": "Ilustracija liste rizičnih prijava." }, "generatePasswordSlideDesc": { "message": "Brzo generiraj jake, jedinstvene lozinke koristeći Bitwarden dijalog auto-ispune direktno na stranici.", "description": "Description of the generate password slide on the at-risk password page carousel" }, "generatePasswordSlideImgAltPeriod": { - "message": "Illustration of the Bitwarden autofill menu displaying a generated password." + "message": "Ilustracija Bitwarden dijaloga auto-ispune s prikazom generirane lozinke." }, "updateInBitwarden": { "message": "Ažuriraj u Bitwardenu" @@ -2640,7 +2652,7 @@ "description": "Description of the update in Bitwarden slide on the at-risk password page carousel" }, "updateInBitwardenSlideImgAltPeriod": { - "message": "Illustration of a Bitwarden’s notification prompting the user to update the login." + "message": "Ilustracija Bitwarden upita za ažuriranje prijave." }, "turnOnAutofill": { "message": "Uključi auto-ispunu" @@ -2714,7 +2726,7 @@ "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", + "message": "Dostignut najveći broj pristupanja", "description": "This text will be displayed after a Send has been accessed the maximum amount of times." }, "hideTextByDefault": { @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Moraš ovjeriti svoju e-poštu u mrežnom trezoru za koritšenje ove značajke." }, + "masterPasswordSuccessfullySet": { + "message": "Glavna lozinka uspješno postavljena" + }, "updatedMasterPassword": { "message": "Glavna lozinka ažurirana" }, @@ -3058,13 +3073,13 @@ "message": "Nije nađen jedinstveni identifikator." }, "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." + "message": "Glavna lozinka više nije obavezna za članove sljedeće organizacije. Provjeri prikazanu domenu sa svojim administratorom." }, "organizationName": { - "message": "Organization name" + "message": "Naziv Organizacije" }, "keyConnectorDomain": { - "message": "Key Connector domain" + "message": "Domena konektora ključa" }, "leaveOrganization": { "message": "Napusti organizaciju" @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Zahtjev poslan" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Prijava za $EMAIL$ potvrđena na uređaju $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Odbijena je prijava na drugom uređaju. Ako si ovo stvarno ti, pokušaj se ponovno prijaviti uređajem." + }, + "device": { + "message": "Uređaj" + }, + "loginStatus": { + "message": "Status prijave" + }, + "masterPasswordChanged": { + "message": "Glavna lozinka promijenjena" + }, "exposedMasterPassword": { "message": "Ukradena glavna lozinka" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Zapamti ovaj uređaj kako bi buduće prijave bile brže" }, + "manageDevices": { + "message": "Upravljaj uređajima" + }, + "currentSession": { + "message": "Trenutna sesija" + }, + "mobile": { + "message": "Mobitel", + "description": "Mobile app" + }, + "extension": { + "message": "Proširenje", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web trezor" + }, + "webApp": { + "message": "Web aplikacija" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Zahtjev u tijeku" + }, + "firstLogin": { + "message": "Prva prijava" + }, + "trusted": { + "message": "Pouzdan" + }, + "needsApproval": { + "message": "Zahtijeva odobrenje" + }, + "devices": { + "message": "Uređaji" + }, + "accessAttemptBy": { + "message": "$EMAIL$ pokušava pristupiti", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Potvrdi pristup" + }, + "denyAccess": { + "message": "Odbij pristup" + }, + "time": { + "message": "Vrijeme" + }, + "deviceType": { + "message": "Vrsta uređaja" + }, + "loginRequest": { + "message": "Zahtjev za prijavu" + }, + "thisRequestIsNoLongerValid": { + "message": "Ovaj zahtjev više nije valjan." + }, + "areYouTryingToAccessYourAccount": { + "message": "Pokušavaš li pristupiti svom računu?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Prijava za $EMAIL$ potvrđena na uređaju $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Odbijena je prijava na drugom uređaju. Ako si ovo stvarno ti, pokušaj se ponovno prijaviti uređajem." + }, + "loginRequestHasAlreadyExpired": { + "message": "Zahtjev za prijavu je već istekao." + }, + "justNow": { + "message": "Upravo" + }, + "requestedXMinutesAgo": { + "message": "Zatraženo prije $MINUTES$ minute/a", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Potrebno je odobriti uređaj. Odaberi metodu odobravanja:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Zatraži odobrenje administratora" }, + "unableToCompleteLogin": { + "message": "Nije moguće dovršiti prijavu" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Moraš se prijaviti na pouzdanom uređaju ili zamoliti administratora da ti dodijeli lozinku." + }, "ssoIdentifierRequired": { "message": "Potreban je identifikator organizacije." }, @@ -3627,35 +3780,35 @@ "message": "Uređaj pouzdan" }, "trustOrganization": { - "message": "Trust organization" + "message": "Vjeruj organizaciji" }, "trust": { - "message": "Trust" + "message": "Vjeruj" }, "doNotTrust": { - "message": "Do not trust" + "message": "Nemoj vjerovati" }, "organizationNotTrusted": { - "message": "Organization is not trusted" + "message": "Organizacija nije pouzdana" }, "emergencyAccessTrustWarning": { - "message": "For the security of your account, only confirm if you have granted emergency access to this user and their fingerprint matches what is displayed in their account" + "message": "Radi sigurnosti tvojeg računa, potvrdi samo ako je ovom korisniku odobren pristup u nuždi i ako se otisak prsta podudara s onim prikazanim u računu" }, "orgTrustWarning": { - "message": "For the security of your account, only proceed if you are a member of this organization, have account recovery enabled, and the fingerprint displayed below matches the organization's fingerprint." + "message": "Radi sigurnosti tvojeg računa, nastavi samo ako si član ove organizacije, imaš omogućen oporavak računa i otisak prsta prikazan u nastavku odgovara otisku prsta organizacije." }, "orgTrustWarning1": { - "message": "This organization has an Enterprise policy that will enroll you in account recovery. Enrollment will allow organization administrators to change your password. Only proceed if you recognize this organization and the fingerprint phrase displayed below matches the organization's fingerprint." + "message": "Ova organizacija ima poslovno pravilo koje će te prijaviti za oporavak računa. Prijava će omogućiti administratorima organizacije da promijene tvoju lozinku. Nastavi samo ako prepoznaješ ovu organizaciju i ako se fraza otiska prsta prikazana u nastavku podudara s otiskom prsta organizacije." }, "trustUser": { - "message": "Trust user" + "message": "Vjeruj korisniku" }, "sendsTitleNoItems": { - "message": "Send sensitive information safely", + "message": "Sigurno pošalji osjetljive podatke", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendsBodyNoItems": { - "message": "Share files and data securely with anyone, on any platform. Your information will remain end-to-end encrypted while limiting exposure.", + "message": "Sigurno dijeli datoteke i podatke s bilo kime, na bilo kojoj platformi. Tvoji podaci ostaju kriptirani uz ograničenje izloženosti.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "inputRequired": { @@ -4244,6 +4397,26 @@ "message": "Uobičajeni oblici", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "Otkrivanje podudaranja URI-ja je način na koji Bitwarden identificira prijedloge za auto-ispunu.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "„Regularni izraz” je napredna mogućnost s povećanim rizikom od otkrivanja vjerodajnica.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "„Počinje s” je napredna mogućnost s povećnim rizikom od otkrivanja vjerodajnica.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Više o otkrivanju podudaranja", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Napredne mogućnosti", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Nastavi na postavke preglednika?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4390,7 +4563,7 @@ } }, "viewItemTitleWithField": { - "message": "View item - $ITEMNAME$ - $FIELD$", + "message": "Pogledaj stavku - $ITEMNAME$ - $FIELD$", "description": "Title for a link that opens a view for an item.", "placeholders": { "itemname": { @@ -4414,7 +4587,7 @@ } }, "autofillTitleWithField": { - "message": "Autofill - $ITEMNAME$ - $FIELD$", + "message": "Auto-ispuna - $ITEMNAME$ - $FIELD$", "description": "Title for a button that autofills a login item.", "placeholders": { "itemname": { @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Kopiraj $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Kopiraj $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, @@ -4575,31 +4748,31 @@ } }, "downloadBitwarden": { - "message": "Download Bitwarden" + "message": "Preuzmi Bitwarden" }, "downloadBitwardenOnAllDevices": { - "message": "Download Bitwarden on all devices" + "message": "Preuzmi Bitwarden na svim uređajima" }, "getTheMobileApp": { - "message": "Get the mobile app" + "message": "Nabavi mobilnu aplikaciju" }, "getTheMobileAppDesc": { - "message": "Access your passwords on the go with the Bitwarden mobile app." + "message": "Pristupi svojim lozinkama bilo gdje s Bitwarden mobilnom aplikacijom." }, "getTheDesktopApp": { - "message": "Get the desktop app" + "message": "Nabavi aplikaciju za stolna računala" }, "getTheDesktopAppDesc": { - "message": "Access your vault without a browser, then set up unlock with biometrics to expedite unlocking in both the desktop app and browser extension." + "message": "Pristupi svojem trezoru bez preglednika, a zatim postavi otključavanje biometrijom za brže otključavanje aplikacije za stolna računala i prošitenja preglednika." }, "downloadFromBitwardenNow": { - "message": "Download from bitwarden.com now" + "message": "Odmah preusmi s bitwarden.com" }, "getItOnGooglePlay": { - "message": "Get it on Google Play" + "message": "Nabavi u Google Play" }, "downloadOnTheAppStore": { - "message": "Download on the App Store" + "message": "Nabavi u App Store" }, "permanentlyDeleteAttachmentConfirmation": { "message": "Sigurno želiš trajno izbrisati ovaj privitak?" @@ -5063,16 +5236,16 @@ "message": "Biometrijsko otključavanje trenutno nije dostupno iz nepoznatog razloga." }, "unlockVault": { - "message": "Unlock your vault in seconds" + "message": "Otključaj svoj trezor u trenu" }, "unlockVaultDesc": { - "message": "You can customize your unlock and timeout settings to more quickly access your vault." + "message": "Možeš prilagoditi postavke otključavanja i vremena isteka za brže pristupanje svojem trezoru." }, "unlockPinSet": { - "message": "Unlock PIN set" + "message": "PIN za otključavanje podešen" }, "unlockWithBiometricSet": { - "message": "Unlock with biometrics set" + "message": "Otključavanje biometrijom postavljeno" }, "authenticating": { "message": "Autentifikacija" @@ -5086,7 +5259,7 @@ "description": "Notification message for when a password has been regenerated" }, "saveToBitwarden": { - "message": "Save to Bitwarden", + "message": "Spremi u Bitwarden", "description": "Confirmation message for saving a login to Bitwarden" }, "spaceCharacterDescriptor": { @@ -5291,133 +5464,133 @@ "message": "Promijeni rizičnu lozinku" }, "settingsVaultOptions": { - "message": "Vault options" + "message": "Mogućnosti trezora" }, "emptyVaultDescription": { - "message": "The vault protects more than just your passwords. Store secure logins, IDs, cards and notes securely here." + "message": "Trezor štiti više od lozinki. Sigurno spremi prijave, identitete, kartice i bilješke." }, "introCarouselLabel": { - "message": "Welcome to Bitwarden" + "message": "Dobrodošli u Bitwarden" }, "securityPrioritized": { - "message": "Security, prioritized" + "message": "Sigurnost je imperativ" }, "securityPrioritizedBody": { - "message": "Save logins, cards, and identities to your secure vault. Bitwarden uses zero-knowledge, end-to-end encryption to protect what’s important to you." + "message": "Spremi prijave, kartice i identitete u svoj sigurni trezor. Bitwarden koristi end-to-end enkripciju bez znanja kako bi zaštitio ono što ti je važno." }, "quickLogin": { - "message": "Quick and easy login" + "message": "Brza i jednostavna prijava" }, "quickLoginBody": { - "message": "Set up biometric unlock and autofill to log into your accounts without typing a single letter." + "message": "Uključi biometrijsko otključavanje i auto-ispunu za prijavu bez utipkavanja ijednog slova." }, "secureUser": { - "message": "Level up your logins" + "message": "Podigni svoje prijave na višu razinu" }, "secureUserBody": { - "message": "Use the generator to create and save strong, unique passwords for all your accounts." + "message": "Koristi generator za stvaranje i spremanje jakih, jedinstvenih lozinki za sve svoje račune." }, "secureDevices": { - "message": "Your data, when and where you need it" + "message": "Tvoji podaci kada god i gdje god su ti potrebni" }, "secureDevicesBody": { - "message": "Save unlimited passwords across unlimited devices with Bitwarden mobile, browser, and desktop apps." + "message": "Spremi neograničen broj lozinki na neograničenom broju uređaja s Bitwarden mobilnom aplikacijom, proširenjem za preglednik i aplikacijom za stolna računala." }, "nudgeBadgeAria": { - "message": "1 notification" + "message": "1 obavijest" }, "emptyVaultNudgeTitle": { - "message": "Import existing passwords" + "message": "Uvezi postojeće lozinke" }, "emptyVaultNudgeBody": { - "message": "Use the importer to quickly transfer logins to Bitwarden without manually adding them." + "message": "Koristi uvoz za brzi prijenos prijava u Bitwarden bez ručnog dodavanja." }, "emptyVaultNudgeButton": { - "message": "Import now" + "message": "Uvezi odmah" }, "hasItemsVaultNudgeTitle": { - "message": "Welcome to your vault!" + "message": "Dobrodošli u svoj trezor!" }, "hasItemsVaultNudgeBodyOne": { - "message": "Autofill items for the current page" + "message": "Auto-ispuni stavke za trenutnu stranicu" }, "hasItemsVaultNudgeBodyTwo": { - "message": "Favorite items for easy access" + "message": "Favoriti za brzi pristup" }, "hasItemsVaultNudgeBodyThree": { - "message": "Search your vault for something else" + "message": "Nađi nešto drugo u svom trezoru" }, "newLoginNudgeTitle": { - "message": "Save time with autofill" + "message": "Uštedi vrijeme s auto-ispunom" }, "newLoginNudgeBodyOne": { - "message": "Include a", + "message": "Uključi", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newLoginNudgeBodyBold": { - "message": "Website", + "message": "web stranicu", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newLoginNudgeBodyTwo": { - "message": "so this login appears as an autofill suggestion.", + "message": "kako bi ova prijava bila predložena u auto-ispuni.", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newCardNudgeTitle": { - "message": "Seamless online checkout" + "message": "Jednostavna online kupnja" }, "newCardNudgeBody": { - "message": "With cards, easily autofill payment forms securely and accurately." + "message": "S karticama jednostavno i sigurno automatski ispunjavaš obrasce za plaćanje." }, "newIdentityNudgeTitle": { - "message": "Simplify creating accounts" + "message": "Pojednostavi stvaranje računa" }, "newIdentityNudgeBody": { - "message": "With identities, quickly autofill long registration or contact forms." + "message": "S identitetima brzo automatski ispunjavaš duge registracijske i kontaktne obrasce." }, "newNoteNudgeTitle": { - "message": "Keep your sensitive data safe" + "message": "Čuvaj svoje osjetljive podatke na sigurnom" }, "newNoteNudgeBody": { - "message": "With notes, securely store sensitive data like banking or insurance details." + "message": "S bilješkama sigurno pohrani svoje osjetljive podatke poput podataka o banci ili osiguranju." }, "newSshNudgeTitle": { - "message": "Developer-friendly SSH access" + "message": "SSH pristup prilagođen programerima" }, "newSshNudgeBodyOne": { - "message": "Store your keys and connect with the SSH agent for fast, encrypted authentication.", + "message": "Pohrani svoje ključeve i poveži se sa SSH agentom za brzu, šifriranu autentifikaciju.", "description": "Two part message", "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, "newSshNudgeBodyTwo": { - "message": "Learn more about SSH agent", + "message": "Saznaj više o SSH agentu", "description": "Two part message", "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, "generatorNudgeTitle": { - "message": "Quickly create passwords" + "message": "Brzo stvori lozinke" }, "generatorNudgeBodyOne": { - "message": "Easily create strong and unique passwords by clicking on", + "message": "Jednostavno stvori jake i jedinstvene lozinke odabirom tipke", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyTwo": { - "message": "to help you keep your logins secure.", + "message": "kako bi tvoje prijave ostale sigurne.", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyAria": { - "message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.", + "message": "Jednostavno stvori jake i sigurne lozinke odabirom tipke Generiraj lozinku kako bi tvoje prijave ostale sigurne.", "description": "Aria label for the body content of the generator nudge" }, "noPermissionsViewPage": { - "message": "You do not have permissions to view this page. Try logging in with a different account." + "message": "Nemaš dozvolu za pregled ove stranice. Pokušaj se prijaviti s drugim računom." }, "wasmNotSupported": { - "message": "WebAssembly is not supported on your browser or is not enabled. WebAssembly is required to use the Bitwarden app.", + "message": "WebAssembly ili nije podržan ili nije omogućen u tvom pregledniku. WebAssembly je potreban za korištenje Bitwarden aplikacije.", "description": "'WebAssembly' is a technical term and should not be translated." } } diff --git a/apps/browser/src/_locales/hu/messages.json b/apps/browser/src/_locales/hu/messages.json index c85de0ab542..70c053ed148 100644 --- a/apps/browser/src/_locales/hu/messages.json +++ b/apps/browser/src/_locales/hu/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Keresés a széfben" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Szerkesztés" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "A jelszó megváltoztatása után be kell jelentkezni az új jelszóval. Az aktív munkamenetek más eszközökön egy órán belül kijelentkeznek." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Módosítsuk a mesterjelszót a fiók helyreállításának befejezéséhez." + }, "enableChangedPasswordNotification": { "message": "Létező bejelentkezés frissítés kérése" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Biztonsági Kód" }, + "cardNumber": { + "message": "kártya szám" + }, "ex": { "message": "példa:" }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "A funkció használatához igazolni kell email címet. Az email cím a webtárban ellenőrizhető." }, + "masterPasswordSuccessfullySet": { + "message": "A mesterjelszó sikeresen beállításra került." + }, "updatedMasterPassword": { "message": "A mesterjelszó frissítésre került." }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "A kérés elküldésre került." }, + "loginRequestApprovedForEmailOnDevice": { + "message": "A bejelentkezési kérelem jóváhagyásra került: $EMAIL$ - $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Megtagadásra került egy bejelentkezési kísérletet egy másik eszközről. Ha valóban mi voltunk, próbáljunk meg újra bejelentkezni az eszközzel." + }, + "device": { + "message": "Eszköz" + }, + "loginStatus": { + "message": "Bejelentkezési állapot" + }, + "masterPasswordChanged": { + "message": "A mesterjelszó mentésre került." + }, "exposedMasterPassword": { "message": "Kiszivárgott mesterjelszó" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Emlékezés az eszközre, hogy zökkenőmentes legyen a jövőbeni bejelentkezés" }, + "manageDevices": { + "message": "Eszközök kezelése" + }, + "currentSession": { + "message": "Jelenlegi munkamenet" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Kiterjesztés", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Asztali", + "description": "Desktop app" + }, + "webVault": { + "message": "Webes széf" + }, + "webApp": { + "message": "Webalkalmazás" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Függőben lévő kérelem" + }, + "firstLogin": { + "message": "Első bejelentkezés" + }, + "trusted": { + "message": "Megbízható" + }, + "needsApproval": { + "message": "Jóváhagyást igényel" + }, + "devices": { + "message": "Eszközök" + }, + "accessAttemptBy": { + "message": "Bejelentkezési kísérlet $EMAIL$ segítségével", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Hozzáférés megerősítése" + }, + "denyAccess": { + "message": "Hozzáférés megtagadása" + }, + "time": { + "message": "Időpont" + }, + "deviceType": { + "message": "Eszköz típus" + }, + "loginRequest": { + "message": "Bejelentkezés kérés" + }, + "thisRequestIsNoLongerValid": { + "message": "A kérés a továbbiakban már nem érvényes." + }, + "areYouTryingToAccessYourAccount": { + "message": "A fiókhoz próbálunk hozzáférni?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "A bejelelentketés $EMAIL$ email címmel megerősítésre került $DEVICE$ eszközön.", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Megtagadásra került egy bejelentkezési kísérletet egy másik eszközről. Ha valóban mi voltunk, próbáljunk meg újra bejelentkezni az eszközzel." + }, + "loginRequestHasAlreadyExpired": { + "message": "A bejelentkezési kérés már lejárt." + }, + "justNow": { + "message": "Éppen most" + }, + "requestedXMinutesAgo": { + "message": "Kérve $MINUTES$ perccel ezelőtt", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Az eszköz jóváhagyása szükséges. Válasszunk egy jóváhagyási lehetőséget lentebb:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Adminisztrátori jóváhagyás kérés" }, + "unableToCompleteLogin": { + "message": "Nem lehet befejezni a bejelentkezést." + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Be kell jelentkezni egy megbízható eszközön vagy meg kell kérni az adminisztrátort, hogy rendeljen hozzá egy jelszót." + }, "ssoIdentifierRequired": { "message": "A szervezeti SSO azonosító megadása szükséges." }, @@ -4244,6 +4397,26 @@ "message": "Általános formátumok", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "Az URI egyezés észlelése az, ahogyan a Bitwarden azonosítja az automatikus kitöltési javaslatokat.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "A \"Normál kifejezés“ egy fejlett opció, amely a hitelesítő adatok növekvő kiszivárgásának kockázatával.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "A \"Kezdés\" egy fejlett opció, amely a hitelesítő adatok kiszivárgásának növekvő kockázatával.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Bővebben az egyezés felismerésről", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Haladó opciók", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "$FIELD$, $VALUE$ másolása", + "copyFieldCipherName": { + "message": "$FIELD$, $CIPHERNAME$ másolása", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/id/messages.json b/apps/browser/src/_locales/id/messages.json index 125cd7ceeab..4ce58ee7618 100644 --- a/apps/browser/src/_locales/id/messages.json +++ b/apps/browser/src/_locales/id/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Cari brankas" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edit" }, @@ -1173,6 +1176,12 @@ "message": "Oh tidak! Kami tidak bisa menyimpan ini. Cobalah memasukkan rincian secara manual.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Tanyakan untuk memperbarui masuk yang sudah ada" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Kode Keamanan" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "mis." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Anda harus memverifikasi email Anda untuk menggunakan fitur ini. Anda dapat memverifikasi email Anda di brankas web." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Kata Sandi Utama Telah Diperbarui" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Permintaan terkirim" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Kata Sandi Utama yang Terpapar" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Ingat perangkat ini untuk membuat login berikutnya lebih lancar" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Persetujuan perangkat diperlukan. Pilih sebuah pilihan persetujuan berikut:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Minta persetujuan admin" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Pengenal SSO organisasi diperlukan." }, @@ -4244,6 +4397,26 @@ "message": "Format umum", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Lanjutkan ke pengaturan peramban?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Salin $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/it/messages.json b/apps/browser/src/_locales/it/messages.json index f1c2cd09ca2..164d46bcec5 100644 --- a/apps/browser/src/_locales/it/messages.json +++ b/apps/browser/src/_locales/it/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Cerca nella cassaforte" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Modifica" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! Il salvataggio non è riuscito. Prova a inserire i dati manualmente.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Chiedi di aggiornare il login esistente" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Codice di sicurezza" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "es." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Devi verificare la tua email per usare questa funzionalità. Puoi verificare la tua email nella cassaforte web." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Password principale aggiornata" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Richiesta inviata" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Password principale violata" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Ricorda questo dispositivo per rendere immediati i futuri accessi" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Approvazione del dispositivo obbligatoria. Seleziona un'opzione di approvazione:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Richiedi approvazione dell'amministratore" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Identificatore SSO dell'organizzazione obbligatorio." }, @@ -4244,6 +4397,26 @@ "message": "Formati comuni", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continua sulle impostazioni del browser?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copia $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/ja/messages.json b/apps/browser/src/_locales/ja/messages.json index fd256961ba6..977d04ca28a 100644 --- a/apps/browser/src/_locales/ja/messages.json +++ b/apps/browser/src/_locales/ja/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "保管庫を検索" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "編集" }, @@ -1173,6 +1176,12 @@ "message": "保存できませんでした。詳細を手動で入力してください。", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "既存のログイン情報の更新を尋ねる" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "セキュリティコード" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "例:" }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "この機能を使用するにはメールアドレスを確認する必要があります。ウェブ保管庫でメールアドレスを確認できます。" }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "マスターパスワードを更新しました" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "リクエストが送信されました" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "流出したマスターパスワード" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "このデバイスを記憶して今後のログインをシームレスにする" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "デバイスの承認が必要です。以下から承認オプションを選択してください:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "管理者の承認を要求する" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "組織の SSO ID が必要です。" }, @@ -4244,6 +4397,26 @@ "message": "一般的な形式", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "ブラウザの設定に進みますか?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "$FIELD$ 「$VALUE$」 をコピー", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/ka/messages.json b/apps/browser/src/_locales/ka/messages.json index 68a6a877e50..da70c255803 100644 --- a/apps/browser/src/_locales/ka/messages.json +++ b/apps/browser/src/_locales/ka/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Search vault" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "ჩასწორება" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/km/messages.json b/apps/browser/src/_locales/km/messages.json index b6a8d1834b4..f4c58318bc1 100644 --- a/apps/browser/src/_locales/km/messages.json +++ b/apps/browser/src/_locales/km/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Search vault" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edit" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/kn/messages.json b/apps/browser/src/_locales/kn/messages.json index 987a2ce79cb..31b285f6780 100644 --- a/apps/browser/src/_locales/kn/messages.json +++ b/apps/browser/src/_locales/kn/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "ವಾಲ್ಟ್ ಹುಡುಕಿ" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "ಎಡಿಟ್" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "ಭದ್ರತಾ ಕೋಡ್ " }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ಉದಾಹರಣೆ" }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲು ನಿಮ್ಮ ಇಮೇಲ್ ಅನ್ನು ನೀವು ಪರಿಶೀಲಿಸಬೇಕು. ವೆಬ್ ವಾಲ್ಟ್ನಲ್ಲಿ ನಿಮ್ಮ ಇಮೇಲ್ ಅನ್ನು ನೀವು ಪರಿಶೀಲಿಸಬಹುದು." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/ko/messages.json b/apps/browser/src/_locales/ko/messages.json index 41c01431ac2..05043de2905 100644 --- a/apps/browser/src/_locales/ko/messages.json +++ b/apps/browser/src/_locales/ko/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "보관함 검색" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "편집" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "현재 로그인으로 업데이트할 건지 묻기" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "보안 코드" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "예)" }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "이 기능을 사용하려면 이메일 인증이 필요합니다. 웹 보관함에서 이메일을 인증할 수 있습니다." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "마스터 비밀번호 변경됨" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "노출된 마스터 비밀번호" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "향후 로그인을 원활하게 하기 위해 이 기기 기억하기" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "기기 승인이 필요합니다. 아래에서 승인 옵션을 선택하세요:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "관리자 인증 필요" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "조직의 SSO 식별자가 필요합니다" }, @@ -4244,6 +4397,26 @@ "message": "일반적인 형식", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "브라우저 설정으로 이동하시겠습니까?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/lt/messages.json b/apps/browser/src/_locales/lt/messages.json index 3c2751d5fbe..5a4f0d8c419 100644 --- a/apps/browser/src/_locales/lt/messages.json +++ b/apps/browser/src/_locales/lt/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Ieškoti saugykloje" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Keisti" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Paprašyti atnaujinti esamą prisijungimą" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Apsaugos kodas" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "pvz." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Turite patvirtinti savo el. paštą, kad galėtumėte naudotis šia funkcija. Savo el. pašto adresą galite patvirtinti žiniatinklio saugykloje." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Naujasis pagrindinis slaptažodis" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Įrenginio patvirtinimas reikalingas. Pasirink patvirtinimo būdą toliau:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Prašyti administratoriaus patvirtinimo" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organizacijos SSO identifikatorius yra reikalingas." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/lv/messages.json b/apps/browser/src/_locales/lv/messages.json index 7108fe15a93..81447182f26 100644 --- a/apps/browser/src/_locales/lv/messages.json +++ b/apps/browser/src/_locales/lv/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Meklēt glabātavā" }, + "resetSearch": { + "message": "Atiestatīt meklēšanu" + }, "edit": { "message": "Labot" }, @@ -1173,6 +1176,12 @@ "message": "Ak nē! Mēs nevarējā šo saglabāt. Jāmēģina pašrocīgi ievadīt informāciju.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Pēc savas paroles nomainīšanas būs nepieciešams pieteikties ar jauno paroli. Spēkā esošajās sesijās citās ierīcēs stundas laikā notiks atteikšanās." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Jānomaina sava galvenā'parole, lai pabeigtu konta atkopi." + }, "enableChangedPasswordNotification": { "message": "Vaicāt atjaunināt esošu pieteikšanās vienumu" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Drošības kods" }, + "cardNumber": { + "message": "kartes numurs" + }, "ex": { "message": "piem." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Ir nepieciešams apliecināt savu e-pasta adresi, lai būtu iespējams izmantot šo iespēju. To var izdarīt tīmekļa glabātavā." }, + "masterPasswordSuccessfullySet": { + "message": "Galvenā parole sekmīgi iestatīta" + }, "updatedMasterPassword": { "message": "Galvenā parole atjaunināta" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Pieprasījums nosūtīts" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "$EMAIL$ pieteikšanās pieprasījums apstiprināts $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Tu noraidīji pieteikšanās mēģinājumu no citas ierīces. Ja tas biji Tu, mēģini pieteikties no ierīces vēlreiz!" + }, + "device": { + "message": "Ierīce" + }, + "loginStatus": { + "message": "Pieteikšanās stāvoklis" + }, + "masterPasswordChanged": { + "message": "Galvenā parole saglabāta" + }, "exposedMasterPassword": { "message": "Noplūdusi galvenā parole" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Atcerēties šo ierīci, lai nākotnes pieteikšanos padarītu plūdenāku" }, + "manageDevices": { + "message": "Pārvaldīt ierīces" + }, + "currentSession": { + "message": "Pašreizējā sesija" + }, + "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" + }, + "webApp": { + "message": "Tīmekļa lietotne" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Pieprasījums gaida uz apstrādi" + }, + "firstLogin": { + "message": "Pirmā pieteikšanās" + }, + "trusted": { + "message": "Uzticama" + }, + "needsApproval": { + "message": "Nepieciešams apstiprinājums" + }, + "devices": { + "message": "Ierīces" + }, + "accessAttemptBy": { + "message": "$EMAIL$ piekļuves mēģinājums", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Apstiprināt piekļuvi" + }, + "denyAccess": { + "message": "Noraidīt piekļuvi" + }, + "time": { + "message": "Laiks" + }, + "deviceType": { + "message": "Ierīces veids" + }, + "loginRequest": { + "message": "Pieteikšanās pieprasījums" + }, + "thisRequestIsNoLongerValid": { + "message": "Šis pieprasījums vairs nav derīgs." + }, + "areYouTryingToAccessYourAccount": { + "message": "Vai mēģini piekļūt savam kontam?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "$EMAIL$ pieteikšanās apstiprināta ierīcē $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Tu noraidīji pieteikšanās mēģinājumu no citas ierīces. Ja tas tiešām biji Tu, mēģini pieteikties no ierīces vēlreiz!" + }, + "loginRequestHasAlreadyExpired": { + "message": "Pieteikšanās pieprasījuma derīgums jau ir beidzies." + }, + "justNow": { + "message": "Tikko" + }, + "requestedXMinutesAgo": { + "message": "Pieprasīts pirms $MINUTES$ minūtēm", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Nepieciešams ierīces apstiprinājums. Zemāk jāatlasa apstiprinājuma iespēja:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Pieprasīt pārvaldītāja apstiprinājumu" }, + "unableToCompleteLogin": { + "message": "Nevar pabeigt pieteikšanos" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Nepieciešams pieteikties uzticamā ierīcē vai vaicāt pārvaldītājam, lai piešķir paroli." + }, "ssoIdentifierRequired": { "message": "Ir nepieciešams apvienības SSO identifikators." }, @@ -4244,6 +4397,26 @@ "message": "Izplatīti veidoli", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI atbilstības noteikšana ir veids, kā Bitwarden atpazīst automātiskās aizpildes ieteikumus.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regulārā izteiksme\" ir lietpratējiem paredzēta iespēja ar paaugstinātu piekļuves datu atklāšanas bīstamību.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Sākas ar' ir lietpratējiem paredzēta iespēja ar paaugstinātu piekļuves datu atklāšanas bīstamību.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Vairāk par atbilstības noteikšanu", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Papildu iespējas", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Pāriet uz pārlūka iestatījumiem?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Ievietot starpliktuvē $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Ievietot starpliktuvē $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/ml/messages.json b/apps/browser/src/_locales/ml/messages.json index 7708ea4b940..11709a4611b 100644 --- a/apps/browser/src/_locales/ml/messages.json +++ b/apps/browser/src/_locales/ml/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "വാൾട് തിരയുക" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "തിരുത്തുക" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "സുരക്ഷാ കോഡ്" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ഉദാഹരണം." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/mr/messages.json b/apps/browser/src/_locales/mr/messages.json index 36fdc74f521..e7d06e4d5f9 100644 --- a/apps/browser/src/_locales/mr/messages.json +++ b/apps/browser/src/_locales/mr/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "तिजोरीत शोधा" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edit" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/my/messages.json b/apps/browser/src/_locales/my/messages.json index b6a8d1834b4..f4c58318bc1 100644 --- a/apps/browser/src/_locales/my/messages.json +++ b/apps/browser/src/_locales/my/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Search vault" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edit" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/nb/messages.json b/apps/browser/src/_locales/nb/messages.json index 747e37aadd6..cf3589c4fc9 100644 --- a/apps/browser/src/_locales/nb/messages.json +++ b/apps/browser/src/_locales/nb/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Søk i hvelvet" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Rediger" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Spør om å oppdatere eksisterende innlogginger" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Sikkerhetskode" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "f.eks." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Du må bekrefte e-posten din for å bruke denne funksjonen. Du kan bekrefte e-postadressen din i netthvelvet." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Oppdaterte hovedpassordet" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Forespørsel sendt" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Eksponert hovedpassord" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Be om administratorgodkjennelse" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Vanlige formater", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Vil du fortsette til nettleserinnstillingene?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Kopier $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/ne/messages.json b/apps/browser/src/_locales/ne/messages.json index b6a8d1834b4..f4c58318bc1 100644 --- a/apps/browser/src/_locales/ne/messages.json +++ b/apps/browser/src/_locales/ne/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Search vault" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edit" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/nl/messages.json b/apps/browser/src/_locales/nl/messages.json index af63059ebd3..0c2bd31935f 100644 --- a/apps/browser/src/_locales/nl/messages.json +++ b/apps/browser/src/_locales/nl/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Kluis doorzoeken" }, + "resetSearch": { + "message": "Zoekopdracht resetten" + }, "edit": { "message": "Bewerken" }, @@ -1173,6 +1176,12 @@ "message": "Oh nee! We konden dit niet opslaan. Probeer de gegevens handmatig in te voeren.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Na het wijzigen van je wachtwoord moet je inloggen met je nieuwe wachtwoord. Actieve sessies op andere apparaten worden binnen één uur uitgelogd." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Wijzig je hoofdwachtwoord om je account te herstellen." + }, "enableChangedPasswordNotification": { "message": "Vraag om bijwerken bestaande login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Beveiligingscode" }, + "cardNumber": { + "message": "kaartnummer" + }, "ex": { "message": "bijv." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Je moet je e-mailadres verifiëren om deze functie te gebruiken. Je kunt je e-mailadres verifiëren in de kluis." }, + "masterPasswordSuccessfullySet": { + "message": "Hoofdwachtwoord succesvol ingesteld" + }, "updatedMasterPassword": { "message": "Hoofdwachtwoord bijgewerkt" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Verzoek verzonden" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Inloggen voor $EMAIL$ goedgekeurd op $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Je hebt een inlogpoging vanaf een ander apparaat geweigerd. Als je dit toch echt zelf was, probeer dan opnieuw in te loggen met het apparaat." + }, + "device": { + "message": "Apparaat" + }, + "loginStatus": { + "message": "Loginstatus" + }, + "masterPasswordChanged": { + "message": "Hoofdwachtwoord gewijzigd" + }, "exposedMasterPassword": { "message": "Gelekt hoofdwachtwoord" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Onthoud dit apparaat om in het vervolg naadloos in te loggen" }, + "manageDevices": { + "message": "Apparaten beheren" + }, + "currentSession": { + "message": "Huidige sessie" + }, + "mobile": { + "message": "Mobiel", + "description": "Mobile app" + }, + "extension": { + "message": "Extensie", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Webkluis" + }, + "webApp": { + "message": "Web-app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Verzoek in behandeling" + }, + "firstLogin": { + "message": "Eerst inloggen" + }, + "trusted": { + "message": "Vertrouwd" + }, + "needsApproval": { + "message": "Heeft goedkeuring nodig" + }, + "devices": { + "message": "Apparaten" + }, + "accessAttemptBy": { + "message": "Inlogpoging door $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Toegang bevestigen" + }, + "denyAccess": { + "message": "Toegang weigeren" + }, + "time": { + "message": "Tijd" + }, + "deviceType": { + "message": "Apparaattype" + }, + "loginRequest": { + "message": "Log-inverzoek" + }, + "thisRequestIsNoLongerValid": { + "message": "Dit verzoek is niet langer geldig." + }, + "areYouTryingToAccessYourAccount": { + "message": "Probeer je toegang te krijgen tot je account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Inloggen voor $EMAIL$ bevestigd op $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Je hebt een inlogpoging vanaf een ander apparaat geweigerd. Als je dit toch echt zelf was, probeer dan opnieuw in te loggen met het apparaat." + }, + "loginRequestHasAlreadyExpired": { + "message": "Inlogverzoek is al verlopen." + }, + "justNow": { + "message": "Zojuist" + }, + "requestedXMinutesAgo": { + "message": "$MINUTES$ minuten geleden aangevraagd", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Apparaattoestemming vereist. Kies een goedkeuringsoptie hieronder:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Goedkeuring van beheerder vragen" }, + "unableToCompleteLogin": { + "message": "Kan login niet voltooien" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Je moet inloggen op een vertrouwd apparaat of je beheerder vragen om je een wachtwoord toe te wijzen." + }, "ssoIdentifierRequired": { "message": "Organisatie SSO-identificatie vereist." }, @@ -4244,6 +4397,26 @@ "message": "Veelvoorkomende formaten", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI-matche-detectie is hoe Bitwarden invulsuggesties herkent.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Reguliere expressie\" is een geavanceerde optie met een verhoogd risico op het blootstellen van inloggegevens.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Begint met\" is een geavanceerde optie met een verhoogd risico op het blootstellen van inloggegevens.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Lees meer over overeenkomstdetectie", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Geavanceerde opties", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Doorgaan naar browserinstellingen?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "$FIELD$, $VALUE$ kopiëren", + "copyFieldCipherName": { + "message": "$FIELD$, $CIPHERNAME$ kopiëren", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/nn/messages.json b/apps/browser/src/_locales/nn/messages.json index b6a8d1834b4..f4c58318bc1 100644 --- a/apps/browser/src/_locales/nn/messages.json +++ b/apps/browser/src/_locales/nn/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Search vault" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edit" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/or/messages.json b/apps/browser/src/_locales/or/messages.json index b6a8d1834b4..f4c58318bc1 100644 --- a/apps/browser/src/_locales/or/messages.json +++ b/apps/browser/src/_locales/or/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Search vault" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edit" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json index 9bb4d992b37..26f4cbaa5d6 100644 --- a/apps/browser/src/_locales/pl/messages.json +++ b/apps/browser/src/_locales/pl/messages.json @@ -3,18 +3,18 @@ "message": "Bitwarden" }, "appLogoLabel": { - "message": "Bitwarden logo" + "message": "Logo Bitwarden" }, "extName": { - "message": "Menedżer Haseł Bitwarden", + "message": "Menedżer haseł Bitwarden", "description": "Extension name, MUST be less than 40 characters (Safari restriction)" }, "extDesc": { - "message": "W domu, w pracy, lub w ruchu, Bitwarden z łatwością zabezpiecza Twoje hasła, passkeys i poufne informacje", + "message": "W domu, w pracy lub w podróży Bitwarden zabezpiecza wszystkie hasła, klucze dostępu i poufne informacje.", "description": "Extension description, MUST be less than 112 characters (Safari restriction)" }, "loginOrCreateNewAccount": { - "message": "Zaloguj się lub utwórz nowe konto, aby uzyskać dostęp do Twojego bezpiecznego sejfu." + "message": "Zaloguj się lub utwórz nowe konto, aby uzyskać dostęp do bezpiecznego sejfu." }, "inviteAccepted": { "message": "Zaproszenie zostało zaakceptowane" @@ -23,13 +23,13 @@ "message": "Utwórz konto" }, "newToBitwarden": { - "message": "Nowy użytkownik Bitwarden?" + "message": "Nowy w Bitwarden?" }, "logInWithPasskey": { - "message": "Zaloguj się używając klucza dostępu" + "message": "Logowanie kluczem dostępu" }, "useSingleSignOn": { - "message": "Użyj jednokrotnego logowania" + "message": "Użyj logowania jednokrotnego" }, "welcomeBack": { "message": "Witaj ponownie" @@ -38,7 +38,7 @@ "message": "Ustaw silne hasło" }, "finishCreatingYourAccountBySettingAPassword": { - "message": "Ukończ tworzenie konta poprzez ustawienie hasła" + "message": "Zakończ tworzenie konta poprzez ustawienie hasła" }, "enterpriseSingleSignOn": { "message": "Logowanie jednokrotne" @@ -65,7 +65,7 @@ "message": "Podpowiedź do hasła głównego może pomóc Ci przypomnieć hasło, jeśli je zapomnisz." }, "masterPassHintText": { - "message": "Jeśli zapomnisz hasła, podpowiedź hasła może zostać wysłana na Twój adres e-mail. $CURRENT$ z $MAXIMUM$ znaków.", + "message": "Podpowiedź do hasła zostanie wysłana na adres e-mail, jeśli je zapomnisz. Liczba znaków: $CURRENT$ / $MAXIMUM$.", "placeholders": { "current": { "content": "$1", @@ -84,7 +84,7 @@ "message": "Podpowiedź do hasła głównego (opcjonalnie)" }, "passwordStrengthScore": { - "message": "Siła hasła: $SCORE$", + "message": "Siła hasła wynosi $SCORE$", "placeholders": { "score": { "content": "$1", @@ -96,7 +96,7 @@ "message": "Dołącz do organizacji" }, "joinOrganizationName": { - "message": "Dołącz do $ORGANIZATIONNAME$", + "message": "Dołącz do organizacji $ORGANIZATIONNAME$", "placeholders": { "organizationName": { "content": "$1", @@ -105,7 +105,7 @@ } }, "finishJoiningThisOrganizationBySettingAMasterPassword": { - "message": "Zakończ dołączanie do tej organizacji przez ustawienie hasła głównego." + "message": "Zakończ dołączanie do organizacji poprzez ustawienie hasła głównego." }, "tab": { "message": "Karta" @@ -132,7 +132,7 @@ "message": "Kopiuj hasło" }, "copyPassphrase": { - "message": "Skopiuj hasło wyrazowe" + "message": "Kopiuj hasło wyrazowe" }, "copyNote": { "message": "Kopiuj notatkę" @@ -159,19 +159,19 @@ "message": "Kopiuj numer PESEL" }, "copyPassportNumber": { - "message": "Skopiuj numer paszportu" + "message": "Kopiuj numer paszportu" }, "copyLicenseNumber": { - "message": "Kopiuj numer licencji" + "message": "Kopiuj numer prawa jazdy" }, "copyPrivateKey": { - "message": "Skopiuj klucz prywatny" + "message": "Kopiuj klucz prywatny" }, "copyPublicKey": { - "message": "Skopiuj klucz publiczny" + "message": "Kopiuj klucz publiczny" }, "copyFingerprint": { - "message": "Skopiuj odcisk palca" + "message": "Kopiuj odcisk klucza" }, "copyCustomField": { "message": "Kopiuj $FIELD$", @@ -193,26 +193,26 @@ "description": "Copy to clipboard" }, "fill": { - "message": "Wypełnij", + "message": "Uzupełnij", "description": "This string is used on the vault page to indicate autofilling. Horizontal space is limited in the interface here so try and keep translations as concise as possible." }, "autoFill": { "message": "Autouzupełnianie" }, "autoFillLogin": { - "message": "Autouzupełnianie logowania" + "message": "Uzupełnij dane logowania" }, "autoFillCard": { - "message": "Autouzupełnianie karty" + "message": "Uzupełnij kartę" }, "autoFillIdentity": { - "message": "Autouzupełnianie tożsamości" + "message": "Uzupełnij tożsamość" }, "fillVerificationCode": { - "message": "Wypełnij kod weryfikacyjny" + "message": "Uzupełnij kod weryfikacyjny" }, "fillVerificationCodeAria": { - "message": "Wypełnij kod weryfikacyjny", + "message": "Uzupełnij kod weryfikacyjny", "description": "Aria label for the heading displayed the inline menu for totp code autofill" }, "generatePasswordCopied": { @@ -246,7 +246,7 @@ "message": "Zaloguj się do sejfu" }, "autoFillInfo": { - "message": "Brak danych logowania do użycia przez autouzupełnienie na obecnej karcie przeglądarki." + "message": "Brak dostępnych danych logowania dla obecnej karty przeglądarki." }, "addLogin": { "message": "Dodaj dane logowania" @@ -258,13 +258,13 @@ "message": "Adres e-mail konta" }, "requestHint": { - "message": "Poproś o podpowiedź" + "message": "Uzyskaj podpowiedź" }, "requestPasswordHint": { - "message": "Poproś o podpowiedź do hasła" + "message": "Uzyskaj podpowiedź do hasła" }, "enterYourAccountEmailAddressAndYourPasswordHintWillBeSentToYou": { - "message": "Wprowadź adres e-mail swojego konta, a podpowiedź hasła zostanie wysłana do Ciebie" + "message": "Wpisz adres e-mail konta. Podpowiedź do hasła zostanie wysłana na adres e-mail" }, "getMasterPasswordHint": { "message": "Uzyskaj podpowiedź do hasła głównego" @@ -291,32 +291,32 @@ "message": "Zmień hasło główne" }, "continueToWebApp": { - "message": "Kontynuować do aplikacji internetowej?" + "message": "Przejść do aplikacji internetowej?" }, "continueToWebAppDesc": { - "message": "Odkryj więcej funkcji swojego konta Bitwarden w aplikacji internetowej." + "message": "Odkryj więcej funkcji konta Bitwarden w aplikacji internetowej." }, "continueToHelpCenter": { - "message": "Kontynuować do centrum pomocy?" + "message": "Przejść do centrum pomocy?" }, "continueToHelpCenterDesc": { "message": "Dowiedz się więcej o tym, jak korzystać z centrum pomocy Bitwarden." }, "continueToBrowserExtensionStore": { - "message": "Kontynuować do sklepu z rozszerzeniami przeglądarki?" + "message": "Przejść do sklepu z rozszerzeniami przeglądarki?" }, "continueToBrowserExtensionStoreDesc": { - "message": "Pomóż innym dowiedzieć się, czy Bitwarden jest dla nich odpowiedni. Odwiedź swój sklep z rozszerzeniami do przeglądarki i zostaw ocenę." + "message": "Pomóż innym sprawdzić, czy Bitwarden jest dla nich odpowiedni. Odwiedź sklep z rozszerzeniami przeglądarki i zostaw ocenę." }, "changeMasterPasswordOnWebConfirmation": { - "message": "Możesz zmienić swoje hasło główne w aplikacji internetowej Bitwarden." + "message": "Możesz zmienić hasło główne w aplikacji internetowej Bitwarden." }, "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", + "message": "Twój 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." }, "twoStepLogin": { @@ -335,7 +335,7 @@ "message": "Więcej od Bitwarden" }, "continueToBitwardenDotCom": { - "message": "Kontynuować do bitwarden.com?" + "message": "Przejść do bitwarden.com?" }, "bitwardenForBusiness": { "message": "Bitwarden dla biznesu" @@ -344,7 +344,7 @@ "message": "Bitwarden Authenticator" }, "continueToAuthenticatorPageDesc": { - "message": "Bitwarden Authenticator pozwala na przechowywanie kluczy uwierzytelniających i generowanie kodów TOTP do dwuetapowego procesu weryfikacji. Dowiedz się więcej na stronie bitwarden.com" + "message": "Bitwarden Authenticator umożliwia przechowywanie kluczy uwierzytelniających i generowanie kodów TOTP dla weryfikacji dwustopniowej. Dowiedz się wiecej na bitwarden.com" }, "bitwardenSecretsManager": { "message": "Menedżer sekretów Bitwarden" @@ -362,7 +362,7 @@ "message": "Darmowy plan rodzinny" }, "freeBitwardenFamiliesPageDesc": { - "message": "Masz prawo do bezpłatengo planu rodzinnego Bitwarden. Zrealizuj tę ofertę już dziś w aplikacji internetowej." + "message": "Kwalifikujesz się do bezpłatnego planu rodzinnego. Skorzystaj z oferty już dziś w aplikacji internetowej." }, "version": { "message": "Wersja" @@ -398,16 +398,16 @@ "message": "Nazwa folderu" }, "folderHintText": { - "message": "Zagnieżdżaj foldery dodając nazwę folderu nadrzędnego, a następnie “/”. Przykład: Społeczne/Fora" + "message": "Utwórz podfolder, dodając nazwę folderu nadrzędnego przed znakiem „/”. Przykład: Social/Forums" }, "noFoldersAdded": { "message": "Nie dodano folderów" }, "createFoldersToOrganize": { - "message": "Twórz foldery, aby zorganizować elementy swojego sejfu" + "message": "Twórz foldery, aby zorganizować elementy sejfu" }, "deleteFolderPermanently": { - "message": "Czy na pewno chcesz trwale usunąć ten folder?" + "message": "Czy na pewno chcesz usunąć trwale folder?" }, "deleteFolder": { "message": "Usuń folder" @@ -425,7 +425,7 @@ "message": "Centrum pomocy Bitwarden" }, "communityForums": { - "message": "Przeglądaj fora społeczności Bitwarden" + "message": "Odwiedź forum społeczności Bitwarden" }, "contactSupport": { "message": "Skontaktuj się z pomocą techniczną Bitwarden" @@ -447,7 +447,7 @@ "description": "Short for 'credential generator'." }, "passGenInfo": { - "message": "Automatycznie wygeneruj silne, unikatowe hasła dla swoich loginów." + "message": "Automatycznie generuj silne i unikalne hasła." }, "bitWebVaultApp": { "message": "Aplikacja internetowa Bitwarden" @@ -474,7 +474,7 @@ "message": "Nazwa użytkownika została wygenerowana" }, "emailGenerated": { - "message": "E-mail został wygenerowany" + "message": "Adres e-mail został wygenerowany" }, "regeneratePassword": { "message": "Wygeneruj ponownie hasło" @@ -490,7 +490,7 @@ "description": "Card header for password generator include block" }, "uppercaseDescription": { - "message": "Uwzględnij wielkie litery", + "message": "Wielkie litery", "description": "Tooltip for the password generator uppercase character checkbox" }, "uppercaseLabel": { @@ -498,7 +498,7 @@ "description": "Label for the password generator uppercase character checkbox" }, "lowercaseDescription": { - "message": "Uwzględnij małe litery", + "message": "Małe litery", "description": "Full description for the password generator lowercase character checkbox" }, "lowercaseLabel": { @@ -506,7 +506,7 @@ "description": "Label for the password generator lowercase character checkbox" }, "numbersDescription": { - "message": "Uwzględnij cyfry", + "message": "Cyfry", "description": "Full description for the password generator numbers checkbox" }, "numbersLabel": { @@ -514,7 +514,7 @@ "description": "Label for the password generator numbers checkbox" }, "specialCharactersDescription": { - "message": "Uwzględnij znaki specjalne", + "message": "Znaki specjalne", "description": "Full description for the password generator special characters checkbox" }, "numWords": { @@ -531,10 +531,10 @@ "message": "Uwzględnij cyfry" }, "minNumbers": { - "message": "Minimalna liczba cyfr" + "message": "Min. liczba cyfr" }, "minSpecial": { - "message": "Minimalna liczba znaków specjalnych" + "message": "Min. liczba znaków specjalnych" }, "avoidAmbiguous": { "message": "Unikaj niejednoznacznych znaków", @@ -547,14 +547,17 @@ "searchVault": { "message": "Szukaj w sejfie" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edytuj" }, "view": { - "message": "Zobacz" + "message": "Pokaż" }, "noItemsInList": { - "message": "Brak elementów." + "message": "Brak elementów do wyświetlenia." }, "itemInformation": { "message": "Informacje o elemencie" @@ -566,22 +569,22 @@ "message": "Hasło" }, "totp": { - "message": "Sekret uwierzytelniania" + "message": "Klucz uwierzytelniający" }, "passphrase": { "message": "Hasło wyrazowe" }, "favorite": { - "message": "Ulubione" + "message": "Dodaj do ulubionych" }, "unfavorite": { "message": "Usuń z ulubionych" }, "itemAddedToFavorites": { - "message": "Element dodany do ulubionych" + "message": "Element został dodany do ulubionych" }, "itemRemovedFromFavorites": { - "message": "Element usunięty z ulubionych" + "message": "Element został usunięty z ulubionych" }, "notes": { "message": "Notatki" @@ -602,16 +605,16 @@ "message": "Usuń element" }, "viewItem": { - "message": "Zobacz element" + "message": "Pokaż element" }, "launch": { "message": "Uruchom" }, "launchWebsite": { - "message": "Otwórz stronę" + "message": "Uruchom stronę internetową" }, "launchWebsiteName": { - "message": "Otwórz stronę internetową $ITEMNAME$", + "message": "Uruchom stronę internetową $ITEMNAME$", "placeholders": { "itemname": { "content": "$1", @@ -620,10 +623,10 @@ } }, "website": { - "message": "Strona" + "message": "Strona internetowa" }, "toggleVisibility": { - "message": "Pokaż / Ukryj" + "message": "Pokaż / ukryj" }, "manage": { "message": "Zarządzaj" @@ -635,13 +638,13 @@ "message": "Opcje odblokowania" }, "unlockMethodNeededToChangeTimeoutActionDesc": { - "message": "Ustaw metodę odblokowania, aby zmienić czas blokowania sejfu." + "message": "Ustaw metodę odblokowania, aby zmienić sposób blokowania sejfu." }, "unlockMethodNeeded": { - "message": "Ustaw metodę odblokowania w Ustawieniach" + "message": "Ustaw metodę odblokowania w ustawieniach" }, "sessionTimeoutHeader": { - "message": "Limit czasu sesji" + "message": "Blokada aplikacji" }, "vaultTimeoutHeader": { "message": "Blokowanie sejfu" @@ -656,10 +659,10 @@ "message": "Przeglądarka nie obsługuje łatwego kopiowania schowka. Skopiuj element ręcznie." }, "verifyYourIdentity": { - "message": "Potwierdź swoją tożsamość" + "message": "Zweryfikuj tożsamość" }, "weDontRecognizeThisDevice": { - "message": "Nie rozpoznajemy tego urządzenia. Wpisz kod wysłany na Twój e-mail, aby zweryfikować tożsamość." + "message": "Nie rozpoznajemy tego urządzenia. Wpisz kod wysłany na adres e-mail, aby zweryfikować swoją tożsamość." }, "continueLoggingIn": { "message": "Kontynuuj logowanie" @@ -668,10 +671,10 @@ "message": "Sejf jest zablokowany. Zweryfikuj swoją tożsamość, aby kontynuować." }, "yourVaultIsLockedV2": { - "message": "Twój sejf jest zablokowany" + "message": "Sejf jest zablokowany" }, "yourAccountIsLocked": { - "message": "Twoje konto jest zablokowane" + "message": "Konto jest zablokowane" }, "or": { "message": "lub" @@ -699,13 +702,13 @@ "message": "Blokowanie sejfu" }, "vaultTimeout1": { - "message": "Limit czasu" + "message": "Blokada aplikacji" }, "lockNow": { "message": "Zablokuj" }, "lockAll": { - "message": "Zablokuj wszystkie" + "message": "Zablokuj wszystko" }, "immediately": { "message": "Natychmiast" @@ -741,10 +744,10 @@ "message": "4 godziny" }, "onLocked": { - "message": "Po zablokowaniu komputera" + "message": "Po zablokowaniu urządzenia" }, "onRestart": { - "message": "Po restarcie przeglądarki" + "message": "Po uruchomieniu przeglądarki" }, "never": { "message": "Nigdy" @@ -759,7 +762,7 @@ "message": "Hasło główne" }, "masterPassImportant": { - "message": "Twoje hasło główne nie może zostać odzyskane, jeśli je zapomnisz!" + "message": "Zapomniane hasło główne nie może zostać odzyskane!" }, "masterPassHintLabel": { "message": "Podpowiedź do hasła głównego" @@ -780,7 +783,7 @@ "message": "Wymagane jest ponowne wpisanie hasła głównego." }, "masterPasswordMinlength": { - "message": "Hasło główne musi zawierać co najmniej $VALUE$ znaki(-ów).", + "message": "Hasło główne musi składać się z co najmniej $VALUE$ znaków.", "description": "The Master Password must be at least a specific number of characters long.", "placeholders": { "value": { @@ -796,10 +799,10 @@ "message": "Konto zostało utworzone! Teraz możesz się zalogować." }, "newAccountCreated2": { - "message": "Twoje nowe konto zostało utworzone!" + "message": "Nowe konto zostało utworzone!" }, "youHaveBeenLoggedIn": { - "message": "Zalogowano Cię!" + "message": "Zalogowano!" }, "youSuccessfullyLoggedIn": { "message": "Zalogowałeś się pomyślnie" @@ -808,7 +811,7 @@ "message": "Możesz zamknąć to okno" }, "masterPassSent": { - "message": "Wysłaliśmy Tobie wiadomość e-mail z podpowiedzią do hasła głównego." + "message": "Wysłaliśmy wiadomość z podpowiedzią do hasła głównego." }, "verificationCodeRequired": { "message": "Kod weryfikacyjny jest wymagany." @@ -833,25 +836,25 @@ "message": "Nie można zastosować autouzupełnienia na tej stronie. Skopiuj i wklej informacje ręcznie." }, "totpCaptureError": { - "message": "Nie można zeskanować kodu QR z bieżącej strony" + "message": "Nie można zeskanować kodu QR z obecnej strony" }, "totpCaptureSuccess": { "message": "Klucz uwierzytelniający został dodany" }, "totpCapture": { - "message": "Zeskanuj kod QR z bieżącej strony" + "message": "Zeskanuj kod QR z obecnej strony" }, "totpHelperTitle": { - "message": "Spraw, aby dwuetapowa weryfikacja była bezproblemowa" + "message": "Bezproblemowa weryfikacja dwustopniowa" }, "totpHelper": { - "message": "Bitwarden może przechowywać i wypełniać kody weryfikacyjne. Skopiuj i wklej klucz do tego pola." + "message": "Bitwarden może przechowywać i uzupełniać kody weryfikacyjne. Skopiuj i wklej klucz do tego pola." }, "totpHelperWithCapture": { - "message": "Bitwarden może przechowywać i wypełniać kody weryfikacyjne. Wybierz ikonę aparatu, aby zrobić zrzut ekranu z kodem QR lub skopiuj i wklej klucz do tego pola." + "message": "Bitwarden może przechowywać i uzupełniać kody weryfikacyjne. Wybierz ikonę aparatu, aby zrobić zrzut ekranu z kodem QR lub skopiuj i wklej klucz do tego pola." }, "learnMoreAboutAuthenticators": { - "message": "Dowiedz się więcej o uwierzytelniaczach" + "message": "Dowiedz się więcej o uwierzytelnianiu" }, "copyTOTP": { "message": "Kopiuj klucz uwierzytelniający (TOTP)" @@ -860,7 +863,7 @@ "message": "Wylogowano" }, "loggedOutDesc": { - "message": "Zostałeś wylogowany z konta." + "message": "Wylogowano z konta." }, "loginExpired": { "message": "Twoja sesja wygasła." @@ -872,31 +875,31 @@ "message": "Zaloguj się do Bitwarden" }, "enterTheCodeSentToYourEmail": { - "message": "Wpisz kod wysłany na Twój adres e-mail" + "message": "Wpisz kod został wysłany na adres e-mail" }, "enterTheCodeFromYourAuthenticatorApp": { "message": "Wpisz kod z aplikacji uwierzytelniającej" }, "pressYourYubiKeyToAuthenticate": { - "message": "Naciśnij YubiKey aby uwierzytelnić" + "message": "Naciśnij klucz YubiKey, aby uwierzytelnić" }, "duoTwoFactorRequiredPageSubtitle": { - "message": "Logowanie dwustopniowe Duo jest wymagane dla twojego konta. Wykonaj poniższe kroki, by dokończyć logowanie" + "message": "Logowanie dwustopniowe Duo jest wymagane. Wykonaj poniższe kroki, aby zakończyć logowanie." }, "followTheStepsBelowToFinishLoggingIn": { - "message": "Wykonaj poniższe kroki, by dokończyć logowanie" + "message": "Wykonaj poniższe kroki, by zakończyć logowanie." }, "followTheStepsBelowToFinishLoggingInWithSecurityKey": { "message": "Wykonaj poniższe kroki, aby zakończyć logowanie za pomocą klucza bezpieczeństwa." }, "restartRegistration": { - "message": "Zrestartuj rejestrację" + "message": "Rozpocznij rejestrację od początku" }, "expiredLink": { "message": "Link wygasł" }, "pleaseRestartRegistrationOrTryLoggingIn": { - "message": "Zrestartuj rejestrację lub spróbuj się zalogować." + "message": "Rozpocznij rejestrację od początku lub spróbuj się zalogować." }, "youMayAlreadyHaveAnAccount": { "message": "Możesz mieć już konto" @@ -923,19 +926,19 @@ "message": "Folder został dodany" }, "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?" + "message": "Logowanie dwustopniowe zwiększa bezpieczeństwo konta, wymagając weryfikacji logowania za pomocą innego urządzenia, takiego jak klucz bezpieczeństwa, aplikacja uwierzytelniająca, wiadomość SMS, połączenie telefoniczne lub wiadomość e-mail. Logowanie dwustopniowe możesz skonfigurować w sejfie internetowym bitwarden.com. Czy chcesz przejść do strony?" }, "twoStepLoginConfirmationContent": { - "message": "Spraw, aby Twoje konto było bezpieczniejsze poprzez skonfigurowanie dwustopniowego logowania w aplikacji internetowej Bitwarden." + "message": "Zwiększ bezpieczeństwo konta, konfigurując logowanie dwustopniowe w aplikacji internetowej Bitwarden." }, "twoStepLoginConfirmationTitle": { - "message": "Kontynuować do aplikacji internetowej?" + "message": "Przejść do aplikacji internetowej?" }, "editedFolder": { "message": "Folder został zapisany" }, "deleteFolderConfirmation": { - "message": "Czy na pewno chcesz usunąć ten folder?" + "message": "Czy na pewno chcesz usunąć folder?" }, "deletedFolder": { "message": "Folder został usunięty" @@ -944,7 +947,7 @@ "message": "Samouczek" }, "gettingStartedTutorialVideo": { - "message": "Obejrzyj samouczek, aby dowiedzieć się, jak najlepiej wykorzystać rozszerzenie przeglądarki." + "message": "Zobacz samouczek, aby dowiedzieć się, jak najlepiej wykorzystać rozszerzenie przeglądarki." }, "syncingComplete": { "message": "Synchronizacja została zakończona" @@ -982,7 +985,7 @@ "message": "Element został zapisany" }, "deleteItemConfirmation": { - "message": "Czy na pewno chcesz to usunąć?" + "message": "Czy na pewno chcesz usunąć?" }, "deletedItem": { "message": "Element został przeniesiony do kosza" @@ -1013,40 +1016,40 @@ "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { - "message": "Poproś o dodanie danych logowania" + "message": "Proponuj zapisywanie danych logowania" }, "vaultSaveOptionsTitle": { "message": "Opcje zapisywania w sejfie" }, "addLoginNotificationDesc": { - "message": "\"Dodaj powiadomienia logowania\" automatycznie wyświetla monit o zapisanie nowych danych logowania do sejfu przy każdym pierwszym logowaniu." + "message": "Proponuj dodanie elementu, jeśli nie ma go w sejfie." }, "addLoginNotificationDescAlt": { - "message": "Poproś o dodanie elementu, jeśli nie zostanie znaleziony w Twoim sejfie. Dotyczy wszystkich zalogowanych kont." + "message": "Proponuj dodanie elementu, jeśli nie ma go w sejfie. Dotyczy wszystkich zalogowanych kont." }, "showCardsInVaultViewV2": { - "message": "Zawsze pokazuj karty jako sugestie autouzupełniania w widoku sejfu" + "message": "Pokazuj zawsze karty w sugestiach autouzupełniania" }, "showCardsCurrentTab": { "message": "Pokaż karty na stronie głównej" }, "showCardsCurrentTabDesc": { - "message": "Pokaż elementy karty na stronie głównej, aby ułatwić autouzupełnianie." + "message": "Wyświetla karty na głównej karcie sejfu." }, "showIdentitiesInVaultViewV2": { - "message": "Zawsze pokazuj tożsamości jako sugestie autouzupełniania w widoku sejfu" + "message": "Pokazuj zawsze tożsamości w sugestiach autouzupełniania" }, "showIdentitiesCurrentTab": { "message": "Pokaż tożsamości na stronie głównej" }, "showIdentitiesCurrentTabDesc": { - "message": "Pokaż elementy tożsamości na stronie głównej, aby ułatwić autouzupełnianie." + "message": "Wyświetla tożsamości na głównej karcie sejfu." }, "clickToAutofillOnVault": { - "message": "Kliknij na dane logowania, aby autouzupełnić w widoku Sejfu" + "message": "Kliknij na elementy, aby je uzupełnić" }, "clickToAutofill": { - "message": "Kliknij elementy w sugestii autouzupełniania, aby wypełnić" + "message": "Kliknij na elementy w sugestiach, aby je uzupełnić" }, "clearClipboard": { "message": "Wyczyść schowek", @@ -1057,7 +1060,7 @@ "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "notificationAddDesc": { - "message": "Czy Bitwarden powinien zapisać to hasło?" + "message": "Zapisać hasło?" }, "notificationAddSave": { "message": "Zapisz" @@ -1113,7 +1116,7 @@ } }, "saveAsNewLoginAction": { - "message": "Zapisz jako nowy login", + "message": "Zapisz jako nowy dane logowania", "description": "Button text for saving login details as a new entry." }, "updateLoginAction": { @@ -1121,7 +1124,7 @@ "description": "Button text for updating an existing login entry." }, "unlockToSave": { - "message": "Odblokuj, aby zapisać ten login", + "message": "Odblokuj, aby zapisać dane logowania", "description": "User prompt to take action in order to save the login they just entered." }, "saveLogin": { @@ -1129,11 +1132,11 @@ "description": "Prompt asking the user if they want to save their login details." }, "updateLogin": { - "message": "Zaktualizować istniejące dane logowania?", + "message": "Zaktualizuj dane logowania", "description": "Prompt asking the user if they want to update an existing login entry." }, "loginSaveSuccess": { - "message": "Dane logowania zapisane", + "message": "Dane logowania zostały zapisane", "description": "Message displayed when login details are successfully saved." }, "loginUpdateSuccess": { @@ -1141,7 +1144,7 @@ "description": "Message displayed when login details are successfully updated." }, "loginUpdateTaskSuccess": { - "message": "Świetna robota! Podjęto kroki mające na celu zwiększenie bezpieczeństwa Twojego oraz $ORGANIZATION$.", + "message": "Dobra robota! Twoje konto i organizacja $ORGANIZATION$ jest bezpieczniejsza.", "placeholders": { "organization": { "content": "$1" @@ -1166,30 +1169,36 @@ "description": "Message prompting user to undertake completion of another security task." }, "saveFailure": { - "message": "Błąd podczas zapisywania", + "message": "Wystąpił błąd podczas zapisywania", "description": "Error message shown when the system fails to save login details." }, "saveFailureDetails": { - "message": "O nie! Nie mogliśmy zapisać tego. Spróbuj wprowadzić szczegóły ręcznie.", + "message": "O nie! Nie mogliśmy tego zapisać. Wpisz szczegóły ręcznie.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Po zmianie hasła musisz się zalogować przy użyciu nowego hasła. Aktywne sesje na innych urządzeniach zostaną wylogowane w ciągu jednej godziny." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Zmień hasło główne, aby zakończyć odzyskiwanie konta." + }, "enableChangedPasswordNotification": { - "message": "Poproś o aktualizację istniejących danych logowania" + "message": "Proponuj aktualizuję obecnych danych logowania" }, "changedPasswordNotificationDesc": { - "message": "Poproś o aktualizację hasła danych logowania po wykryciu zmiany w witrynie." + "message": "Proponuj aktualizację hasła po wykryciu zmiany na stronie internetowej." }, "changedPasswordNotificationDescAlt": { - "message": "Poproś o aktualizację hasła, gdy zmiana zostanie wykryta na stronie. Dotyczy wszystkich zalogowanych kont." + "message": "Proponuj aktualizację hasła po wykryciu zmiany na stronie internetowej. Dotyczy wszystkich zalogowanych kont." }, "enableUsePasskeys": { - "message": "Pytaj o zapisywanie i używanie kluczy dostępu" + "message": "Proponuj zapisywanie i używanie kluczy dostępu" }, "usePasskeysDesc": { - "message": "Pytaj o zapisywanie nowych kluczy dostępu albo danych logowania z kluczy w Twoim sejfie. Dotyczy wszystkich zalogowanych kont." + "message": "Pytaj o zapisywanie nowych kluczy dostępu i używanie obecnych. Dotyczy wszystkich zalogowanych kont." }, "notificationChangeDesc": { - "message": "Czy chcesz zaktualizować to hasło w Bitwarden?" + "message": "Czy chcesz zaktualizować hasło w Bitwarden?" }, "notificationChangeSave": { "message": "Zaktualizuj" @@ -1204,20 +1213,20 @@ "message": "Dodatkowe opcje" }, "enableContextMenuItem": { - "message": "Pokaż opcje menu kontekstowego" + "message": "Pokaż opcje w menu kontekstowym" }, "contextMenuItemDesc": { - "message": "Użyj drugiego kliknięcia, aby uzyskać dostęp do generowania haseł i pasujących danych logowania do witryny." + "message": "Użyj drugiego kliknięcia, aby uzyskać dostęp do generatora hasła i pasujących danych logowania." }, "contextMenuItemDescAlt": { - "message": "Użyj drugiego kliknięcia, aby uzyskać dostęp do generowania haseł i pasujących danych logowania do witryny. Dotyczy wszystkich zalogowanych kont." + "message": "Użyj drugiego kliknięcia, aby uzyskać dostęp do generatora hasła i pasujących danych logowania. Dotyczy wszystkich zalogowanych kont." }, "defaultUriMatchDetection": { "message": "Domyślne wykrywanie dopasowania", "description": "Default URI match detection for autofill." }, "defaultUriMatchDetectionDesc": { - "message": "Wybierz domyślny sposób wykrywania dopasowania adresów dla czynności takich jak autouzupełnianie." + "message": "Wybierz domyślne wykrywanie dopasowania dla autouzupełniania." }, "theme": { "message": "Motyw" @@ -1226,7 +1235,7 @@ "message": "Zmień motyw kolorystyczny aplikacji." }, "themeDescAlt": { - "message": "Zmień kolor motywu aplikacji. Dotyczy wszystkich zalogowanych kont." + "message": "Zmień motyw kolorystyczny aplikacji. Dotyczy wszystkich zalogowanych kont." }, "dark": { "message": "Ciemny", @@ -1246,19 +1255,19 @@ "message": "Format pliku" }, "fileEncryptedExportWarningDesc": { - "message": "Plik będzie chroniony hasłem, które będzie wymagane do odszyfrowania pliku." + "message": "Plik zostanie zaszyfrowany hasłem." }, "filePassword": { - "message": "Hasło do pliku" + "message": "Hasło pliku" }, "exportPasswordDescription": { "message": "Hasło będzie używane do eksportowania i importowania pliku" }, "accountRestrictedOptionDescription": { - "message": "Użyj klucza szyfrowania konta, pochodzącego z nazwy użytkownika konta i hasła głównego, aby zaszyfrować eksport i ograniczyć import tylko do bieżącego konta Bitwarden." + "message": "Użyj klucza szyfrowania konta, pochodzącego z nazwy użytkownika konta i hasła głównego, aby zaszyfrować eksport i ograniczyć import tylko do obecnego konta Bitwarden." }, "passwordProtectedOptionDescription": { - "message": "Ustaw hasło dla pliku, aby zaszyfrować eksport i zaimportować je na dowolne konto Bitwarden przy użyciu hasła do odszyfrowania." + "message": "Ustaw hasło pliku, aby zaszyfrować eksport i zaimportować je na dowolne konto Bitwarden przy użyciu hasła do odszyfrowania." }, "exportTypeHeading": { "message": "Rodzaj eksportu" @@ -1267,10 +1276,10 @@ "message": "Konto ograniczone" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { - "message": "“Hasło pliku” i “Potwierdź hasło pliku“ nie pasują do siebie." + "message": "Hasła pliku nie pasują do siebie." }, "warning": { - "message": "UWAGA", + "message": "OSTRZEŻENIE", "description": "WARNING (should stay in capitalized letters if the language permits)" }, "warningCapitalized": { @@ -1281,7 +1290,7 @@ "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." + "message": "Plik zawiera dane sejfu w niezaszyfrowanym formacie. Nie należy go przechowywać ani przesyłać poprzez niezabezpieczone kanały (takie jak poczta e-mail). Usuń 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." @@ -1290,19 +1299,19 @@ "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." + "message": "Wpisz hasło główne, aby wyeksportować dane sejfu." }, "shared": { "message": "Udostępnione" }, "bitwardenForBusinessPageDesc": { - "message": "Bitwarden dla biznesu pozwala na udostępnianie zawartości sejfu innym osobom za pośrednictwem organizacji. Dowiedz się wiecej na bitwarden.com." + "message": "Bitwarden dla biznesu pozwala na udostępnianie zawartości sejfu innym użytkownikom za pośrednictwem organizacji. Dowiedz się więcej na stronie bitwarden.com." }, "moveToOrganization": { "message": "Przenieś do organizacji" }, "movedItemToOrg": { - "message": "Element $ITEMNAME$ został przeniesiony do organizacji $ORGNAME$", + "message": "Przeniesiono $ITEMNAME$ do $ORGNAME$", "placeholders": { "itemname": { "content": "$1", @@ -1315,7 +1324,7 @@ } }, "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." + "message": "Wybierz organizację, do której chcesz przenieść element. Przeniesienie spowoduje zmianę własności elementu na organizację." }, "learnMore": { "message": "Dowiedz się więcej" @@ -1336,7 +1345,7 @@ "message": "Usuń załącznik" }, "deleteAttachmentConfirmation": { - "message": "Czy na pewno chcesz usunąć ten załącznik?" + "message": "Czy na pewno chcesz usunąć załącznik?" }, "deletedAttachment": { "message": "Załącznik został usunięty" @@ -1354,7 +1363,7 @@ "message": "Plik" }, "fileToShare": { - "message": "Plik do udostępnienia" + "message": "Plik wysyłki" }, "selectFile": { "message": "Wybierz plik" @@ -1366,25 +1375,25 @@ "message": "Funkcja jest niedostępna" }, "legacyEncryptionUnsupported": { - "message": "Starsze szyfrowanie nie jest już obsługiwane. Skontaktuj się z pomocą techniczną, aby odzyskać swoje konto." + "message": "Starsze szyfrowanie nie jest już obsługiwane. Skontaktuj się z pomocą techniczną, aby odzyskać konto." }, "premiumMembership": { - "message": "Konto Premium" + "message": "Konto premium" }, "premiumManage": { - "message": "Zarządzaj kontem Premium" + "message": "Zarządzaj kontem premium" }, "premiumManageAlert": { - "message": "Kontem Premium możesz zarządzać na stronie sejfu bitwarden.com. Czy chcesz otworzyć tę stronę?" + "message": "Zarządzaj kontem premium na stronie internetowej bitwarden.com. Czy chcesz otworzyć stronę?" }, "premiumRefresh": { - "message": "Odśwież konto Premium" + "message": "Odśwież konto premium" }, "premiumNotCurrentMember": { - "message": "Nie posiadasz obecnie konta Premium." + "message": "Nie masz konta premium." }, "premiumSignUpAndGet": { - "message": "Zarejestruj konto Premium, aby otrzymać:" + "message": "Ulepsz konto do wersji premium, aby otrzymać:" }, "ppremiumSignUpStorage": { "message": "1 GB miejsca na zaszyfrowane załączniki." @@ -1393,13 +1402,13 @@ "message": "Dostęp awaryjny." }, "premiumSignUpTwoStepOptions": { - "message": "Własnościowe opcje logowania dwuetapowego, takie jak YubiKey i Duo." + "message": "Specjalne opcje logowania dwustopniowego, takie jak YubiKey i 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." + "message": "Generator kodów weryfikacyjnych TOTP dla danych logowania w sejfie." }, "ppremiumSignUpSupport": { "message": "Priorytetowe wsparcie klienta." @@ -1408,22 +1417,22 @@ "message": "Wszystkie przyszłe funkcje premium. Więcej już wkrótce!" }, "premiumPurchase": { - "message": "Kup konto Premium" + "message": "Kup konto premium" }, "premiumPurchaseAlertV2": { - "message": "Możesz kupić Premium w ustawieniach konta w aplikacji internetowej Bitwarden." + "message": "Możesz kupić konto premium w aplikacji internetowej Bitwarden." }, "premiumCurrentMember": { - "message": "Posiadasz konto Premium!" + "message": "Masz konto premium!" }, "premiumCurrentMemberThanks": { "message": "Dziękujemy za wspieranie Bitwarden." }, "premiumFeatures": { - "message": "Uaktualnij do wersji Premium i otrzymaj:" + "message": "Ulepsz konto do wersji premium i otrzymaj:" }, "premiumPrice": { - "message": "Wszystko to jedynie za $PRICE$ /rok!", + "message": "Tylko $PRICE$ / rok!", "placeholders": { "price": { "content": "$1", @@ -1432,7 +1441,7 @@ } }, "premiumPriceV2": { - "message": "Wszystko tylko za $PRICE$ rocznie!", + "message": "Tylko $PRICE$ rocznie!", "placeholders": { "price": { "content": "$1", @@ -1447,25 +1456,25 @@ "message": "Kopiuj kod TOTP automatycznie" }, "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." + "message": "Automatycznie kopiuje kod TOTP do schowka podczas autouzupełniania." }, "enableAutoBiometricsPrompt": { "message": "Poproś o dane biometryczne przy uruchomieniu" }, "premiumRequired": { - "message": "Konto Premium jest wymagane" + "message": "Konto premium jest wymagane" }, "premiumRequiredDesc": { - "message": "Konto Premium jest wymagane, aby skorzystać z tej funkcji." + "message": "Konto premium jest wymagane, aby skorzystać z tej funkcji." }, "authenticationTimeout": { "message": "Limit czasu uwierzytelniania" }, "authenticationSessionTimedOut": { - "message": "Upłynął limit czasu uwierzytelniania. Uruchom ponownie proces logowania." + "message": "Upłynął limit czasu uwierzytelniania. Zaloguj się ponownie." }, "verificationCodeEmailSent": { - "message": "Kod weryfikacyjny został wysłany na adres $EMAIL$.", + "message": "Wiadomość weryfikacyjna została wysłana na adres $EMAIL$.", "placeholders": { "email": { "content": "$1", @@ -1484,7 +1493,7 @@ "message": "Użyj kodu odzyskiwania" }, "insertU2f": { - "message": "Włóż klucz bezpieczeństwa do portu USB komputera. Jeśli klucz posiada przycisk, dotknij go." + "message": "Włóż klucz bezpieczeństwa do portu USB urządzenia. Jeśli klucz ma przycisk, dotknij go." }, "openInNewTab": { "message": "Otwórz w nowej karcie" @@ -1496,16 +1505,16 @@ "message": "Odczytaj klucz bezpieczeństwa" }, "awaitingSecurityKeyInteraction": { - "message": "Oczekiwanie na interakcję z kluczem bezpieczeństwa..." + "message": "Oczekiwanie na klucz bezpieczeństwa..." }, "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." + "message": "Konto jest zabezpieczone logowaniem dwustopniowym, ale żadna ze skonfigurowanych metod nie jest obsługiwana w tej przeglądarce." }, "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)." + "message": "Użyj obsługiwanej przeglądarki (np. Chrome) lub dodaj dodatkowe opcje logowania dwustopniowego, które są obsługiwane na różnych przeglądarkach (takie jak aplikacja uwierzytelniająca)." }, "twoStepOptions": { "message": "Opcje logowania dwustopniowego" @@ -1523,28 +1532,28 @@ "message": "Aplikacja uwierzytelniająca" }, "authenticatorAppDescV2": { - "message": "Wprowadź kod wygenerowany przez aplikację uwierzytelniającą, jak Bitwarden Authenticator.", + "message": "Wpisz kod wygenerowany przez aplikację uwierzytelniającą, taką jak Bitwarden Authenticator.", "description": "'Bitwarden Authenticator' is a product name and should not be translated." }, "yubiKeyTitleV2": { "message": "Klucz bezpieczeństwa Yubico OTP" }, "yubiKeyDesc": { - "message": "Użyj YubiKey jako metody dostępu do konta. Działa z YubiKey 4, 4 Nano, 4C i urządzeniami NEO." + "message": "Użyj klucza YubiKey, aby uzyskać dostęp do konta. Działa z urządzeniami YubiKey 4, 4 Nano, 4C i NEO." }, "duoDescV2": { - "message": "Wprowadź kod wygenerowany przez Duo Security.", + "message": "Wpisz kod wygenerowany przez Duo Security.", "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.", + "message": "Weryfikacja Duo Security za pomocą aplikacji Duo Mobile, wiadomości SMS, połączenia telefonicznego lub klucza 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." + "message": "Użyj dowolnego klucza bezpieczeństwa WebAuthn, aby uzyskać dostęp do konta." }, "emailTitle": { "message": "Adres e-mail" @@ -1556,7 +1565,7 @@ "message": "Samodzielnie hostowane środowisko" }, "selfHostedBaseUrlHint": { - "message": "Określ bazowy adres URL swojej instalacji Bitwarden. Przykład: https://bitwarden.company.com" + "message": "Określ podstawowy adres URL instalacji Bitwarden. Przykład: https://bitwarden.mojafirma.pl" }, "selfHostedCustomEnvHeader": { "message": "Dla zaawansowanych konfiguracji możesz określić podstawowy adres URL niezależnie dla każdej usługi." @@ -1571,7 +1580,7 @@ "message": "Adres URL serwera" }, "selfHostBaseUrl": { - "message": "URL samodzielnie hostowanego serwera", + "message": "Adres URL hostowanego serwera", "description": "Label for field requesting a self-hosted integration service URL" }, "apiUrl": { @@ -1593,17 +1602,17 @@ "message": "Adresy URL środowiska zostały zapisane" }, "showAutoFillMenuOnFormFields": { - "message": "Pokaż menu autouzupełniania na polach formularza", + "message": "Pokaż menu autouzupełniania w polach formularza", "description": "Represents the message for allowing the user to enable the autofill overlay" }, "autofillSuggestionsSectionTitle": { "message": "Sugestie autouzupełniania" }, "autofillSpotlightTitle": { - "message": "Łatwe znajdowanie sugestii autouzupełniania" + "message": "Łatwe wyszukiwanie sugestii autouzupełniania" }, "autofillSpotlightDesc": { - "message": "Wyłącz ustawienia autouzupełniania swojej przeglądarki, aby nie kolidowały z Bitwarden." + "message": "Wyłącz autouzupełnianie przeglądarki, aby uniknąć konfliktów z Bitwarden." }, "turnOffBrowserAutofill": { "message": "Wyłącz autouzupełnianie $BROWSER$", @@ -1615,52 +1624,52 @@ } }, "turnOffAutofill": { - "message": "Wyłącz autouzupełnienie" + "message": "Wyłącz autouzupełnianie" }, "showInlineMenuLabel": { "message": "Pokaż sugestie autouzupełniania na polach formularza" }, "showInlineMenuIdentitiesLabel": { - "message": "Pokazuj tożsamości jako sugestie" + "message": "Pokaż tożsamości w sugestiach" }, "showInlineMenuCardsLabel": { - "message": "Pokazuj karty jako sugestie" + "message": "Pokaż karty w sugestiach" }, "showInlineMenuOnIconSelectionLabel": { - "message": "Wyświetlaj sugestie, kiedy ikona jest zaznaczona" + "message": "Pokaż sugestie po kliknięciu ikony" }, "showInlineMenuOnFormFieldsDescAlt": { "message": "Dotyczy wszystkich zalogowanych kont." }, "turnOffBrowserBuiltInPasswordManagerSettings": { - "message": "Wyłącz wbudowany w przeglądarkę menedżer haseł, aby uniknąć konfliktów." + "message": "Wyłącz menedżer haseł przeglądarki, aby uniknąć konfliktów." }, "turnOffBrowserBuiltInPasswordManagerSettingsLink": { "message": "Edytuj ustawienia przeglądarki." }, "autofillOverlayVisibilityOff": { - "message": "Wył.", + "message": "Wyłączone", "description": "Overlay setting select option for disabling autofill overlay" }, "autofillOverlayVisibilityOnFieldFocus": { - "message": "Gdy pole jest zaznaczone", + "message": "Po kliknięciu pola", "description": "Overlay appearance select option for showing the field on focus of the input element" }, "autofillOverlayVisibilityOnButtonClick": { - "message": "Gdy wybrano ikonę autouzupełniania", + "message": "Po kliknięciu ikony autouzupełniania", "description": "Overlay appearance select option for showing the field on click of the overlay icon" }, "enableAutoFillOnPageLoadSectionTitle": { - "message": "Włącz autouzupełnianie po załadowaniu strony" + "message": "Autouzupełnianie po załadowaniu strony" }, "enableAutoFillOnPageLoad": { - "message": "Włącz autouzupełnianie po załadowaniu strony" + "message": "Uzupełniaj po załadowaniu strony" }, "enableAutoFillOnPageLoadDesc": { - "message": "Jeśli zostanie wykryty formularz logowania, automatycznie uzupełnij dane logowania po załadowaniu strony." + "message": "Dane logowania zostaną uzupełnione po wykryciu formularza logowania na stronie." }, "experimentalFeature": { - "message": "Zaatakowane lub niezaufane witryny internetowe mogą wykorzystać funkcję autouzupełniania podczas wczytywania strony, aby wyrządzić szkody." + "message": "Zaatakowane strony internetowe mogą wykorzystywać autouzupełnianie do przejęcia danych logowania." }, "learnMoreAboutAutofillOnPageLoadLinkText": { "message": "Dowiedz się więcej o ryzyku" @@ -1681,10 +1690,10 @@ "message": "Użyj domyślnego ustawienia" }, "autoFillOnPageLoadYes": { - "message": "Automatycznie uzupełniaj po załadowaniu strony" + "message": "Uzupełniaj po załadowaniu strony" }, "autoFillOnPageLoadNo": { - "message": "Nie uzupełniaj automatycznie po załadowaniu strony" + "message": "Nie uzupełniaj po załadowaniu strony" }, "commandOpenPopup": { "message": "Otwórz sejf w oknie" @@ -1696,13 +1705,13 @@ "message": "Autouzupełnianie korzysta z ostatnio używanych danych logowania na tej stronie" }, "commandAutofillCardDesc": { - "message": "Autouzupełnianie korzysta z ostatnio używanych danych karty na tej stronie" + "message": "Autouzupełnianie korzysta z ostatnio używanej karty na tej stronie" }, "commandAutofillIdentityDesc": { "message": "Autouzupełnianie korzysta z ostatnio używanej tożsamości na tej stronie" }, "commandGeneratePasswordDesc": { - "message": "Wygeneruj nowe losowe hasło i skopiuj je do schowka." + "message": "Wygeneruj nowe hasło i skopiuj je do schowka" }, "commandLockVaultDesc": { "message": "Zablokuj sejf" @@ -1729,7 +1738,7 @@ "message": "Tekst" }, "cfTypeHidden": { - "message": "Pole maskowane" + "message": "Ukryty tekst" }, "cfTypeBoolean": { "message": "Wartość logiczna" @@ -1749,16 +1758,16 @@ "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?" + "message": "Ta przeglądarka nie może przetworzyć żądania U2F w wyskakującym oknie. Czy chcesz otworzyć nowe okno przeglądarki, aby zalogować się przy pomocy klucza U2F?" }, "enableFavicon": { - "message": "Pokaż ikony witryn" + "message": "Pokaż ikony stron internetowych" }, "faviconDesc": { - "message": "Pokaż rozpoznawalny obraz obok danych logowania." + "message": "Pokaż rozpoznawalną ikonę obok danych logowania." }, "faviconDescAlt": { - "message": "Pokaż rozpoznawalny obraz obok każdego logowania. Dotyczy wszystkich zalogowanych kont." + "message": "Pokaż rozpoznawalną ikonę obok danych logowania. Dotyczy wszystkich zalogowanych kont." }, "enableBadgeCounter": { "message": "Pokaż licznik na ikonie" @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Kod zabezpieczający" }, + "cardNumber": { + "message": "numer karty" + }, "ex": { "message": "np." }, @@ -1833,7 +1845,7 @@ "message": "Pan" }, "mrs": { - "message": "Mrs" + "message": "Pani (Mrs)" }, "ms": { "message": "Pani" @@ -1857,7 +1869,7 @@ "message": "Imię i nazwisko" }, "identityName": { - "message": "Nazwa profilu" + "message": "Nowa tożsamość" }, "company": { "message": "Firma" @@ -1875,7 +1887,7 @@ "message": "Adres e-mail" }, "phone": { - "message": "Telefon" + "message": "Numer telefonu" }, "address": { "message": "Adres" @@ -1911,7 +1923,7 @@ "message": "Dane logowania" }, "typeSecureNote": { - "message": "Bezpieczna notatka" + "message": "Notatka" }, "typeCard": { "message": "Karta" @@ -1926,7 +1938,7 @@ "message": "Notatka" }, "newItemHeader": { - "message": "Nowy $TYPE$", + "message": "$TYPE$", "placeholders": { "type": { "content": "$1", @@ -1935,7 +1947,7 @@ } }, "editItemHeader": { - "message": "Edytuj $TYPE$", + "message": "$TYPE$", "placeholders": { "type": { "content": "$1", @@ -1944,7 +1956,7 @@ } }, "viewItemHeader": { - "message": "Zobacz $TYPE$", + "message": "Pokaż $TYPE$", "placeholders": { "type": { "content": "$1", @@ -1962,16 +1974,16 @@ "message": "Wyczyść historię generatora" }, "cleargGeneratorHistoryDescription": { - "message": "Jeśli zatwierdzisz, wszystkie wygenerowane hasła zostaną usunięte z historii generatora. Czy chcesz kontynuować mimo to?" + "message": "Wszystkie wpisy zostaną trwale usunięte z historii generatora. Czy na pewno chcesz kontynuować?" }, "back": { - "message": "Powrót" + "message": "Wstecz" }, "collections": { "message": "Kolekcje" }, "nCollections": { - "message": "Kolekcje: $COUNT$", + "message": "Kolekcje ($COUNT$)", "placeholders": { "count": { "content": "$1", @@ -1983,7 +1995,7 @@ "message": "Ulubione" }, "popOutNewWindow": { - "message": "Wyświetl w nowym oknie" + "message": "Otwórz w nowym oknie" }, "refresh": { "message": "Odśwież" @@ -1998,7 +2010,7 @@ "message": "Dane logowania" }, "secureNotes": { - "message": "Bezpieczne notatki" + "message": "Notatki" }, "sshKeys": { "message": "Klucze SSH" @@ -2011,7 +2023,7 @@ "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ć.", + "message": "Hasło zostało ujawnione $VALUE$ raz(y) w wyciekach danych. Zmień je.", "placeholders": { "value": { "content": "$1", @@ -2020,14 +2032,14 @@ } }, "passwordSafe": { - "message": "To hasło nie znajduje się w żadnej znanej wykradzionej bazie danych. Powinno być bezpieczne." + "message": "Hasło nie znajduje się w żadnym znanym wycieku danych. Powinno być bezpieczne." }, "baseDomain": { "message": "Domena podstawowa", "description": "Domain name. Ex. website.com" }, "baseDomainOptionRecommended": { - "message": "Domena podstawowa (rekomendowana)", + "message": "Domena podstawowa (domyślne)", "description": "Domain name. Ex. website.com" }, "domainName": { @@ -2078,7 +2090,7 @@ "message": "Wszystkie elementy" }, "noPasswordsInList": { - "message": "Brak haseł." + "message": "Brak haseł do wyświetlenia." }, "clearHistory": { "message": "Wyczyść historię" @@ -2093,7 +2105,7 @@ "message": "Usuń" }, "default": { - "message": "Domyślny" + "message": "Domyślna" }, "dateUpdated": { "message": "Zaktualizowano", @@ -2108,7 +2120,7 @@ "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." + "message": "Czy na pewno chcesz użyć opcji „Nigdy”? Ustawienie blokady na „Nigdy” spowoduje przechowywanie klucza szyfrowania sejfu na urządzeniu. Upewnij się, że urządzenie jest odpowiednio chronione." }, "noOrganizationsList": { "message": "Nie należysz do żadnej organizacji. Organizacje pozwalają na bezpieczne udostępnianie elementów innym użytkownikom." @@ -2120,7 +2132,7 @@ "message": "Właściciel" }, "whoOwnsThisItem": { - "message": "Kto jest właścicielem tego elementu?" + "message": "Kto jest właścicielem elementu?" }, "strong": { "message": "Silne", @@ -2135,7 +2147,7 @@ "description": "ex. A weak password. Scale: Weak -> Good -> Strong" }, "weakMasterPassword": { - "message": "Słabe hasło główne" + "message": "Hasło główne jest słabe" }, "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?" @@ -2154,10 +2166,10 @@ "message": "Ustaw kod PIN" }, "setYourPinCode": { - "message": "Ustaw kod PIN do odblokowywania aplikacji Bitwarden. Ustawienia odblokowywania kodem PIN zostaną zresetowane po wylogowaniu." + "message": "Ustaw kod PIN do odblokowania aplikacji Bitwarden. Ustawienia kodu PIN zostaną zresetowane po wylogowaniu." }, "setPinCode": { - "message": "Możesz użyć tego kodu PIN, aby odblokować Bitwarden. Twój kod PIN zostanie zresetowany, jeśli kiedykolwiek wylogujesz się z aplikacji." + "message": "Możesz użyć tego kodu PIN do odblokowania aplikacji Bitwarden. Kod PIN zostanie zresetowany po wylogowaniu." }, "pinRequired": { "message": "Kod PIN jest wymagany." @@ -2169,10 +2181,10 @@ "message": "Zbyt wiele nieprawidłowych prób wpisywania PIN. Wylogowywanie." }, "unlockWithBiometrics": { - "message": "Odblokuj danymi biometrycznymi" + "message": "Odblokuj biometrią" }, "unlockWithMasterPassword": { - "message": "Odblokuj za pomocą głównego hasła" + "message": "Odblokuj hasłem głównym" }, "awaitDesktop": { "message": "Oczekiwanie na potwierdzenie z aplikacji desktopowej" @@ -2184,7 +2196,7 @@ "message": "Zablokuj hasłem głównym po uruchomieniu przeglądarki" }, "lockWithMasterPassOnRestart1": { - "message": "Wymagaj hasła głównego przy ponownym uruchomieniu przeglądarki" + "message": "Wymagaj hasła głównego po uruchomieniu przeglądarki" }, "selectOneCollection": { "message": "Musisz wybrać co najmniej jedną kolekcję." @@ -2199,7 +2211,7 @@ "message": "Generator hasła" }, "usernameGenerator": { - "message": "Generator nazw użytkownika" + "message": "Generator nazwy użytkownika" }, "useThisEmail": { "message": "Użyj tego adresu e-mail" @@ -2221,7 +2233,7 @@ "description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'" }, "useGeneratorHelpTextPartTwo": { - "message": ", aby utworzyć mocne unikalne hasło", + "message": ", aby utworzyć silne i unikalne hasło", "description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'" }, "vaultCustomization": { @@ -2231,7 +2243,7 @@ "message": "Sposób blokowania sejfu" }, "vaultTimeoutAction1": { - "message": "Akcja po przekroczeniu limitu czasu" + "message": "Sposób blokady" }, "lock": { "message": "Zablokuj", @@ -2248,7 +2260,7 @@ "message": "Usuń trwale element" }, "permanentlyDeleteItemConfirmation": { - "message": "Czy na pewno chcesz usunąć trwale ten element?" + "message": "Czy na pewno chcesz usunąć trwale element?" }, "permanentlyDeletedItem": { "message": "Element został trwale usunięty" @@ -2266,31 +2278,31 @@ "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" + "message": "Potwierdź sposób blokady" }, "autoFillAndSave": { - "message": "Automatycznie uzupełnij i zapisz" + "message": "Uzupełnij i zapisz" }, "fillAndSave": { - "message": "Wypełnij i zapisz" + "message": "Uzupełnij i zapisz" }, "autoFillSuccessAndSavedUri": { "message": "URI został zapisany i automatycznie uzupełniony" }, "autoFillSuccess": { - "message": "Element został automatycznie uzupełniony " + "message": "Element został automatycznie uzupełniony" }, "insecurePageWarning": { - "message": "Ostrzeżenie: Jest to niezabezpieczona strona HTTP i wszelkie przekazane informacje mogą być potencjalnie widoczne i zmienione przez innych. Ten login został pierwotnie zapisany na stronie bezpiecznej (HTTPS)." + "message": "Ostrzeżenie: Jest to niezabezpieczona strona HTTP, to wszelkie przesłane informacje mogą być potencjalnie widoczne i zmienione przez inne osoby. Logowanie zostało pierwotnie zapisane na bezpiecznej stronie (HTTPS)." }, "insecurePageWarningFillPrompt": { - "message": "Nadal chcesz uzupełnić ten login?" + "message": "Czy chcesz uzupełnić dane logowania?" }, "autofillIframeWarning": { - "message": "Formularz jest hostowany przez inną domenę niż zapisany adres URI dla tego loginu. Wybierz OK, aby i tak automatycznie wypełnić lub anuluj, aby zatrzymać." + "message": "Formularz jest hostowany przez inną domenę niż URI zapisanych danych logowania. Kliknij OK, aby uzupełnić dane logowania lub Anuluj, aby zatrzymać." }, "autofillIframeWarningTip": { - "message": "Aby zapobiec temu ostrzeżeniu w przyszłości, zapisz ten URI, $HOSTNAME$, dla tej witryny.", + "message": "Aby uniknąć ostrzeżenia w przyszłości, zapisz URI $HOSTNAME$ w danych logowania.", "placeholders": { "hostname": { "content": "$1", @@ -2302,7 +2314,7 @@ "message": "Ustaw hasło główne" }, "currentMasterPass": { - "message": "Aktualne hasło główne" + "message": "Obecne hasło główne" }, "newMasterPass": { "message": "Nowe hasło główne" @@ -2353,7 +2365,7 @@ "message": "Nowe hasło główne nie spełnia wymaganych zasad." }, "receiveMarketingEmailsV2": { - "message": "Uzyskaj poradę, ogłoszenia i możliwości badawcze od Bitwarden w swojej skrzynce odbiorczej." + "message": "Otrzymuj porady, ogłoszenia i możliwości badawcze od Bitwarden na swoją skrzynkę odbiorczą." }, "unsubscribe": { "message": "Anuluj subskrypcję" @@ -2362,7 +2374,7 @@ "message": "w każdej chwili." }, "byContinuingYouAgreeToThe": { - "message": "Kontynuując, zgadzasz się na" + "message": "Kontynuując, akceptujesz" }, "and": { "message": "i" @@ -2380,7 +2392,7 @@ "message": "Polityka prywatności" }, "yourNewPasswordCannotBeTheSameAsYourCurrentPassword": { - "message": "Twoje nowe hasło nie może być takie samo jak Twoje aktualne hasło." + "message": "Nowe hasło nie może być takie samo jak obecne." }, "hintEqualsPassword": { "message": "Podpowiedź do hasła nie może być taka sama jak hasło." @@ -2389,16 +2401,16 @@ "message": "Ok" }, "errorRefreshingAccessToken": { - "message": "Błąd podczas odświeżania tokenu" + "message": "Wystąpił błąd podczas odświeżania tokena" }, "errorRefreshingAccessTokenDesc": { - "message": "Nie znaleziono tokenu odświeżającego ani kluczy API. Spróbuj wylogować się i zalogować ponownie." + "message": "Nie znaleziono tokena odświeżania ani kluczy API. Zaloguj się ponownie." }, "desktopSyncVerificationTitle": { "message": "Weryfikacja synchronizacji z aplikacją desktopową" }, "desktopIntegrationVerificationText": { - "message": "Zweryfikuj aplikację desktopową z wyświetlonym identyfikatorem: " + "message": "Zweryfikuj aplikację desktopową z odciskiem klucza: " }, "desktopIntegrationDisabledTitle": { "message": "Połączenie z przeglądarką jest wyłączone" @@ -2410,10 +2422,10 @@ "message": "Uruchom aplikację desktopową Bitwarden" }, "startDesktopDesc": { - "message": "Aplikacja desktopowa Bitwarden, przed odblokowaniem danymi biometrycznymi, musi zostać ponownie uruchomiona." + "message": "Aplikacja desktopowa Bitwarden musi zostać uruchomiona przed odblokowaniem za pomocą biometrii." }, "errorEnableBiometricTitle": { - "message": "Nie można włączyć danych biometrycznych" + "message": "Nie można włączyć biometrii" }, "errorEnableBiometricDesc": { "message": "Operacja została anulowana przez aplikację desktopową" @@ -2425,43 +2437,43 @@ "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." + "message": "Aplikacja desktopowa jest zalogowana na inne konto. Upewnij się, że obie aplikacje są zalogowane na to samo konto." }, "nativeMessagingWrongUserTitle": { "message": "Konto jest niezgodne" }, "nativeMessagingWrongUserKeyTitle": { - "message": "Klucz biometryczny jest niepoprawny" + "message": "Klucz biometrii jest nieprawidłowy" }, "nativeMessagingWrongUserKeyDesc": { - "message": "Odblokowanie biometryczne się nie powiodło. Sekretny klucz biometryczny nie odblokował sejfu. Spróbuj skonfigurować biometrię ponownie." + "message": "Odblokowanie biometrią nie powiodło się. Klucz biometrii nie odblokował sejfu. Spróbuj ponownie skonfigurować biometrię." }, "biometricsNotEnabledTitle": { - "message": "Dane biometryczne są wyłączone" + "message": "Biometria jest wyłączona" }, "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" + "message": "Biometria nie jest obsługiwana" }, "biometricsNotSupportedDesc": { - "message": "Dane biometryczne przeglądarki nie są obsługiwane na tym urządzeniu." + "message": "Biometria przeglądarki nie jest obsługiwana na tym urządzeniu." }, "biometricsNotUnlockedTitle": { - "message": "Użytkownik zablokowany lub wylogowany" + "message": "Użytkownik jest zablokowany lub wylogowany" }, "biometricsNotUnlockedDesc": { - "message": "Odblokuj tego użytkownika w aplikacji desktopowej i spróbuj ponownie." + "message": "Odblokuj użytkownika w aplikacji desktopowej i spróbuj ponownie." }, "biometricsNotAvailableTitle": { - "message": "Odblokowanie biometryczne jest niedostępne" + "message": "Odblokowanie biometrią jest niedostępne" }, "biometricsNotAvailableDesc": { - "message": "Odblokowanie biometryczne jest obecnie niedostępne. Spróbuj ponownie później." + "message": "Odblokowanie biometrią jest obecnie niedostępne. Spróbuj ponownie później." }, "biometricsFailedTitle": { - "message": "Dane biometryczne są błędne" + "message": "Logowanie biometrią nie powiodło się" }, "biometricsFailedDesc": { "message": "Dane biometryczne nie mogę być użyte, rozważ użycie hasła głównego lub wylogowanie. Jeśli się to powtarza, skontaktuj się z pomocą techniczną Bitwarden." @@ -2476,19 +2488,19 @@ "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." + "message": "Akcji nie można wykonać na pasku bocznym. Otwórz rozszerzenie w 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." + "message": "Ze względu na zasadę organizacji, 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." }, "personalOwnershipPolicyInEffectImports": { - "message": "Polityka organizacji zablokowała importowanie elementów do Twojego sejfu." + "message": "Zasada organizacji zablokowała importowanie elementów do osobistego sejfu." }, "restrictCardTypeImport": { - "message": "Nie można importować elementów typu karty" + "message": "Nie można zaimportować karty" }, "restrictCardTypeImportDesc": { "message": "Polityka ustawiona przez 1 lub więcej organizacji uniemożliwia importowanie kart do sejfów." @@ -2498,25 +2510,25 @@ "description": "A category title describing the concept of web domains" }, "blockedDomains": { - "message": "Zablokowane domeny" + "message": "Blokowane domeny" }, "learnMoreAboutBlockedDomains": { - "message": "Dowiedz się więcej o zablokowanych domenach" + "message": "Dowiedz się więcej o blokowanych domenach" }, "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." + "message": "Bitwarden nie będzie proponował zapisywania danych logowania dla tych domen. Odśwież stronę, aby zastosowywać zmiany." }, "excludedDomainsDescAlt": { - "message": "Aplikacja Bitwarden nie będzie proponować zapisywania danych logowania dla tych domen dla wszystkich zalogowanych kont. Musisz odświeżyć stronę, aby zastosowywać zmiany." + "message": "Bitwarden nie będzie proponował zapisywania danych logowania dla tych domen dla wszystkich zalogowanych kont. Odśwież stronę, aby zastosowywać zmiany." }, "blockedDomainsDesc": { - "message": "Autouzupełnianie i inne powiązane funkcje nie będą oferowane dla tych stron. Aby zmiany zaczęły obowiązywać, musisz odświeżyć stronę." + "message": "Autouzupełnianie będzie zablokowane dla tych stron internetowych. Zmiany zaczną obowiązywać po odświeżeniu strony." }, "autofillBlockedNoticeV2": { - "message": "Autouzupełnianie jest zablokowane dla tej witryny." + "message": "Autouzupełnianie będzie zablokowane dla tych stron intenretowych." }, "autofillBlockedNoticeGuidance": { "message": "Zmień to w ustawieniach" @@ -2544,7 +2556,7 @@ "message": "Zagrożone hasła" }, "atRiskPasswordDescSingleOrg": { - "message": "$ORGANIZATION$ prosi o zmianę jednego hasła, ponieważ jest ono zagrożone.", + "message": "Organizacja $ORGANIZATION$ prosi o zmianę 1 hasła, ponieważ jest ono zagrożone.", "placeholders": { "organization": { "content": "$1", @@ -2553,7 +2565,7 @@ } }, "atRiskPasswordsDescSingleOrgPlural": { - "message": "$ORGANIZATION$ prosi o zmianę $COUNT$ haseł, ponieważ są one zagrożone.", + "message": "Organizacja $ORGANIZATION$ prosi o zmianę $COUNT$ haseł, ponieważ są one zagrożone.", "placeholders": { "organization": { "content": "$1", @@ -2566,7 +2578,7 @@ } }, "atRiskPasswordsDescMultiOrgPlural": { - "message": "Twoje organizacje proszą o zmianę $COUNT$ haseł, ponieważ są one zagrożone.", + "message": "Twoja organizacja prosi o zmianę $COUNT$ haseł, ponieważ są one zagrożone.", "placeholders": { "count": { "content": "$1", @@ -2575,7 +2587,7 @@ } }, "atRiskChangePrompt": { - "message": "Twoje hasło dla tej witryny jest zagrożone. Organizacja $ORGANIZATION$ poprosiła Cię o jego zmianę.", + "message": "Hasło dla tej strony internetowej jest zagrożone. Organizacja $ORGANIZATION$ prosi o jego zmianę.", "placeholders": { "organization": { "content": "$1", @@ -2585,7 +2597,7 @@ "description": "Notification body when a login triggers an at-risk password change request and the change password domain is known." }, "atRiskNavigatePrompt": { - "message": "$ORGANIZATION$ chce, abyś zmienił to hasło, ponieważ jest ono zagrożone. Przejdź do ustawień konta, aby zmienić hasło.", + "message": "Organizacja $ORGANIZATION$ prosi o zmianę hasła, ponieważ jest ono zagrożone. Przejdź do ustawień konta, aby zmienić hasło.", "placeholders": { "organization": { "content": "$1", @@ -2595,7 +2607,7 @@ "description": "Notification body when a login triggers an at-risk password change request and no change password domain is provided." }, "reviewAndChangeAtRiskPassword": { - "message": "Przejrzyj i zmień jedno zagrożone hasło" + "message": "Sprawdź i zmień 1 zagrożone hasło" }, "reviewAndChangeAtRiskPasswordsPlural": { "message": "Przejrzyj i zmień $COUNT$ zagrożonych haseł ", @@ -2613,10 +2625,10 @@ "message": "Zaktualizuj swoje ustawienia, aby szybko autouzupełniać hasła i generować nowe" }, "reviewAtRiskLogins": { - "message": "Przejrzyj zagrożone loginy" + "message": "Sprawdź zagrożone dane logowania" }, "reviewAtRiskPasswords": { - "message": "Przejrzyj zagrożone hasła" + "message": "Sprawdź zagrożone hasła" }, "reviewAtRiskLoginsSlideDesc": { "message": "Twoje hasła organizacji są zagrożone, ponieważ są słabe, ponownie używane i/lub narażone.", @@ -2630,23 +2642,23 @@ "description": "Description of the generate password slide on the at-risk password page carousel" }, "generatePasswordSlideImgAltPeriod": { - "message": "Ilustracja menu autouzupełniania Bitwardena pokazująca wygenerowane hasło." + "message": "Ilustracja menu autouzupełniania Bitwarden pokazująca wygenerowane hasło." }, "updateInBitwarden": { - "message": "Aktualizacja w Bitwarden" + "message": "Zaktualizuj w Bitwarden" }, "updateInBitwardenSlideDesc": { - "message": "Bitwarden poprosi Cię o aktualizację hasła w menedżerze haseł.", + "message": "Bitwarden zaproponuje aktualizację hasła w menedżerze haseł.", "description": "Description of the update in Bitwarden slide on the at-risk password page carousel" }, "updateInBitwardenSlideImgAltPeriod": { - "message": "Ilustracja powiadomienia Bitwardena, skłaniająca użytkownika do zaktualizowania danych logowania." + "message": "Ilustracja powiadomienia Bitwarden, zachęcająca użytkownika do zaktualizowania danych logowania." }, "turnOnAutofill": { - "message": "Włącz autouzupełnienie" + "message": "Włącz autouzupełnianie" }, "turnedOnAutofill": { - "message": "Włączono autouzupełnianie" + "message": "Autouzupełnianie zostało włączone" }, "dismiss": { "message": "Odrzuć" @@ -2661,7 +2673,7 @@ } }, "excludedDomainsInvalidDomain": { - "message": "$DOMAIN$ nie jest prawidłową nazwą domeny", + "message": "Domena $DOMAIN$ nie jest prawidłowa", "placeholders": { "domain": { "content": "$1", @@ -2670,16 +2682,16 @@ } }, "blockedDomainsSavedSuccess": { - "message": "Zmiany w zablokowanych domenach zapisane" + "message": "Blokowane domeny zostały zapisane" }, "excludedDomainsSavedSuccess": { - "message": "Zmiany w wykluczonych domenach zapisane" + "message": "Wykluczone domeny zostały zapisane" }, "limitSendViews": { - "message": "Limit wyświetleń" + "message": "Maksymalna liczba wyświetleń" }, "limitSendViewsHint": { - "message": "Nikt nie może wyświetlić Send po osiągnieciu limitu.", + "message": "Po osiągnięciu limitu wysyłka będzie niedostępna.", "description": "Displayed under the limit views field on Send" }, "limitSendViewsCount": { @@ -2693,18 +2705,18 @@ } }, "send": { - "message": "Wyślij", + "message": "Wysyłki", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDetails": { - "message": "Szczegóły Send", + "message": "Szczegóły wysyłki", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTypeText": { "message": "Tekst" }, "sendTypeTextToShare": { - "message": "Tekst do udostępnienia" + "message": "Tekst wysyłki" }, "sendTypeFile": { "message": "Plik" @@ -2718,13 +2730,13 @@ "description": "This text will be displayed after a Send has been accessed the maximum amount of times." }, "hideTextByDefault": { - "message": "Domyślnie ukryj tekst" + "message": "Ukryj domyślnie tekst wysyłki" }, "expired": { "message": "Wygasła" }, "passwordProtected": { - "message": "Chroniona hasłem" + "message": "Zabezpieczone hasłem" }, "copyLink": { "message": "Kopiuj link" @@ -2751,7 +2763,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disabled": { - "message": "Wyłączona" + "message": "Wyłączone" }, "removePasswordConfirmation": { "message": "Czy na pewno chcesz usunąć hasło?" @@ -2761,11 +2773,11 @@ "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ę?", + "message": "Czy na pewno chcesz usunąć wysyłkę?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deleteSendPermanentConfirmation": { - "message": "Czy na pewno chcesz trwale usunąć to Send?", + "message": "Czy na pewno chcesz usunąć trwale wysyłkę?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { @@ -2776,7 +2788,7 @@ "message": "Data usunięcia" }, "deletionDateDescV2": { - "message": "Send zostanie trwale usunięte w tej dacie.", + "message": "W tym dniu wysyłka zostanie trwale usunięta.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { @@ -2795,10 +2807,10 @@ } }, "custom": { - "message": "Niestandardowe" + "message": "Niestandardowa" }, "sendPasswordDescV3": { - "message": "Zabezpiecz tę wiadomość hasłem, które będzie wymagane, aby uzyskać do niej dostęp.", + "message": "Zabezpiecz wysyłkę opcjonalnym hasłem.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createSend": { @@ -2813,7 +2825,7 @@ "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ę.", + "message": "Ze względu na zasadę organizacji, 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": { @@ -2821,15 +2833,15 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSendSuccessfully": { - "message": "Send został stworzony!", + "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." }, "sendExpiresInHoursSingle": { - "message": "Wiadomość będzie dostępna dla każdego z dostępem do tego linku przez następną godzinę.", + "message": "Wysyłka będzie dostępna przez 1 godz.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInHours": { - "message": "Wiadomość będzie dostępna dla każdego z dostępem do tego linku przez następne $HOURS$ godzin.", + "message": "Wysyłka będzie dostępna przez $HOURS$ godz.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.", "placeholders": { "hours": { @@ -2839,11 +2851,11 @@ } }, "sendExpiresInDaysSingle": { - "message": "Wiadomość będzie dostępna dla każdego z dostępem do tego linku przez 1 dzień.", + "message": "Wysyłka będzie dostępna przez 1 dzień.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInDays": { - "message": "Wiadomość będzie dostępna dla każdego z dostępem do tego linku przez następne $DAYS$ dni.", + "message": "Wysyłka będzie dostępna przez $DAYS$ dni.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.", "placeholders": { "days": { @@ -2853,7 +2865,7 @@ } }, "sendLinkCopied": { - "message": "Link Send został skopiowany", + "message": "Link wysyłki został skopiowany", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { @@ -2861,24 +2873,24 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendFilePopoutDialogText": { - "message": "Otworzyć rozszerzenie w nowym oknie?", + "message": "Otworzyć rozszerzenie w oknie?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendFilePopoutDialogDesc": { - "message": "Aby utworzyć plik Send, musisz wysunąć rozszerzenie do nowego okna.", + "message": "Otwórz okno rozszerzenia, aby utworzyć wysyłkę pliku.", "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." + "message": "Aby wybrać plik, otwórz rozszerzenie na pasku bocznym lub w oknie." }, "sendFirefoxFileWarning": { - "message": "Aby wybrać plik za pomocą przeglądarki Firefox, otwórz rozszerzenie w nowym oknie." + "message": "Aby wybrać plik, otwórz rozszerzenie na pasku bocznym lub w oknie." }, "sendSafariFileWarning": { - "message": "Aby wybrać plik za pomocą przeglądarki Safari, otwórz rozszerzenie w nowym oknie." + "message": "Aby wybrać plik, otwórz rozszerzenie w oknie." }, "popOut": { - "message": "Odepnij" + "message": "Otwórz w nowym oknie" }, "sendFileCalloutHeader": { "message": "Zanim zaczniesz" @@ -2899,7 +2911,7 @@ "message": "Wystąpił błąd podczas zapisywania dat usunięcia i wygaśnięcia." }, "hideYourEmail": { - "message": "Ukryj mój adres e-mail przed oglądającymi." + "message": "Ukryj mój adres e-mail przed odbiorcami." }, "passwordPrompt": { "message": "Potwierdź hasłem głównym" @@ -2908,16 +2920,19 @@ "message": "Potwierdź hasło główne" }, "passwordConfirmationDesc": { - "message": "Ta operacja jest chroniona. Aby kontynuować, wpisz ponownie hasło główne." + "message": "Operacja jest chroniona. Aby kontynuować, wpisz ponownie hasło główne." }, "emailVerificationRequired": { "message": "Weryfikacja adresu e-mail jest wymagana" }, "emailVerifiedV2": { - "message": "E-mail zweryfikowany" + "message": "Adres e-mail został zweryfikowany" }, "emailVerificationRequiredDesc": { - "message": "Musisz zweryfikować adres e-mail, aby korzystać z tej funkcji. Adres możesz zweryfikować w sejfie internetowym." + "message": "Musisz zweryfikować adres e-mail, aby skorzystać z tej funkcji. Adres możesz zweryfikować w sejfie internetowym." + }, + "masterPasswordSuccessfullySet": { + "message": "Hasło główne zostało ustawione" }, "updatedMasterPassword": { "message": "Hasło główne zostało zaktualizowane" @@ -2926,10 +2941,10 @@ "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ę." + "message": "Hasło główne zostało zmienione przez administratora Twojej organizacji. Aby uzyskać dostęp do sejfu, zaktualizuj hasło główne. Kontynuowanie spowoduje wylogowanie z obecnej sesji i konieczność ponownego zalogowania się. Aktywne sesje na innych urządzeniach mogą pozostać aktywne przez maksymalnie godzinę." }, "updateWeakMasterPasswordWarning": { - "message": "Twoje hasło główne nie spełnia jednej lub kilku zasad organizacji. Aby uzyskać dostęp do sejfu, musisz teraz zaktualizować swoje hasło główne. Kontynuacja wyloguje Cię z bieżącej sesji, wymagając zalogowania się ponownie. Aktywne sesje na innych urządzeniach mogą pozostać aktywne przez maksymalnie jedną godzinę." + "message": "Hasło główne nie spełnia co najmniej jednej zasady organizacji. Aby uzyskać dostęp do sejfu, zaktualizuj hasło główne. Kontynuowanie spowoduje wylogowanie z obecnej sesji i konieczność ponownego zalogowania się. Aktywne sesje na innych urządzeniach mogą pozostać aktywne przez maksymalnie godzinę." }, "tdeDisabledMasterPasswordRequired": { "message": "Twoja organizacja wyłączyła szyfrowanie zaufanego urządzenia. Ustaw hasło główne, aby uzyskać dostęp do sejfu." @@ -2938,7 +2953,7 @@ "message": "Automatyczne rejestrowanie 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." + "message": "Zasada organizacji umożliwia administratorom organizacji zmianę Twojego hasła głównego." }, "selectFolder": { "message": "Wybierz folder..." @@ -2948,7 +2963,7 @@ "description": "Used as a message within the notification bar when no folders are found" }, "orgPermissionsUpdatedMustSetPassword": { - "message": "Uprawnienia w Twojej organizacji zostały zaktualizowane, musisz teraz ustawić hasło główne.", + "message": "Uprawnienia organizacji zostały zaktualizowane. Ustaw hasło główne.", "description": "Used as a card title description on the set password page to explain why the user is there" }, "orgRequiresYouToSetPassword": { @@ -2956,7 +2971,7 @@ "description": "Used as a card title description on the set password page to explain why the user is there" }, "cardMetrics": { - "message": "z $TOTAL$ elementów", + "message": "z $TOTAL$", "placeholders": { "total": { "content": "$1", @@ -2965,7 +2980,7 @@ } }, "verificationRequired": { - "message": "Wymagana weryfikacja", + "message": "Weryfikacja jest wymagana", "description": "Default title for the user verification dialog." }, "hours": { @@ -2975,10 +2990,10 @@ "message": "Minuty" }, "vaultTimeoutPolicyAffectingOptions": { - "message": "Wymagania polityki przedsiębiorstwa zostały zastosowane do twoich opcji przekrocznia limitu czasu" + "message": "Zasady organizacji zostały zastosowane do opcji blokowania sejfu" }, "vaultTimeoutPolicyInEffect": { - "message": "Zasady organizacji mają wpływ czas blokowania sejfu. Maksymalny dozwolony czas wynosi $HOURS$ godz. i $MINUTES$ min.", + "message": "Zasady organizacji mają wpływ na czas blokowania sejfu. Maksymalny dozwolony czas wynosi $HOURS$ godz. i $MINUTES$ min.", "placeholders": { "hours": { "content": "$1", @@ -2991,7 +3006,7 @@ } }, "vaultTimeoutPolicyInEffect1": { - "message": "$HOURS$ godzin(y) i $MINUTES$ minut(y) maksymalnie.", + "message": "Maksymalnie $HOURS$ godz. i $MINUTES$ min.", "placeholders": { "hours": { "content": "$1", @@ -3004,7 +3019,7 @@ } }, "vaultTimeoutPolicyMaximumError": { - "message": "Limit czasu przekracza ograniczenie ustawione przez Twoją organizację: $HOURS$ godzin(y) i $MINUTES$ minut(y) maksymalnie", + "message": "Czas blokowania sejfu przekracza zasady organizacji. Maksymalny dozwolony czas wynosi $HOURS$ godz. i $MINUTES$ min.", "placeholders": { "hours": { "content": "$1", @@ -3034,7 +3049,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "Zasady organizacji ustawiły czas blokowania sejfu na $ACTION$.", + "message": "Zasady organizacji wymuszają sposób blokowania sejfu na $ACTION$.", "placeholders": { "action": { "content": "$1", @@ -3043,7 +3058,7 @@ } }, "vaultTimeoutTooLarge": { - "message": "Czas blokowania sejfu przekracza limit określony przez organizację." + "message": "Czas blokowania aplikacji przekracza limit określony przez organizację." }, "vaultExportDisabled": { "message": "Eksportowanie sejfu jest niedostępne" @@ -3052,19 +3067,19 @@ "message": "Co najmniej jedna zasada organizacji uniemożliwia wyeksportowanie osobistego sejfu." }, "copyCustomFieldNameInvalidElement": { - "message": "Nie można zidentyfikować poprawnego elementu formularza. Spróbuj sprawdzić kod HTML." + "message": "Nie można zidentyfikować prawidłowego elementu formularza. Sprawdź kod HTML." }, "copyCustomFieldNameNotUnique": { "message": "Nie znaleziono unikatowego identyfikatora." }, "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "Hasło główne nie jest już wymagane dla członków następującej organizacji. Proszę potwierdzić poniższą domenę u administratora organizacji." + "message": "Hasło główne nie jest już wymagane dla członków następującej organizacji. Potwierdź poniższą domenę z administratorem organizacji." }, "organizationName": { "message": "Nazwa organizacji" }, "keyConnectorDomain": { - "message": "Domena Key Connector'a" + "message": "Domena Key Connector" }, "leaveOrganization": { "message": "Opuść organizację" @@ -3076,13 +3091,13 @@ "message": "Hasło główne zostało usunięte" }, "leaveOrganizationConfirmation": { - "message": "Czy na pewno chcesz opuścić tę organizację?" + "message": "Czy na pewno chcesz opuścić organizację?" }, "leftOrganization": { - "message": "Nie należysz już do tej organizacji." + "message": "Opuszczono organizację." }, "toggleCharacterCount": { - "message": "Pokaż / Ukryj licznik znaków" + "message": "Pokaż / ukryj licznik znaków" }, "sessionTimeout": { "message": "Twoja sesja wygasła. Zaloguj się ponownie." @@ -3091,7 +3106,7 @@ "message": "Eksportowanie osobistego sejfu" }, "exportingIndividualVaultDescription": { - "message": "Z sejfu zostaną wyeksportowane tylko elementy powiązane z $EMAIL$. Elementy z sejfu organizacji nie będą uwzględnione. Tylko informacje o elemencie zostaną wyeksportowane i nie będą zawierać powiązanych załączników.", + "message": "Wyeksportowane zostaną tylko osobiste elementy konta $EMAIL$. Elementy organizacji nie zostaną uwzględnione. Wyeksportowane zostaną tylko informacje o elementach sejfu i nie będą one zawierać powiązanych załączników.", "placeholders": { "email": { "content": "$1", @@ -3127,7 +3142,7 @@ "message": "Błąd odszyfrowywania" }, "couldNotDecryptVaultItemsBelow": { - "message": "Bitwarden nie mógł odszyfrować elementów sejfu wymienionych poniżej." + "message": "Bitwarden nie mógł odszyfrować poniższych elementów sejfu." }, "contactCSToAvoidDataLossPart1": { "message": "Skontaktuj się z działem obsługi klienta,", @@ -3141,7 +3156,7 @@ "message": "Wygeneruj nazwę użytkownika" }, "generateEmail": { - "message": "Wygeneruj e-mail" + "message": "Wygeneruj adres e-mail" }, "spinboxBoundariesHint": { "message": "Wartość musi być pomiędzy $MIN$ a $MAX$.", @@ -3158,7 +3173,7 @@ } }, "passwordLengthRecommendationHint": { - "message": " Użyj $RECOMMENDED$ znaków lub więcej, aby wygenerować silne hasło.", + "message": "Użyj co najmniej $RECOMMENDED$ znaków, aby utworzyć silne hasło.", "description": "Appended to `spinboxBoundariesHint` to recommend a length to the user. This must include any language-specific 'sentence' separator characters (e.g. a space in english).", "placeholders": { "recommended": { @@ -3168,7 +3183,7 @@ } }, "passphraseNumWordsRecommendationHint": { - "message": " Użyj $RECOMMENDED$ słów lub więcej, aby wygenerować silne hasło.", + "message": "Użyj co najmniej $RECOMMENDED$ słów, aby wygenerować silne hasło wyrazowe.", "description": "Appended to `spinboxBoundariesHint` to recommend a number of words to the user. This must include any language-specific 'sentence' separator characters (e.g. a space in english).", "placeholders": { "recommended": { @@ -3191,13 +3206,13 @@ "message": "Użyj skonfigurowanej skrzynki catch-all w swojej domenie." }, "random": { - "message": "Losowa" + "message": "Losowe" }, "randomWord": { "message": "Losowe słowo" }, "websiteName": { - "message": "Nazwa strony" + "message": "Nazwa strony internetowej" }, "service": { "message": "Usługa" @@ -3206,7 +3221,7 @@ "message": "Alias przekierowania" }, "forwardedEmailDesc": { - "message": "Wygeneruj alias adresu e-mail z zewnętrznej usługi przekierowania." + "message": "Wygeneruj alias za pomocą zewnętrznej usługi." }, "forwarderDomainName": { "message": "Domena adresu e-mail", @@ -3231,7 +3246,7 @@ } }, "forwarderGeneratedBy": { - "message": "Wygenerowane przez Bitwarden.", + "message": "Wygenerowano przez Bitwarden.", "description": "Displayed with the address on the forwarding service's configuration screen." }, "forwarderGeneratedByWithWebsite": { @@ -3245,7 +3260,7 @@ } }, "forwaderInvalidToken": { - "message": "Nieprawidłowy token API dla $SERVICENAME$", + "message": "Token API $SERVICENAME$ jest nieprawidłowy", "description": "Displayed when the user's API token is empty or rejected by the forwarding service.", "placeholders": { "servicename": { @@ -3255,7 +3270,7 @@ } }, "forwaderInvalidTokenWithMessage": { - "message": "Nieprawidłowy token API dla $SERVICENAME$, błąd: $ERRORMESSAGE$", + "message": "Token API $SERVICENAME$ jest nieprawidłowy: $ERRORMESSAGE$", "description": "Displayed when the user's API token is rejected by the forwarding service with an error message.", "placeholders": { "servicename": { @@ -3269,7 +3284,7 @@ } }, "forwaderInvalidOperation": { - "message": "$SERVICENAME$ odrzucił Twoje żądanie. Skontaktuj się z dostawcą usług w celu uzyskania pomocy.", + "message": "$SERVICENAME$ odrzucił żądanie. Skontaktuj się z dostawcą usługi w celu uzyskania pomocy.", "description": "Displayed when the user is forbidden from using the API by the forwarding service.", "placeholders": { "servicename": { @@ -3279,7 +3294,7 @@ } }, "forwaderInvalidOperationWithMessage": { - "message": "$SERVICENAME$ odrzucił Twoje żądanie: $ERRORMESSAGE$", + "message": "$SERVICENAME$ odrzucił żądanie: $ERRORMESSAGE$", "description": "Displayed when the user is forbidden from using the API by the forwarding service with an error message.", "placeholders": { "servicename": { @@ -3293,7 +3308,7 @@ } }, "forwarderNoAccountId": { - "message": "Nie można uzyskać ID maskowanego konta e-mail dla $SERVICENAME$.", + "message": "Nie można uzyskać identyfikatora konta e-mail $SERVICENAME$.", "description": "Displayed when the forwarding service fails to return an account ID.", "placeholders": { "servicename": { @@ -3303,7 +3318,7 @@ } }, "forwarderNoDomain": { - "message": "Nieprawidłowa domena $SERVICENAME$.", + "message": "Domena $SERVICENAME$ jest nieprawidłowa.", "description": "Displayed when the domain is empty or domain authorization failed at the forwarding service.", "placeholders": { "servicename": { @@ -3313,7 +3328,7 @@ } }, "forwarderNoUrl": { - "message": "Nieprawidłowy adres URL $SERVICENAME$.", + "message": "Adres URL $SERVICENAME$ jest nieprawidłowy.", "description": "Displayed when the url of the forwarding service wasn't supplied.", "placeholders": { "servicename": { @@ -3323,7 +3338,7 @@ } }, "forwarderUnknownError": { - "message": "Wystąpił nieznany błąd w $SERVICENAME$.", + "message": "Wystąpił nieznany błąd $SERVICENAME$.", "description": "Displayed when the forwarding service failed due to an unknown error.", "placeholders": { "servicename": { @@ -3353,10 +3368,10 @@ "message": "Klucz API" }, "ssoKeyConnectorError": { - "message": "Błąd serwera Key Connector: upewnij się, że serwer Key Connector jest dostępny i działa poprawnie." + "message": "Wystąpił błąd serwera Key Connector. Upewnij się, że serwer jest dostępny i działa poprawnie." }, "premiumSubcriptionRequired": { - "message": "Wymagana jest subskrypcja Premium" + "message": "Wymagana jest subskrypcja premium" }, "organizationIsDisabled": { "message": "Organizacja została zawieszona." @@ -3365,7 +3380,7 @@ "message": "Nie można uzyskać dostępu do elementów w zawieszonych organizacjach. Skontaktuj się z właścicielem organizacji, aby uzyskać pomoc." }, "loggingInTo": { - "message": "Logowanie do $DOMAIN$", + "message": "Logowanie na $DOMAIN$", "placeholders": { "domain": { "content": "$1", @@ -3383,7 +3398,7 @@ "message": "Inny dostawca" }, "thirdPartyServerMessage": { - "message": "Połączono z implementacją serwera innego dostawcy, $SERVERNAME$. Zweryfikuj błędy za pomocą oficjalnego serwera lub zgłoś je serwerowi innego dostawcy.", + "message": "Połączono z implementacją serwera innego dostawcy $SERVERNAME$. Zweryfikuj błędy za pomocą oficjalnego serwera lub zgłoś je serwerowi.", "placeholders": { "servername": { "content": "$1", @@ -3416,7 +3431,7 @@ "message": "Unikalny identyfikator konta" }, "fingerprintMatchInfo": { - "message": "Upewnij się, że sejf jest odblokowany, a unikalny identyfikator konta pasuje do drugiego urządzenia." + "message": "Upewnij się, że sejf jest odblokowany, a identyfikator konta pasuje do drugiego urządzenia." }, "resendNotification": { "message": "Wyślij ponownie powiadomienie" @@ -3428,7 +3443,7 @@ "message": "Powiadomienie zostało wysłane na urządzenie." }, "notificationSentDevicePart1": { - "message": "Odblokuj Bitwarden na swoim urządzeniu lub w" + "message": "Odblokuj Bitwarden na urządzeniu lub w" }, "notificationSentDeviceAnchor": { "message": "aplikacji internetowej" @@ -3437,40 +3452,65 @@ "message": "Upewnij się, że fraza odcisku palca zgadza się z tą poniżej, zanim zatwierdzisz." }, "aNotificationWasSentToYourDevice": { - "message": "Powiadomienie zostało wysłane na twoje urządzenie" + "message": "Powiadomienie zostało wysłane na urządzenie" }, "youWillBeNotifiedOnceTheRequestIsApproved": { - "message": "Zostaniesz powiadomiony po zatwierdzeniu prośby" + "message": "Zostaniesz powiadomiony po potwierdzeniu" }, "needAnotherOptionV1": { - "message": "Potrzebujesz innego sposobu?" + "message": "Potrzebujesz innej opcji?" }, "loginInitiated": { "message": "Logowanie rozpoczęte" }, "logInRequestSent": { - "message": "Żądanie wysłane" + "message": "Prośba została wysłana" + }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Logowanie potwierdzone dla $EMAIL$ na $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Odrzucono próby logowania z innego urządzenia. Jeśli to naprawdę Ty, spróbuj ponownie zalogować się za pomocą urządzenia." + }, + "device": { + "message": "Urządzenie" + }, + "loginStatus": { + "message": "Status zalogowania" + }, + "masterPasswordChanged": { + "message": "Hasło główne zostało zapisane" }, "exposedMasterPassword": { - "message": "Ujawnione hasło główne" + "message": "Hasło główne zostało ujawnione" }, "exposedMasterPasswordDesc": { - "message": "Hasło ujawnione w wyniku naruszenia ochrony danych. Użyj unikalnego hasła, aby chronić swoje konto. Czy na pewno chcesz użyć ujawnionego hasła?" + "message": "Hasło zostało ujawnione w wycieku danych. Użyj unikalnego hasła, aby chronić konto. Czy na pewno chcesz użyć ujawnionego hasła?" }, "weakAndExposedMasterPassword": { - "message": "Słabe i ujawnione hasło główne" + "message": "Hasło główne jest słabe i ujawnione" }, "weakAndBreachedMasterPasswordDesc": { - "message": "Słabe hasło ujawnione w wyniku naruszenia ochrony danych. Użyj silnego i unikalnego hasła, aby chronić swoje konto. Czy na pewno chcesz użyć tego hasła?" + "message": "Hasło jest słabe i zostało ujawnione w wycieku danych. Użyj mocnego i unikalnego hasła, aby chronić konto. Czy na pewno chcesz użyć tego hasła?" }, "checkForBreaches": { - "message": "Sprawdź znane naruszenia ochrony danych tego hasła" + "message": "Sprawdź hasło w znanych wyciekach danych" }, "important": { "message": "Ważne:" }, "masterPasswordHint": { - "message": "Twoje hasło główne nie może zostać odzyskane, jeśli je zapomnisz!" + "message": "Zapomniane hasło główne nie może zostać odzyskane!" }, "characterMinimum": { "message": "Minimum znaków: $LENGTH$", @@ -3488,7 +3528,7 @@ "message": "Jak autouzupełniać" }, "autofillSelectInfoWithCommand": { - "message": "Wybierz element z tego ekranu, użyj skrótu $COMMAND$ lub zobacz inne opcje w ustawieniach.", + "message": "Wybierz element, użyj skrótu $COMMAND$ lub zobacz inne opcje w ustawieniach.", "placeholders": { "command": { "content": "$1", @@ -3500,7 +3540,7 @@ "message": "Wybierz element z tego ekranu lub zobacz inne opcje w ustawieniach." }, "gotIt": { - "message": "Rozumiem" + "message": "Ok" }, "autofillSettings": { "message": "Ustawienia autouzupełniania" @@ -3515,13 +3555,13 @@ "message": "Zarządzaj skrótami" }, "autofillShortcut": { - "message": "Skrót klawiaturowy autouzupełniania" + "message": "Skrót klawiszowy autouzupełniania" }, "autofillLoginShortcutNotSet": { "message": "Skrót autouzupełniania nie jest ustawiony. Zmień to w ustawieniach przeglądarki." }, "autofillLoginShortcutText": { - "message": "Skrót autouzupełniania to: $COMMAND$. Zmień to w ustawieniach przeglądarki.", + "message": "Skrót autouzupełniania to $COMMAND$. Zmień skróty w ustawieniach przeglądarki.", "placeholders": { "command": { "content": "$1", @@ -3544,26 +3584,139 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Zapamiętaj to urządzenie, aby przyszłe logowania były bezproblemowe" }, + "manageDevices": { + "message": "Zarządzaj urządzeniami" + }, + "currentSession": { + "message": "Obecna sesja" + }, + "mobile": { + "message": "Telefon", + "description": "Mobile app" + }, + "extension": { + "message": "Rozszerzenie", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Komputer", + "description": "Desktop app" + }, + "webVault": { + "message": "Sejf internetowy" + }, + "webApp": { + "message": "Aplikacja internetowa" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Zapytanie oczekuje" + }, + "firstLogin": { + "message": "Pierwsze logowanie" + }, + "trusted": { + "message": "Zaufane" + }, + "needsApproval": { + "message": "Potwierdzenie jest wymagane" + }, + "devices": { + "message": "Urządzenia" + }, + "accessAttemptBy": { + "message": "Próba dostępu przez $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Potwierdź dostęp" + }, + "denyAccess": { + "message": "Odmów dostępu" + }, + "time": { + "message": "Czas" + }, + "deviceType": { + "message": "Rodzaj urządzenia" + }, + "loginRequest": { + "message": "Żądanie logowania" + }, + "thisRequestIsNoLongerValid": { + "message": "Prośba nie jest już ważna." + }, + "areYouTryingToAccessYourAccount": { + "message": "Czy próbujesz uzyskać dostęp do swojego konta?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Logowanie potwierdzone dla $EMAIL$ na $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Odrzucono próby logowania z innego urządzenia. Jeśli to naprawdę Ty, spróbuj ponownie zalogować się za pomocą urządzenia." + }, + "loginRequestHasAlreadyExpired": { + "message": "Prośba logowania wygasła." + }, + "justNow": { + "message": "Teraz" + }, + "requestedXMinutesAgo": { + "message": "$MINUTES$ min temu", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { - "message": "Wymagane zatwierdzenie urządzenia. Wybierz opcję zatwierdzenia poniżej:" + "message": "Potwierdzenie urządzenia jest wymagane. Wybierz opcję:" }, "deviceApprovalRequiredV2": { - "message": "Wymagane zatwierdzenie urządzenia" + "message": "Potwierdzenie urządzenia jest wymagane" }, "selectAnApprovalOptionBelow": { - "message": "Wybierz opcję zatwierdzenia poniżej" + "message": "Wybierz opcję potwierdzenia" }, "rememberThisDevice": { - "message": "Zapamiętaj to urządzenie" + "message": "Zapamiętaj urządzenie" }, "uncheckIfPublicDevice": { - "message": "Odznacz, jeśli używasz publicznego urządzenia" + "message": "Wyłącz na obcych urządzeniach" }, "approveFromYourOtherDevice": { - "message": "Zatwierdź z innego twojego urządzenia" + "message": "Potwierdź za pomocą innego urządzenia" }, "requestAdminApproval": { - "message": "Poproś administratora o zatwierdzenie" + "message": "Poproś administratora o potwierdzenie" + }, + "unableToCompleteLogin": { + "message": "Nie można ukończyć logowania" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Musisz zalogować się na zaufanym urządzeniu lub poprosić administratora o przypisanie hasła." }, "ssoIdentifierRequired": { "message": "Identyfikator organizacji jest wymagany." @@ -3575,19 +3728,19 @@ "message": "Sprawdź swoją pocztę e-mail" }, "followTheLinkInTheEmailSentTo": { - "message": "Kliknij łącze w wiadomości e-mail wysłanej do" + "message": "Kliknij link w wiadomości wysłanej na adres" }, "andContinueCreatingYourAccount": { "message": "i kontynuuj tworzenie konta." }, "noEmail": { - "message": "Brak wiadomości e-mail?" + "message": "Brak wiadomości?" }, "goBack": { "message": "Wróć" }, "toEditYourEmailAddress": { - "message": "aby edytować swój adres e-mail." + "message": ", aby edytować adres e-mail." }, "eu": { "message": "UE", @@ -3603,19 +3756,19 @@ "message": "Wyświetl" }, "accountSuccessfullyCreated": { - "message": "Konto pomyślnie utworzone!" + "message": "Konto zostało utworzone!" }, "adminApprovalRequested": { - "message": "Poproszono administratora o zatwierdzenie" + "message": "Poproszono administratora o potwierdzenie" }, "adminApprovalRequestSentToAdmins": { - "message": "Twoja prośba została wysłana do Twojego administratora." + "message": "Prośba została wysłana do administratora." }, "troubleLoggingIn": { - "message": "Problem z zalogowaniem?" + "message": "Problem z logowaniem?" }, "loginApproved": { - "message": "Logowanie zatwierdzone" + "message": "Logowanie zostało potwierdzone" }, "userEmailMissing": { "message": "Brak adresu e-mail użytkownika" @@ -3642,20 +3795,20 @@ "message": "Dla bezpieczeństwa Twojego konta potwierdź tylko, jeśli przyznano temu użytkownikowi dostęp awaryjny i jego odcisk palca pasuje do tego, co widnieje na jego koncie" }, "orgTrustWarning": { - "message": "Dla zapewnienia bezpieczeństwa konta kontynuuj tylko wtedy, gdy jesteś członkiem tej organizacji, włączono odzyskiwanie konta, a odcisk palca wyświetlany poniżej pasuje do odcisku palca organizacji." + "message": "Kontynuuj tylko wtedy, gdy jesteś członkiem organizacji, masz włączone odzyskiwanie konta, a unikalny identyfikator pasuje do organizacji." }, "orgTrustWarning1": { - "message": "Polityka korporacyjna tej organizacji umożliwia zapisanie Cię do programu odzyskiwania kont. Rejestracja umożliwi administratorom organizacji zmianę Twojego hasła. Możesz kontynuować tylko wtedy, gdy znasz tę organizację, a odcisk palca pokazany poniżej pasuje do odcisku palca tej organizacji." + "message": "Zasada organizacji pozwala administratorom organizacji na zmianę Twojego hasła. Kontynuuj tylko wtedy, gdy rozpoznajesz organizację, a unikalny identyfikator pasuje do organizacji." }, "trustUser": { "message": "Zaufaj użytkownikowi" }, "sendsTitleNoItems": { - "message": "Wysyłaj bezpiecznie poufne informacje", + "message": "Wysyłaj poufne informacje w bezpieczny sposób", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendsBodyNoItems": { - "message": "Udostępniaj pliki i dane bezpiecznie każdemu, na każdej platformie. Twoje dane pozostaną zaszyfrowane end-to-end przy jednoczesnym ograniczeniu narażenia.", + "message": "Udostępniaj pliki i teksty każdemu, na dowolnej platformie. Informacje będę szyfrowane end-to-end, zapewniając poufność.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "inputRequired": { @@ -3668,7 +3821,7 @@ "message": "Szukaj" }, "inputMinLength": { - "message": "Dane wejściowe muszą zawierać co najmniej $COUNT$ znaki(-ów).", + "message": "Dane wejściowe muszą składać się z co najmniej $COUNT$ znaków.", "placeholders": { "count": { "content": "$1", @@ -3713,17 +3866,17 @@ } }, "multipleInputEmails": { - "message": "Co najmniej 1 e-mail jest nieprawidłowy" + "message": "Co najmniej 1 adres e-mail jest nieprawidłowy" }, "inputTrimValidator": { "message": "Tekst nie może zawierać tylko spacji.", "description": "Notification to inform the user that a form's input can't contain only whitespace." }, "inputEmail": { - "message": "Dane wejściowe nie są adresem e-mail." + "message": "To nie jest adres e-mail." }, "fieldsNeedAttention": { - "message": "Pola powyżej wymagające Twojej uwagi: $COUNT$.", + "message": "Pola wymagające uwagi: $COUNT$.", "placeholders": { "count": { "content": "$1", @@ -3732,10 +3885,10 @@ } }, "singleFieldNeedsAttention": { - "message": "1 pole wymaga Twojej uwagi." + "message": "1 pole wymaga uwagi." }, "multipleFieldsNeedAttention": { - "message": "Pola wymagające Twojej uwagi: $COUNT$.", + "message": "Pola wymagające uwagi: $COUNT$.", "placeholders": { "count": { "content": "$1", @@ -3753,7 +3906,7 @@ "message": "Pobieranie opcji..." }, "multiSelectNotFound": { - "message": "Nie znaleziono żadnych pozycji" + "message": "Nie znaleziono elementów" }, "multiSelectClearAll": { "message": "Wyczyść wszystko" @@ -3808,11 +3961,11 @@ "description": "Page title in overlay" }, "unlockYourAccountToViewMatchingLogins": { - "message": "Odblokuj swoje konto, aby wyświetlić pasujące elementy", + "message": "Odblokuj konto, aby zobaczy pasujące dane logowania", "description": "Text to display in overlay when the account is locked." }, "unlockYourAccountToViewAutofillSuggestions": { - "message": "Odblokuj swoje konto, aby zobaczyć sugestie autouzupełniania", + "message": "Odblokuj konto, aby zobaczyć sugestie autouzupełniania", "description": "Text to display in overlay when the account is locked." }, "unlockAccount": { @@ -3820,19 +3973,19 @@ "description": "Button text to display in overlay when the account is locked." }, "unlockAccountAria": { - "message": "Odblokuj swoje konto, otwiera się w nowym oknie", + "message": "Odblokuj konto, otwiera się w nowym oknie", "description": "Screen reader text (aria-label) for unlock account button in overlay" }, "totpCodeAria": { - "message": "Kod weryfikacyjny jednorazowego hasła oparty na czasie", + "message": "Kod weryfikacyjny TOTP", "description": "Aria label for the totp code displayed in the inline menu for autofill" }, "totpSecondsSpanAria": { - "message": "Pozostały czas do wygaśnięcia bieżącego TOTP", + "message": "Pozostały czas do wygaśnięcia kodu TOTP", "description": "Aria label for the totp seconds displayed in the inline menu for autofill" }, "fillCredentialsFor": { - "message": "Wypełnij dane logowania dla", + "message": "Uzupełnij dane logowania dla", "description": "Screen reader text for when overlay item is in focused" }, "partialUsername": { @@ -3856,7 +4009,7 @@ "description": "Button text to display within inline menu when there are no matching items on a login field" }, "addNewLoginItemAria": { - "message": "Dodaj nowe dane logowania do sejfu, otwiera się w nowym oknie", + "message": "Dodaj nowe dane logowania, otwiera się w nowym oknie", "description": "Screen reader text (aria-label) for new login button within inline menu" }, "newCard": { @@ -3864,7 +4017,7 @@ "description": "Button text to display within inline menu when there are no matching items on a credit card field" }, "addNewCardItemAria": { - "message": "Dodaj nową kartę do sejfu, otwiera się w nowym oknie", + "message": "Dodaj nową kartę, otwiera się w nowym oknie", "description": "Screen reader text (aria-label) for new card button within inline menu" }, "newIdentity": { @@ -3872,11 +4025,11 @@ "description": "Button text to display within inline menu when there are no matching items on an identity field" }, "addNewIdentityItemAria": { - "message": "Dodaj nową tożsamość do sejfu, otwiera się w nowym oknie", + "message": "Dodaj nową tożsamość, otwiera się w nowym oknie", "description": "Screen reader text (aria-label) for new identity button within inline menu" }, "bitwardenOverlayMenuAvailable": { - "message": "Dostępne menu autouzupełniania Bitwarden. Naciśnij przycisk strzałki w dół, aby wybrać.", + "message": "Dostępne menu autouzupełniania Bitwarden. Kliknij strzałkę w dół, aby wybrać.", "description": "Screen reader text for announcing when the overlay opens on the page" }, "turnOn": { @@ -3890,7 +4043,7 @@ "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" }, "importError": { - "message": "Błąd importu" + "message": "Błąd importowania" }, "importErrorDesc": { "message": "Wystąpił problem z danymi, które chcesz zaimportować. Rozwiąż poniższe problemy w Twoim pliku i spróbuj ponownie." @@ -3902,7 +4055,7 @@ "message": "Opis" }, "importSuccess": { - "message": "Importowanie danych zakończone sukcesem" + "message": "Dane zostały zaimportowane" }, "importSuccessNumberOfItems": { "message": "Zaimportowano elementów: $AMOUNT$.", @@ -3920,10 +4073,10 @@ "message": "Weryfikacja dla tej akcji jest wymagana. Ustaw kod PIN, aby kontynuować." }, "setPin": { - "message": "Ustaw PIN" + "message": "Ustaw kod PIN" }, "verifyWithBiometrics": { - "message": "Weryfikuj za pomocą biometrii" + "message": "Zweryfikuj biometrią" }, "awaitingConfirmation": { "message": "Oczekiwanie na potwierdzenie" @@ -3938,16 +4091,16 @@ "message": "Użyj hasła głównego" }, "usePin": { - "message": "Użyj PINu" + "message": "Użyj kodu PIN" }, "useBiometrics": { "message": "Użyj biometrii" }, "enterVerificationCodeSentToEmail": { - "message": "Wpisz kod weryfikacyjny, który został wysłany na adres e-mail." + "message": "Wpisz kod weryfikacyjny wysłany na adres e-mail." }, "resendCode": { - "message": "Wysłać kod ponownie" + "message": "Wyślij ponownie kod" }, "total": { "message": "Łącznie" @@ -3962,19 +4115,19 @@ } }, "duoHealthCheckResultsInNullAuthUrlError": { - "message": "Wystąpił błąd podczas połączenia z usługą Duo. Aby uzyskać pomoc, użyj innej metody dwustopniowego logowania lub skontaktuj się z Duo." + "message": "Wystąpił błąd podczas połączenia z usługą Duo. Użyj innej metody logowania dwustopniowego lub skontaktuj się z Duo w celu uzyskania pomocy." }, "duoRequiredForAccount": { - "message": "Dwustopniowe logowanie Duo jest wymagane dla Twojego konta." + "message": "Konto wymaga logowania dwustopniowego Duo." }, "popoutExtension": { - "message": "Otwórz rozszerzenie w nowym oknie" + "message": "Otwórz rozszerzenie w oknie" }, "launchDuo": { - "message": "Uruchom DUO" + "message": "Uruchom Duo" }, "importFormatError": { - "message": "Dane nie są poprawnie sformatowane. Sprawdź importowany plik i spróbuj ponownie." + "message": "Dane nie są prawidłowo sformatowane. Sprawdź plik i spróbuj ponownie." }, "importNothingError": { "message": "Nic nie zostało zaimportowane." @@ -3983,7 +4136,7 @@ "message": "Wystąpił błąd podczas odszyfrowywania pliku. Klucz szyfrowania nie pasuje do klucza użytego podczas eksportowania danych." }, "invalidFilePassword": { - "message": "Hasło do pliku jest nieprawidłowe. Użyj hasła które podano przy tworzeniu pliku eksportu." + "message": "Hasło pliku jest nieprawidłowe. Użyj prawidłowego hasła." }, "destination": { "message": "Miejsce docelowe" @@ -3998,7 +4151,7 @@ "message": "Wybierz kolekcję" }, "importTargetHint": { - "message": "Wybierz tę opcję, jeśli chcesz, aby zawartość zaimportowanego pliku została przeniesiona do $DESTINATION$", + "message": "Wybierz tę opcję, jeśli chcesz przenieść dane do $DESTINATION$", "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", "placeholders": { "destination": { @@ -4023,7 +4176,7 @@ "message": "Nie wybrano pliku" }, "orCopyPasteFileContents": { - "message": "lub skopiuj/wklej treść pliku" + "message": "lub wklej zawartość pliku" }, "instructionsFor": { "message": "Instrukcja dla $NAME$", @@ -4039,7 +4192,7 @@ "message": "Potwierdź importowanie sejfu" }, "confirmVaultImportDesc": { - "message": "Plik jest chroniony hasłem. Wprowadź hasło pliku, aby zaimportować dane." + "message": "Plik jest chroniony hasłem. Wpisz hasło pliku, aby zaimportować dane." }, "confirmFilePassword": { "message": "Potwierdź hasło pliku" @@ -4051,7 +4204,7 @@ "message": "Klucz dostępu" }, "accessing": { - "message": "Uzyskiwanie dostępu" + "message": "Logowanie na" }, "loggedInExclamation": { "message": "Zalogowano!" @@ -4060,28 +4213,28 @@ "message": "Klucz dostępu nie zostanie skopiowany" }, "passkeyNotCopiedAlert": { - "message": "Klucz dostępu nie zostanie skopiowany do sklonowanego elementu. Czy chcesz kontynuować klonowanie tego elementu?" + "message": "Klucz dostępu nie zostanie skopiowany do sklonowanego elementu. Czy chcesz kontynuować klonowanie elementu?" }, "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { "message": "Weryfikacja jest wymagana przez stronę inicjującą. Ta funkcja nie jest jeszcze zaimplementowana dla kont bez hasła głównego." }, "logInWithPasskeyQuestion": { - "message": "Zalogować za pomocą klucza dostępu?" + "message": "Zalogować się kluczem dostępu?" }, "passkeyAlreadyExists": { - "message": "Klucz dostępu już istnieje dla tej aplikacji." + "message": "Klucz dostępu dla tej aplikacji już istnieje." }, "noPasskeysFoundForThisApplication": { "message": "Nie znaleziono klucza dostępu dla tej aplikacji." }, "noMatchingPasskeyLogin": { - "message": "Nie masz pasujących danych logowania do tej witryny." + "message": "Brak pasujących danych logowania do tej strony." }, "noMatchingLoginsForSite": { - "message": "Brak pasujących loginów dla tej witryny" + "message": "Brak pasujących danych logowania dla tej strony" }, "searchSavePasskeyNewLogin": { - "message": "Wyszukaj albo zapisz klucz dostępu jako nowy login" + "message": "Wyszukaj albo zapisz klucz dostępu jako nowe dane logowania" }, "confirm": { "message": "Potwierdź" @@ -4096,7 +4249,7 @@ "message": "Wybierz dane logowania, do których przypisać klucz dostępu" }, "chooseCipherForPasskeyAuth": { - "message": "Wybierz klucz dostępu, żeby się zalogować" + "message": "Wybierz klucz dostępu" }, "passkeyItem": { "message": "Element klucza dostępu" @@ -4105,49 +4258,49 @@ "message": "Zastąpić klucz dostępu?" }, "overwritePasskeyAlert": { - "message": "Ten element zawiera już klucz dostępu. Czy na pewno chcesz nadpisać bieżący klucza dostępu?" + "message": "Element zawiera już klucz dostępu. Czy na pewno chcesz zastąpić obecny klucz dostępu?" }, "featureNotSupported": { "message": "Funkcja nie jest jeszcze obsługiwana" }, "yourPasskeyIsLocked": { - "message": "Wymagane uwierzytelnienie, aby używać klucza dostępu. Sprawdź swoją tożsamość, aby kontynuować." + "message": "Aby użyć klucza dostępu, wymagane jest uwierzytelnienie. Zweryfikuj swoją tożsamość." }, "multifactorAuthenticationCancelled": { - "message": "Uwierzytelnianie wieloskładnikowe zostało anulowane" + "message": "Logowanie dwustopniowe zostało anulowane" }, "noLastPassDataFound": { "message": "Nie znaleziono danych LastPass" }, "incorrectUsernameOrPassword": { - "message": "Nieprawidłowa nazwa użytkownika lub hasło" + "message": "Nazwa użytkownika lub hasło są nieprawidłowe" }, "incorrectPassword": { - "message": "Błędne hasło" + "message": "Hasło jest nieprawidłowe" }, "incorrectCode": { - "message": "Błędny kod" + "message": "Kod jest nieprawidłowy" }, "incorrectPin": { - "message": "Niepoprawny PIN" + "message": "Kod PIN jest nieprawidłowy" }, "multifactorAuthenticationFailed": { - "message": "Uwierzytelnianie wieloskładnikowe nie powiodło się" + "message": "Logowanie dwustopniowe nie powiodło się" }, "includeSharedFolders": { "message": "Dołącz udostępnione foldery" }, "lastPassEmail": { - "message": "E-mail LastPass" + "message": "Adres e-mail LastPass" }, "importingYourAccount": { "message": "Importowanie konta..." }, "lastPassMFARequired": { - "message": "Wymagane jest uwierzytelnianie wieloskładnikowe LastPass" + "message": "Logowanie dwustopniowe LastPass jest wymagane" }, "lastPassMFADesc": { - "message": "Wprowadź jednorazowy kod z aplikacji uwierzytelniającej" + "message": "Wpisz jednorazowy kod z aplikacji uwierzytelniającej" }, "lastPassOOBDesc": { "message": "Zatwierdź żądanie logowania w aplikacji uwierzytelniającej lub wprowadź jednorazowe hasło." @@ -4159,10 +4312,10 @@ "message": "Hasło główne LastPass" }, "lastPassAuthRequired": { - "message": "Wymagane uwierzytelnianie LastPass" + "message": "Uwierzytelnianie LastPass jest wymagane" }, "awaitingSSO": { - "message": "Oczekiwanie na uwierzytelnianie SSO" + "message": "Oczekiwanie na logowanie jednokrotne" }, "awaitingSSODesc": { "message": "Kontynuuj logowanie przy użyciu danych firmowych." @@ -4178,13 +4331,13 @@ "message": "Importuj z CSV" }, "lastPassTryAgainCheckEmail": { - "message": "Spróbuj ponownie lub poszukaj wiadomości e-mail od LastPass, aby zweryfikować, że to Ty." + "message": "Spróbuj ponownie lub poszukaj wiadomości od LastPass, aby zweryfikować logowanie." }, "collection": { "message": "Kolekcja" }, "lastPassYubikeyDesc": { - "message": "Włóż YubiKey powiązany z Twoim kontem LastPass do portu USB komputera, a następnie naciśnij jego przycisk." + "message": "Włóż klucz YubiKey powiązany z kontem LastPass do portu USB urządzenia, a następnie dotknij jego przycisku." }, "switchAccount": { "message": "Przełącz konto" @@ -4223,16 +4376,16 @@ "message": "hostowany w" }, "useDeviceOrHardwareKey": { - "message": "Użyj swojego urządzenia lub klucza sprzętowego" + "message": "Użyj urządzenia lub klucza sprzętowego" }, "justOnce": { "message": "Tylko raz" }, "alwaysForThisSite": { - "message": "Zawsze dla tej witryny" + "message": "Zawsze dla tej strony" }, "domainAddedToExcludedDomains": { - "message": "$DOMAIN$ dodana do wykluczonych domen.", + "message": "Domena $DOMAIN$ została dodana do wykluczonych domen.", "placeholders": { "domain": { "content": "$1", @@ -4244,36 +4397,56 @@ "message": "Popularne formaty", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "Wykrywanie URI polega na tym, jak Bitwarden identyfikuje sugestie autouzupełniania.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "„Wyrażenie regularne” jest zaawansowaną opcją zwiększającą ryzyko ujawnienia danych logowania.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "„Rozpoczyna się od” jest zaawansowaną opcją zwiększającą ryzyko ujawnienia danych logowania.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Dowiedz się więcej o wykrywaniu dopasowania", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Opcje zaawansowane", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { - "message": "Kontynuować do ustawień przeglądarki?", + "message": "Przejść do ustawień przeglądarki?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" }, "confirmContinueToHelpCenter": { - "message": "Kontynuować do centrum pomocy?", + "message": "Przejść do centrum pomocy?", "description": "Title for dialog which asks if the user wants to proceed to a relevant Help Center page" }, "confirmContinueToHelpCenterPasswordManagementContent": { - "message": "Zmień ustawienia autouzupełniania przeglądarki i zarządzania hasłami.", + "message": "Zmień ustawienia autouzupełniania i haseł przeglądarki.", "description": "Body content for dialog which asks if the user wants to proceed to the Help Center's page about browser password management settings" }, "confirmContinueToHelpCenterKeyboardShortcutsContent": { - "message": "Możesz przeglądać i ustawiać skróty klawiaturowe rozszerzeń w ustawieniach przeglądarki.", + "message": "Możesz zmieniać skróty rozszerzenia w ustawieniach przeglądarki.", "description": "Body content for dialog which asks if the user wants to proceed to the Help Center's page about browser keyboard shortcut settings" }, "confirmContinueToBrowserPasswordManagementSettingsContent": { - "message": "Zmień ustawienia autouzupełniania przeglądarki i zarządzania hasłami.", + "message": "Zmień ustawienia autouzupełniania i haseł przeglądarki.", "description": "Body content for dialog which asks if the user wants to proceed to the browser's password management settings page" }, "confirmContinueToBrowserKeyboardShortcutSettingsContent": { - "message": "Możesz przeglądać i ustawiać skróty klawiaturowe rozszerzeń w ustawieniach przeglądarki.", + "message": "Możesz zmieniać skróty rozszerzenia w ustawieniach przeglądarki.", "description": "Body content for dialog which asks if the user wants to proceed to the browser's keyboard shortcut settings page" }, "overrideDefaultBrowserAutofillTitle": { - "message": "Czy Bitwarden ma być domyślnym menadżerem haseł?", + "message": "Ustawić Bitwarden jako domyślny menadżer haseł?", "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" }, "overrideDefaultBrowserAutofillDescription": { - "message": "Ignorowanie tej opcji może spowodować konflikty pomiędzy menu autouzupełniania Bitwarden a przeglądarką.", + "message": "Zignorowanie tej opcji może spowodować konflikty pomiędzy autouzupełnianiem Bitwarden a przeglądarką.", "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" }, "overrideDefaultBrowserAutoFillSettings": { @@ -4293,7 +4466,7 @@ "description": "Button text for the setting that allows overriding the default browser autofill settings" }, "saveCipherAttemptSuccess": { - "message": "Pomyślnie zapisano dane logowania!", + "message": "Dane logowania zostały zapisane!", "description": "Notification message for when saving credentials has succeeded." }, "passwordSaved": { @@ -4301,7 +4474,7 @@ "description": "Notification message for when saving credentials has succeeded." }, "updateCipherAttemptSuccess": { - "message": "Pomyślnie zaktualizowano dane logowania!", + "message": "Dane logowania zostały zaktualizowane!", "description": "Notification message for when updating credentials has succeeded." }, "passwordUpdated": { @@ -4309,7 +4482,7 @@ "description": "Notification message for when updating credentials has succeeded." }, "saveCipherAttemptFailed": { - "message": "Błąd podczas zapisywania danych logowania. Sprawdź konsolę, aby uzyskać szczegóły.", + "message": "Wystąpił błąd podczas zapisywania danych logowania. Sprawdź konsolę, aby sprawdzić szczegóły.", "description": "Notification message for when saving credentials has failed." }, "success": { @@ -4328,19 +4501,19 @@ "message": "Sugerowane elementy" }, "autofillSuggestionsTip": { - "message": "Zapisz element logowania dla tej witryny, aby automatycznie wypełnić" + "message": "Zapisz dane logowania" }, "yourVaultIsEmpty": { - "message": "Twój sejf jest pusty" + "message": "Sejf jest pusty" }, "noItemsMatchSearch": { - "message": "Żaden element nie pasuje do Twojego wyszukiwania" + "message": "Brak pasujących elementów" }, "clearFiltersOrTryAnother": { "message": "Wyczyść filtry lub użyj innej frazy" }, "copyInfoTitle": { - "message": "Skopiuj informacje - $ITEMNAME$", + "message": "Kopiuj informacje - $ITEMNAME$", "description": "Title for a button that opens a menu with options to copy information from an item.", "placeholders": { "itemname": { @@ -4350,7 +4523,7 @@ } }, "copyNoteTitle": { - "message": "Skopiuj notatkę - $ITEMNAME$", + "message": "Kopiuj notatkę - $ITEMNAME$", "description": "Title for a button copies a note to the clipboard.", "placeholders": { "itemname": { @@ -4380,7 +4553,7 @@ } }, "viewItemTitle": { - "message": "Zobacz element - $ITEMNAME$", + "message": "Pokaż element - $ITEMNAME$", "description": "Title for a link that opens a view for an item.", "placeholders": { "itemname": { @@ -4390,7 +4563,7 @@ } }, "viewItemTitleWithField": { - "message": "Zobacz element - $ITEMNAME$ - $FIELD$", + "message": "Pokaż element - $ITEMNAME$ - $FIELD$", "description": "Title for a link that opens a view for an item.", "placeholders": { "itemname": { @@ -4404,7 +4577,7 @@ } }, "autofillTitle": { - "message": "Autouzupełnij - $ITEMNAME$", + "message": "Uzupełnij - $ITEMNAME$", "description": "Title for a button that autofills a login item.", "placeholders": { "itemname": { @@ -4414,7 +4587,7 @@ } }, "autofillTitleWithField": { - "message": "Autouzupełnij - $ITEMNAME$ - $FIELD$", + "message": "Uzupełnij - $ITEMNAME$ - $FIELD$", "description": "Title for a button that autofills a login item.", "placeholders": { "itemname": { @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Kopiuj $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Kopiuj $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, @@ -4448,16 +4621,16 @@ "message": "Przypisz do kolekcji" }, "copyEmail": { - "message": "Skopiuj e-mail" + "message": "Kopiuj adres e-mail" }, "copyPhone": { - "message": "Skopiuj telefon" + "message": "Kopiuj numer telefonu" }, "copyAddress": { - "message": "Skopiuj adres" + "message": "Kopiuj adres" }, "adminConsole": { - "message": "Konsola Administracyjna" + "message": "Konsola administratora" }, "accountSecurity": { "message": "Bezpieczeństwo konta" @@ -4475,7 +4648,7 @@ "message": "Wystąpił błąd podczas przypisywania folderu." }, "viewItemsIn": { - "message": "Zobacz elementy w $NAME$", + "message": "Pokaż elementy w $NAME$", "description": "Button to view the contents of a folder or collection", "placeholders": { "name": { @@ -4495,7 +4668,7 @@ } }, "new": { - "message": "Nowy" + "message": "Nowy element" }, "removeItem": { "message": "Usuń $NAME$", @@ -4508,7 +4681,7 @@ } }, "itemsWithNoFolder": { - "message": "Elementy bez folderu" + "message": "Nieprzypisane" }, "itemDetails": { "message": "Szczegóły elementu" @@ -4536,19 +4709,19 @@ "message": "Historia elementu" }, "lastEdited": { - "message": "Ostatnio edytowany" + "message": "Zaktualizowano" }, "ownerYou": { "message": "Właściciel: Ty" }, "linked": { - "message": "Powiązane" + "message": "Powiązane pole" }, "copySuccessful": { - "message": "Kopiowanie zakończone sukcesem" + "message": "Skopiowano" }, "upload": { - "message": "Wyślij" + "message": "Prześlij" }, "addAttachment": { "message": "Dodaj załącznik" @@ -4578,13 +4751,13 @@ "message": "Pobierz Bitwarden" }, "downloadBitwardenOnAllDevices": { - "message": "Pobierz Bitwarden na wszystkich urządzeniach" + "message": "Pobierz Bitwarden na wszystkie urządzenia" }, "getTheMobileApp": { "message": "Pobierz aplikację mobilną" }, "getTheMobileAppDesc": { - "message": "Uzyskaj dostęp do haseł przy pomocy aplikacji mobilnej Bitwarden." + "message": "Uzyskaj dostęp do haseł za pomocą aplikacji mobilnej Bitwarden." }, "getTheDesktopApp": { "message": "Pobierz aplikację desktopową" @@ -4593,7 +4766,7 @@ "message": "Uzyskaj dostęp do sejfu bez przeglądarki, a następnie ustaw odblokowanie biometryczne, aby przyspieszyć odblokowanie zarówno w aplikacji desktopowej, jak i w rozszerzeniu przeglądarki." }, "downloadFromBitwardenNow": { - "message": "Pobierz teraz z bitwarden.com" + "message": "Pobierz z bitwarden.com" }, "getItOnGooglePlay": { "message": "Pobierz z Google Play" @@ -4602,7 +4775,7 @@ "message": "Pobierz z App Store" }, "permanentlyDeleteAttachmentConfirmation": { - "message": "Czy na pewno chcesz trwale usunąć ten załącznik?" + "message": "Czy na pewno chcesz usunąć trwale załącznik?" }, "premium": { "message": "Premium" @@ -4617,7 +4790,7 @@ "message": "Filtruj sejf" }, "filterApplied": { - "message": "Zastosowano jeden filtr" + "message": "Zastosowano 1 filtr" }, "filterAppliedPlural": { "message": "$COUNT$ filtrów zastosowanych", @@ -4632,7 +4805,7 @@ "message": "Dane osobowe" }, "identification": { - "message": "Tożsamość" + "message": "Identyfikacja" }, "contactInfo": { "message": "Daje kontaktowe" @@ -4647,7 +4820,7 @@ } }, "cardNumberEndsWith": { - "message": "numer karty kończy się", + "message": "numer karty kończący się", "description": "Used within the inline menu to provide an aria description when users are attempting to fill a card cipher." }, "loginCredentials": { @@ -4673,7 +4846,7 @@ } }, "websiteAdded": { - "message": "Strona dodana" + "message": "Strona internetowa została dodana" }, "addWebsite": { "message": "Dodaj stronę internetową" @@ -4682,7 +4855,7 @@ "message": "Usuń stronę internetową" }, "defaultLabel": { - "message": "Domyślnie ($VALUE$)", + "message": "Domyślne ($VALUE$)", "description": "A label that indicates the default value for a field with the current default value in parentheses.", "placeholders": { "value": { @@ -4692,7 +4865,7 @@ } }, "showMatchDetection": { - "message": "Pokaż wykrywanie dopasowań $WEBSITE$", + "message": "Pokaż wykrywanie dopasowania $WEBSITE$", "placeholders": { "website": { "content": "$1", @@ -4701,7 +4874,7 @@ } }, "hideMatchDetection": { - "message": "Ukryj wykrywanie dopasowań $WEBSITE$", + "message": "Ukryj wykrywanie dopasowania $WEBSITE$", "placeholders": { "website": { "content": "$1", @@ -4710,7 +4883,7 @@ } }, "autoFillOnPageLoad": { - "message": "Włącz autouzupełnianie po załadowaniu strony?" + "message": "Włączyć autouzupełnianie po załadowaniu strony?" }, "cardExpiredTitle": { "message": "Karta wygasła" @@ -4740,7 +4913,7 @@ "message": "Dodaj konto" }, "loading": { - "message": "Wczytywanie" + "message": "Ładowanie" }, "data": { "message": "Dane" @@ -4754,7 +4927,7 @@ "description": "A section header for a list of passwords." }, "logInWithPasskeyAriaLabel": { - "message": "Zaloguj się za pomocą klucza dostępu", + "message": "Logowanie kluczem dostępu", "description": "ARIA label for the inline menu button that logs in with a passkey." }, "assign": { @@ -4785,7 +4958,7 @@ "message": "Dodaj" }, "fieldType": { - "message": "Typ pola" + "message": "Rodzaj pola" }, "fieldLabel": { "message": "Etykieta pola" @@ -4794,16 +4967,16 @@ "message": "Użyj pól tekstowych dla danych takich jak pytania bezpieczeństwa" }, "hiddenHelpText": { - "message": "Użyj ukrytych pól dla danych poufnych, takich jak hasło" + "message": "Użyj ukrytych pól dla danych poufnych takich jak hasło" }, "checkBoxHelpText": { - "message": "Użyj pól wyboru, jeśli chcesz automatycznie wypełnić pole wyboru formularza, np. zapamiętaj e-mail" + "message": "Użyj pól wyboru, gdy chcesz uzupełnić pole wyboru formularza, np. zapamiętaj adres e-mail" }, "linkedHelpText": { "message": "Użyj powiązanego pola, gdy masz problemy z autouzupełnianiem na konkretnej stronie internetowej." }, "linkedLabelHelpText": { - "message": "Wprowadź atrybut z HTML'a: id, name, aria-label lub placeholder." + "message": "Wpisz identyfikator, nazwę, etykietę lub tekst zastępczy pola HTML." }, "editField": { "message": "Edytuj pole" @@ -4836,7 +5009,7 @@ } }, "reorderToggleButton": { - "message": "Zmień kolejność $LABEL$. Użyj klawiszy ze strzałkami, aby przenieść element w górę lub w dół.", + "message": "Zmień kolejność pola $LABEL$. Użyj klawiszy ze strzałkami, aby przenieść element w górę lub w dół.", "placeholders": { "label": { "content": "$1", @@ -4845,10 +5018,10 @@ } }, "reorderWebsiteUriButton": { - "message": "Zmień kolejność URI strony. Użyj klawiszy ze strzałkami, aby przenieść element w górę lub w dół." + "message": "Zmień kolejność URI stron internetowych. Użyj klawiszy ze strzałkami, aby przenieść element w górę lub w dół." }, "reorderFieldUp": { - "message": "$LABEL$ przeniósł się w górę, pozycja $INDEX$ z $LENGTH$", + "message": "Pole $LABEL$ zostało przeniesione w górę. Pozycja $INDEX$ z $LENGTH$", "placeholders": { "label": { "content": "$1", @@ -4868,7 +5041,7 @@ "message": "Wybierz kolekcje do przypisania" }, "personalItemTransferWarningSingular": { - "message": "1 element zostanie trwale przeniesiony do wybranej organizacji. Nie będziesz już posiadać tego elementu." + "message": "Element zostanie przeniesiony do organizacji. Nie będziesz już właścicielem elementu." }, "personalItemsTransferWarningPlural": { "message": "$PERSONAL_ITEMS_COUNT$ elementów zostanie trwale przeniesionych do wybranej organizacji. Nie będziesz już posiadać tych elementów.", @@ -4880,7 +5053,7 @@ } }, "personalItemWithOrgTransferWarningSingular": { - "message": "1 przedmiot zostanie trwale przeniesiony do $ORG$. Nie będziesz już posiadać tego przedmiotu.", + "message": "Element zostanie przeniesiony do organizacji $ORG$. Nie będziesz już właścicielem elementu.", "placeholders": { "org": { "content": "$1", @@ -4902,13 +5075,13 @@ } }, "successfullyAssignedCollections": { - "message": "Pomyślnie przypisano kolekcje" + "message": "Przypisano kolekcje" }, "nothingSelected": { "message": "Nie zaznaczyłeś żadnych elementów." }, "itemsMovedToOrg": { - "message": "Elementy przeniesione do $ORGNAME$", + "message": "Elementy zostały przeniesione do organizacji $ORGNAME$", "placeholders": { "orgname": { "content": "$1", @@ -4917,7 +5090,7 @@ } }, "itemMovedToOrg": { - "message": "Element przeniesiony do $ORGNAME$", + "message": "Element został przeniesiony do organizacji $ORGNAME$", "placeholders": { "orgname": { "content": "$1", @@ -4926,7 +5099,7 @@ } }, "reorderFieldDown": { - "message": "$LABEL$ przeniósł się w dół, pozycja $INDEX$ z $LENGTH$", + "message": "Pole $LABEL$ zostało przeniesione w dół. Pozycja $INDEX$ z $LENGTH$", "placeholders": { "label": { "content": "$1", @@ -4946,13 +5119,13 @@ "message": "Lokalizacja elementu" }, "fileSend": { - "message": "Wysyłka pliku" + "message": "Plik wysyłki" }, "fileSends": { "message": "Wysyłki plików" }, "textSend": { - "message": "Wysyłka tekstu" + "message": "Tekst wysyłki" }, "textSends": { "message": "Wysyłki tekstów" @@ -4961,16 +5134,16 @@ "message": "Akcje konta" }, "showNumberOfAutofillSuggestions": { - "message": "Pokaż liczbę sugestii autouzupełniania logowania na ikonie rozszerzenia" + "message": "Pokaż liczbę sugestii autouzupełniania na ikonie rozszerzenia" }, "showQuickCopyActions": { - "message": "Pokaż akcje szybkiego kopiowania w Sejfie" + "message": "Pokaż akcje szybkiego kopiowania w sejfie" }, "systemDefault": { "message": "Domyślny systemu" }, "enterprisePolicyRequirementsApplied": { - "message": "Do tego ustalenia zastosowano wymogi polityki przedsiębiorstw" + "message": "Zastosowano wymagania zasady organizacji" }, "sshPrivateKey": { "message": "Klucz prywatny" @@ -4979,34 +5152,34 @@ "message": "Klucz publiczny" }, "sshFingerprint": { - "message": "Odcisk palca" + "message": "Odcisk klucza" }, "sshKeyAlgorithm": { - "message": "Typ klucza" + "message": "Rodzaj klucza" }, "sshKeyAlgorithmED25519": { "message": "ED25519" }, "sshKeyAlgorithmRSA2048": { - "message": "RSA 2048-bitowy" + "message": "RSA 2048-bit" }, "sshKeyAlgorithmRSA3072": { - "message": "RSA 3072-bitowy" + "message": "RSA 3072-bit" }, "sshKeyAlgorithmRSA4096": { - "message": "RSA 4096-bitowy" + "message": "RSA 4096-bit" }, "retry": { "message": "Powtórz" }, "vaultCustomTimeoutMinimum": { - "message": "Minimalny limit czasu niestandardowego wynosi 1 minutę." + "message": "Minimalny niestandardowy czas to 1 minuta." }, "additionalContentAvailable": { "message": "Dostępna jest dodatkowa zawartość" }, "fileSavedToDevice": { - "message": "Plik zapisany na urządzeniu. Zarządzaj plikiem na swoim urządzeniu." + "message": "Plik został zapisany na urządzeniu." }, "showCharacterCount": { "message": "Pokaż liczbę znaków" @@ -5030,28 +5203,28 @@ "message": "Przywróć" }, "deleteForever": { - "message": "Usuń na zawsze" + "message": "Usuń trwale" }, "noEditPermissions": { - "message": "Nie masz uprawnień do edycji tego elementu" + "message": "Nie masz uprawnień do edycji elementu" }, "biometricsStatusHelptextUnlockNeeded": { - "message": "Odblokowanie odciskiem palca jest niedostępne, ponieważ najpierw wymagane jest odblokowanie kodem PIN lub hasłem." + "message": "Odblokowanie biometrią jest niedostępne, ponieważ najpierw wymagane jest odblokowanie kodem PIN lub hasłem." }, "biometricsStatusHelptextHardwareUnavailable": { - "message": "Odblokowanie biometryczne jest obecnie niedostępne." + "message": "Odblokowanie biometrią jest obecnie niedostępne." }, "biometricsStatusHelptextAutoSetupNeeded": { - "message": "Odblokowanie biometryczne jest niedostępne z powodu nieprawidłowej konfiguracji plików systemowych." + "message": "Odblokowanie biometrią jest niedostępne z powodu nieprawidłowej konfiguracji plików systemowych." }, "biometricsStatusHelptextManualSetupNeeded": { - "message": "Odblokowanie biometryczne jest niedostępne z powodu nieprawidłowej konfiguracji plików systemowych." + "message": "Odblokowanie biometrią jest niedostępne z powodu nieprawidłowej konfiguracji plików systemowych." }, "biometricsStatusHelptextDesktopDisconnected": { - "message": "Odblokowanie odciskiem palca jest niedostępne, ponieważ aplikacja desktopowa Bitwarden jest zamknięta." + "message": "Odblokowanie biometrią jest niedostępne z powodu zamkniętej aplikacji desktopowej Bitwarden." }, "biometricsStatusHelptextNotEnabledInDesktop": { - "message": "Odblokowanie biometryczne jest niedostępne, ponieważ nie jest włączone dla $EMAIL$ w aplikacji desktopowej Bitwarden.", + "message": "Odblokowanie biometrią jest niedostępne, ponieważ nie zostało włączone dla konta $EMAIL$ w aplikacji desktopowej Bitwarden.", "placeholders": { "email": { "content": "$1", @@ -5063,16 +5236,16 @@ "message": "Odblokowanie biometryczne jest obecnie niedostępne z nieznanego powodu." }, "unlockVault": { - "message": "Odblokuj swój sejf w kilka sekund" + "message": "Odblokuj sejf w kilka sekund" }, "unlockVaultDesc": { - "message": "Możesz dostosować ustawienia odblokowania i limitu czasu, aby szybciej uzyskać dostęp do sejfu." + "message": "Możesz dostosować sposób i czas blokowania sejfu, aby uzyskać szybszy dostęp do sejfu." }, "unlockPinSet": { - "message": "Ustaw kod PIN odblokowujący" + "message": "Kod PIN został ustawiony" }, "unlockWithBiometricSet": { - "message": "Odblokuj za pomocą danych biometrycznych" + "message": "Odblokuj biometrią" }, "authenticating": { "message": "Uwierzytelnianie" @@ -5110,23 +5283,23 @@ "description": "Represents the @ key in screen reader content as a readable word" }, "hashSignCharacterDescriptor": { - "message": "Hashtag", + "message": "Kratka", "description": "Represents the # key in screen reader content as a readable word" }, "dollarSignCharacterDescriptor": { - "message": "Znak dolara", + "message": "Dolar", "description": "Represents the $ key in screen reader content as a readable word" }, "percentSignCharacterDescriptor": { - "message": "Znak procenta", + "message": "Procent", "description": "Represents the % key in screen reader content as a readable word" }, "caretCharacterDescriptor": { - "message": "Daszek", + "message": "Kareta", "description": "Represents the ^ key in screen reader content as a readable word" }, "ampersandCharacterDescriptor": { - "message": "Ampersand", + "message": "Et", "description": "Represents the & key in screen reader content as a readable word" }, "asteriskCharacterDescriptor": { @@ -5134,15 +5307,15 @@ "description": "Represents the * key in screen reader content as a readable word" }, "parenLeftCharacterDescriptor": { - "message": "Prawy nawias okrągły", + "message": "Lewy nawias", "description": "Represents the ( key in screen reader content as a readable word" }, "parenRightCharacterDescriptor": { - "message": "Prawy nawias okrągły", + "message": "Prawy nawias", "description": "Represents the ) key in screen reader content as a readable word" }, "hyphenCharacterDescriptor": { - "message": "Znak podkreślenia", + "message": "Podkreślnik", "description": "Represents the _ key in screen reader content as a readable word" }, "underscoreCharacterDescriptor": { @@ -5154,7 +5327,7 @@ "description": "Represents the + key in screen reader content as a readable word" }, "equalsCharacterDescriptor": { - "message": "Znak równości", + "message": "Równa się", "description": "Represents the = key in screen reader content as a readable word" }, "braceLeftCharacterDescriptor": { @@ -5174,11 +5347,11 @@ "description": "Represents the ] key in screen reader content as a readable word" }, "pipeCharacterDescriptor": { - "message": "Pionowa kreska", + "message": "Kreska pionowa", "description": "Represents the | key in screen reader content as a readable word" }, "backSlashCharacterDescriptor": { - "message": "Ukośnik wsteczny", + "message": "Ukośnik lewy", "description": "Represents the back slash key in screen reader content as a readable word" }, "colonCharacterDescriptor": { @@ -5198,11 +5371,11 @@ "description": "Represents the ' key in screen reader content as a readable word" }, "lessThanCharacterDescriptor": { - "message": "Mniejszy niż", + "message": "Mniej niż", "description": "Represents the < key in screen reader content as a readable word" }, "greaterThanCharacterDescriptor": { - "message": "Większy niż", + "message": "Więcej niż", "description": "Represents the > key in screen reader content as a readable word" }, "commaCharacterDescriptor": { @@ -5240,13 +5413,13 @@ "message": "Szerokość rozszerzenia" }, "wide": { - "message": "Szerokie" + "message": "Szeroka" }, "extraWide": { - "message": "Bardzo szerokie" + "message": "Bardzo szeroka" }, "sshKeyWrongPassword": { - "message": "Wprowadzone hasło jest nieprawidłowe." + "message": "Hasło jest nieprawidłowe." }, "importSshKey": { "message": "Importuj" @@ -5255,22 +5428,22 @@ "message": "Potwierdź hasło" }, "enterSshKeyPasswordDesc": { - "message": "Wprowadź hasło dla klucza SSH." + "message": "Wpisz hasło klucza SSH." }, "enterSshKeyPassword": { - "message": "Wprowadź hasło" + "message": "Wpisz hasło" }, "invalidSshKey": { "message": "Klucz SSH jest nieprawidłowy" }, "sshKeyTypeUnsupported": { - "message": "Typ klucza SSH nie jest obsługiwany" + "message": "Ten klucz SSH nie jest obsługiwany" }, "importSshKeyFromClipboard": { "message": "Importuj klucz ze schowka" }, "sshKeyImported": { - "message": "Klucz SSH zaimportowano pomyślnie" + "message": "Klucz SSH został zaimportowany" }, "cannotRemoveViewOnlyCollections": { "message": "Nie można usunąć kolekcji z uprawnieniami tylko do przeglądania: $COLLECTIONS$", @@ -5282,86 +5455,86 @@ } }, "updateDesktopAppOrDisableFingerprintDialogTitle": { - "message": "Zaktualizuj aplikację na komputer" + "message": "Zaktualizuj aplikację desktopową" }, "updateDesktopAppOrDisableFingerprintDialogMessage": { "message": "Aby używać odblokowywania biometrycznego, zaktualizuj aplikację na komputerze lub wyłącz odblokowywanie odciskiem palca w ustawieniach aplikacji na komputerze." }, "changeAtRiskPassword": { - "message": "Zmień hasło zagrożone" + "message": "Zmień zagrożone hasło" }, "settingsVaultOptions": { - "message": "Ustawienia Sejfu" + "message": "Opcje sejfu" }, "emptyVaultDescription": { - "message": "Sejf chroni nie tylko Twoje hasła. Przechowuj tutaj bezpiecznie loginy, identyfikatory, karty i notatki." + "message": "Sejf chroni nie tylko hasła. Przechowuj bezpiecznie dane logowania, identyfikatory, karty i notatki." }, "introCarouselLabel": { "message": "Witaj w Bitwarden" }, "securityPrioritized": { - "message": "Bezpieczeństwo priorytetem" + "message": "Priorytetowe bezpieczeństwo" }, "securityPrioritizedBody": { - "message": "Zapisz dane logowania, karty i tożsamości w bezpiecznym sejfie. Bitwarden stosuje szyfrowanie end-to-end z wiedzą zerową, aby chronić to, co jest dla Ciebie ważne." + "message": "Zapisz dane logowania, karty i tożsamości w bezpiecznym sejfie. Bitwarden używa szyfrowania end-to-end w celu ochrony tego, co jest dla Ciebie ważne." }, "quickLogin": { "message": "Szybkie i łatwe logowanie" }, "quickLoginBody": { - "message": "Skonfiguruj odblokowanie i autouzupełnianie biometryczne, aby zalogować się na swoje konta bez wpisywania pojedynczej litery." + "message": "Skonfiguruj odblokowywanie biometryczne i autouzupełnianie, aby logować się do swoich kont bez wpisywania nawet jednej litery." }, "secureUser": { - "message": "Ulepsz swoje loginy" + "message": "Ulepsz swoje dane logowania" }, "secureUserBody": { - "message": "Użyj generatora do tworzenia i zapisywania silnych, unikalnych haseł dla wszystkich kont." + "message": "Użyj generatora, aby utworzyć i zapisać silne, unikalne hasła do wszystkich swoich kont." }, "secureDevices": { "message": "Twoje dane, kiedy i gdzie potrzebujesz" }, "secureDevicesBody": { - "message": "Zapisuj nieograniczoną liczbę haseł na nieograniczonej liczbie urządzeń dzięki aplikacjom Bitwarden na urządzenia mobilne, przeglądarki i komputery stacjonarne." + "message": "Zapisuj nieograniczoną liczbę haseł dzięki aplikacjom Bitwarden, które są dostępne na urządzeniach mobilnych, w przeglądarkach i na komputerach." }, "nudgeBadgeAria": { "message": "1 powiadomienie" }, "emptyVaultNudgeTitle": { - "message": "Importuj istniejące hasła" + "message": "Importuj obecne hasła" }, "emptyVaultNudgeBody": { - "message": "Użyj importera, aby szybko przenieść loginy do Bitwarden bez ręcznego dodawania ich." + "message": "Przenieś dane logowania do Bitwarden w sposób automatyczny." }, "emptyVaultNudgeButton": { "message": "Importuj teraz" }, "hasItemsVaultNudgeTitle": { - "message": "Witaj w Twoim Sejfie!" + "message": "Witaj w sejfie!" }, "hasItemsVaultNudgeBodyOne": { - "message": "Autouzupełnianie elementów dla bieżącej strony" + "message": "Uzupełniaj elementy na stronie internetowej" }, "hasItemsVaultNudgeBodyTwo": { - "message": "Ulubione elementy dla szybkiego dostępu" + "message": "Dodawaj do ulubionych wybrane elementy" }, "hasItemsVaultNudgeBodyThree": { - "message": "Przeszukaj swój sejf w poszukiwaniu czegoś innego" + "message": "Przeszukuj sejf w poszukiwaniu czegoś innego" }, "newLoginNudgeTitle": { "message": "Oszczędzaj czas dzięki autouzupełnianiu" }, "newLoginNudgeBodyOne": { - "message": "Dołącz", + "message": "Dodaj", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newLoginNudgeBodyBold": { - "message": "stronę internetową, ", + "message": "stronę internetową", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newLoginNudgeBodyTwo": { - "message": "aby ten login pojawił się jako sugestia autouzupełniania.", + "message": ", aby dane logowania pojawiały się jako sugestia autouzupełniania.", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, @@ -5369,25 +5542,25 @@ "message": "Bezproblemowe zamówienia online" }, "newCardNudgeBody": { - "message": "Z kartami łatwe autouzupełnianie formularzy płatności w sposób bezpieczny i dokładny." + "message": "Dzięki kartom możesz łatwo i bezpiecznie uzupełniać formularze płatności." }, "newIdentityNudgeTitle": { - "message": "Uprość tworzenie kont" + "message": "Łatwe tworzenie kont" }, "newIdentityNudgeBody": { - "message": "Z tożsamościami, szybko autouzupełnij długie formularze rejestracyjne lub kontaktowe." + "message": "Dzięki tożsamościom możesz szybko uzupełniać długie formularze rejestracyjne i kontaktowe." }, "newNoteNudgeTitle": { - "message": "Zachowaj bezpieczeństwo wrażliwych danych" + "message": "Chroń wrażliwe dane" }, "newNoteNudgeBody": { - "message": "Z notatkami bezpiecznie przechowuj dane szczególnie chronione, takie jak dane bankowe lub ubezpieczeniowe." + "message": "Dzięki notatkom możesz bezpiecznie przechowywać poufne dane, takie jak bankowe lub ubezpieczeniowe." }, "newSshNudgeTitle": { - "message": "Przyjazny dla deweloperów dostęp SSH" + "message": "Dostęp SSH przyjazny dla programistów" }, "newSshNudgeBodyOne": { - "message": "Przechowuj swoje klucze i połącz się z agentem SSH dla szybkiego, szyfrowanego uwierzytelniania.", + "message": "Przechowuj klucze i łącz się z agentem SSH w celu szybkiego, szyfrowanego uwierzytelniania.", "description": "Two part message", "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, @@ -5397,27 +5570,27 @@ "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, "generatorNudgeTitle": { - "message": "Szybko twórz hasła" + "message": "Szybkie tworzenie haseł" }, "generatorNudgeBodyOne": { - "message": "Łatwo twórz silne i unikalne hasła, klikając na", + "message": "Twórz silne i unikalne hasła, klikając przycisk", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyTwo": { - "message": ", aby pomóc Ci zachować bezpieczeństwo Twoich danych logowania.", + "message": ", aby zapewnić bezpieczeństwo danych logowania.", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyAria": { - "message": "Łatwo twórz silne i unikalne hasła, klikając na Wygeneruj Hasło, aby pomóc Ci zachować bezpieczeństwo Twoich danych logowania.", + "message": "Twórz silne i unikalne hasła, klikając przycisk Wygeneruj hasło, aby zapewnić bezpieczeństwo danych logowania.", "description": "Aria label for the body content of the generator nudge" }, "noPermissionsViewPage": { "message": "Nie masz uprawnień do przeglądania tej strony. Spróbuj zalogować się na inne konto." }, "wasmNotSupported": { - "message": "Zestaw WebAssembly nie jest obsługiwany w przeglądarce lub nie jest włączony. Do korzystania z aplikacji Bitwarden wymagany jest zestaw WebAssembre.", + "message": "WebAssembly nie jest obsługiwany w przeglądarce lub jest wyłączony. WebAssembly jest wymagany do korzystania z aplikacji Bitwarden.", "description": "'WebAssembly' is a technical term and should not be translated." } } diff --git a/apps/browser/src/_locales/pt_BR/messages.json b/apps/browser/src/_locales/pt_BR/messages.json index 4405d1c59df..46fbb9beca3 100644 --- a/apps/browser/src/_locales/pt_BR/messages.json +++ b/apps/browser/src/_locales/pt_BR/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Pesquisar no Cofre" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Editar" }, @@ -1173,6 +1176,12 @@ "message": "Ops! Não foi possível salvar isso. Tente digitar os detalhes manualmente.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Pedir para atualizar os dados de login existentes" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Código de Segurança" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Você precisa verificar o seu e-mail para usar este recurso. Você pode verificar seu e-mail no cofre web." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Senha mestra atualizada" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Pedido enviado" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Senha mestra comprometida" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Lembrar deste dispositivo para permanecer conectado" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Aprovação do dispositivo necessária. Selecione uma opção de aprovação abaixo:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Solicitar aprovação do administrador" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Identificador SSO da organização é necessário." }, @@ -4244,6 +4397,26 @@ "message": "Formatos comuns", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continuar nas configurações do navegador?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copiar $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/pt_PT/messages.json b/apps/browser/src/_locales/pt_PT/messages.json index ba791785b0e..3cd813847d1 100644 --- a/apps/browser/src/_locales/pt_PT/messages.json +++ b/apps/browser/src/_locales/pt_PT/messages.json @@ -450,7 +450,7 @@ "message": "Gera automaticamente palavras-passe fortes e únicas para as suas credenciais." }, "bitWebVaultApp": { - "message": "Aplicação Web Bitwarden" + "message": "Aplicação web Bitwarden" }, "importItems": { "message": "Importar itens" @@ -547,6 +547,9 @@ "searchVault": { "message": "Procurar no cofre" }, + "resetSearch": { + "message": "Repor pesquisa" + }, "edit": { "message": "Editar" }, @@ -653,7 +656,7 @@ "message": "Classificar a extensão" }, "browserNotSupportClipboard": { - "message": "O seu navegador Web não suporta a cópia fácil da área de transferência. Em vez disso, copie manualmente." + "message": "O seu navegador web não suporta a cópia fácil da área de transferência. Em vez disso, copie manualmente." }, "verifyYourIdentity": { "message": "Verifique a sua identidade" @@ -929,7 +932,7 @@ "message": "Torne a sua conta mais segura configurando a verificação de dois passos na aplicação Web Bitwarden." }, "twoStepLoginConfirmationTitle": { - "message": "Continuar para a aplicação Web?" + "message": "Continuar para a aplicação web?" }, "editedFolder": { "message": "Pasta guardada" @@ -1173,6 +1176,12 @@ "message": "Oh não! Não conseguimos guardar isto. Tente introduzir os detalhes manualmente.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Depois de ter alterado a sua palavra-passe, é necessário iniciar sessão com a sua nova palavra-passe. As sessões ativas noutros dispositivos serão interrompidas dentro de uma hora." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Altere a sua palavra-passe mestra para concluir a recuperação da conta." + }, "enableChangedPasswordNotification": { "message": "Pedir para atualizar credencial existente" }, @@ -1578,7 +1587,7 @@ "message": "URL do servidor da API" }, "webVaultUrl": { - "message": "URL do servidor do cofre Web" + "message": "URL do servidor do cofre web" }, "identityUrl": { "message": "URL do servidor de identidade" @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Código de segurança" }, + "cardNumber": { + "message": "número do cartão" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Tem de verificar o seu e-mail para utilizar esta funcionalidade. Pode verificar o seu e-mail no cofre Web." }, + "masterPasswordSuccessfullySet": { + "message": "Palavra-passe mestra definida com sucesso" + }, "updatedMasterPassword": { "message": "Palavra-passe mestra atualizada" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Pedido enviado" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Pedido de início de sessão aprovado para $EMAIL$ no $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Recusou uma tentativa de início de sessão de outro dispositivo. Se foi realmente o caso, tente iniciar sessão com o dispositivo novamente." + }, + "device": { + "message": "Dispositivo" + }, + "loginStatus": { + "message": "Estado do início de sessão" + }, + "masterPasswordChanged": { + "message": "Palavra-passe mestra guardada" + }, "exposedMasterPassword": { "message": "Palavra-passe mestra exposta" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Memorizar este dispositivo para facilitar futuros inícios de sessão" }, + "manageDevices": { + "message": "Gerir dispositivos" + }, + "currentSession": { + "message": "Sessão atual" + }, + "mobile": { + "message": "Móvel", + "description": "Mobile app" + }, + "extension": { + "message": "Extensão", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Computador", + "description": "Desktop app" + }, + "webVault": { + "message": "Cofre web" + }, + "webApp": { + "message": "Aplicação web" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Pedido pendente" + }, + "firstLogin": { + "message": "Primeiro início de sessão" + }, + "trusted": { + "message": "Confiável" + }, + "needsApproval": { + "message": "Precisa de aprovação" + }, + "devices": { + "message": "Dispositivos" + }, + "accessAttemptBy": { + "message": "Tentativa de acesso por $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirmar acesso" + }, + "denyAccess": { + "message": "Recusar acesso" + }, + "time": { + "message": "Hora" + }, + "deviceType": { + "message": "Tipo de dispositivo" + }, + "loginRequest": { + "message": "Pedido de início de sessão" + }, + "thisRequestIsNoLongerValid": { + "message": "Este pedido já não é válido." + }, + "areYouTryingToAccessYourAccount": { + "message": "Está a tentar aceder à sua conta?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Início de sessão confirmado para $EMAIL$ no $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Recusou uma tentativa de início de sessão de outro dispositivo. Se foi realmente o caso, tente iniciar sessão com o dispositivo novamente." + }, + "loginRequestHasAlreadyExpired": { + "message": "O pedido de início de sessão já expirou." + }, + "justNow": { + "message": "Agora mesmo" + }, + "requestedXMinutesAgo": { + "message": "Pedido há $MINUTES$ minutos", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "É necessária a aprovação do dispositivo. Selecione uma opção de aprovação abaixo:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Pedir aprovação do administrador" }, + "unableToCompleteLogin": { + "message": "Não é possível concluir o início de sessão" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Tem de iniciar sessão num dispositivo de confiança ou pedir ao seu administrador que lhe atribua uma palavra-passe." + }, "ssoIdentifierRequired": { "message": "É necessário o identificador de SSO da organização." }, @@ -4244,6 +4397,26 @@ "message": "Formatos comuns", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "A deteção de correspondência de URI é a forma como o Bitwarden identifica sugestões de preenchimento automático.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "A \"expressão regular\" é uma opção avançada com um risco acrescido de exposição de credenciais.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Começa com\" é uma opção avançada com um risco acrescido de exposição de credenciais.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Mais informações sobre a deteção de correspondências", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Opções avançadas", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continuar para as definições do navegador?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copiar $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copiar $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/ro/messages.json b/apps/browser/src/_locales/ro/messages.json index b27a1cbc519..85b1436ed9e 100644 --- a/apps/browser/src/_locales/ro/messages.json +++ b/apps/browser/src/_locales/ro/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Căutare în seif" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Editare" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Solicitați actualizarea autentificării existente" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Cod de securitate" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Trebuie să vă verificați e-mailul pentru a utiliza această caracteristică. Puteți verifica e-mailul în seiful web." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Parola principală actualizată" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Parolă principală compromisă" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Este necesară aprobarea dispozitivului. Selectați o opțiune de autorizare de mai jos:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Cereți aprobarea administratorului" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Identificatorul SSO al organizației este necesar." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/ru/messages.json b/apps/browser/src/_locales/ru/messages.json index b9ffa0afbdc..a5d3c6b54c4 100644 --- a/apps/browser/src/_locales/ru/messages.json +++ b/apps/browser/src/_locales/ru/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Поиск в хранилище" }, + "resetSearch": { + "message": "Сбросить поиск" + }, "edit": { "message": "Изменить" }, @@ -1173,6 +1176,12 @@ "message": "О нет! Мы не смогли сохранить это. Попробуйте ввести данные вручную.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "После смены пароля потребуется авторизоваться с новым паролем. Активные сессии на других устройствах будут завершены в течение одного часа." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Измените мастер-пароль, чтобы завершить восстановление аккаунта." + }, "enableChangedPasswordNotification": { "message": "Спрашивать при обновлении существующего логина" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Код безопасности" }, + "cardNumber": { + "message": "номер карты" + }, "ex": { "message": "напр." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Для использования этой функции необходимо подтвердить ваш email. Вы можете это сделать в веб-хранилище." }, + "masterPasswordSuccessfullySet": { + "message": "Мастер-пароль успешно установлен" + }, "updatedMasterPassword": { "message": "Мастер-пароль обновлен" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Запрос отправлен" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Запрос входа для $EMAIL$ на $DEVICE$ одобрен", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Вы отклонили попытку авторизации с другого устройства. Если это были вы, попробуйте авторизоваться с этого устройства еще раз." + }, + "device": { + "message": "Устройство" + }, + "loginStatus": { + "message": "Статус авторизации" + }, + "masterPasswordChanged": { + "message": "Мастер-пароль сохранен" + }, "exposedMasterPassword": { "message": "Мастер-пароль скомпрометирован" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Запомнить это устройство, чтобы в будущем авторизовываться быстрее" }, + "manageDevices": { + "message": "Управление устройствами" + }, + "currentSession": { + "message": "Текущая сессия" + }, + "mobile": { + "message": "Мобильный", + "description": "Mobile app" + }, + "extension": { + "message": "Расширение", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Компьютер", + "description": "Desktop app" + }, + "webVault": { + "message": "Веб-хранилище" + }, + "webApp": { + "message": "Веб-приложение" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Запрос в ожидании" + }, + "firstLogin": { + "message": "Первый вход" + }, + "trusted": { + "message": "Доверенный" + }, + "needsApproval": { + "message": "Требуется одобрение" + }, + "devices": { + "message": "Устройства" + }, + "accessAttemptBy": { + "message": "Попытка доступа $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Подтвердить доступ" + }, + "denyAccess": { + "message": "Отказать в доступе" + }, + "time": { + "message": "Время" + }, + "deviceType": { + "message": "Тип устройства" + }, + "loginRequest": { + "message": "Запрос на вход" + }, + "thisRequestIsNoLongerValid": { + "message": "Этот запрос больше не действителен." + }, + "areYouTryingToAccessYourAccount": { + "message": "Вы пытаетесь получить доступ к своему аккаунту?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Вход подтвержден для $EMAIL$ на $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Вы отклонили попытку авторизации с другого устройства. Если это действительно были вы, попробуйте авторизоваться с этого устройства еще раз." + }, + "loginRequestHasAlreadyExpired": { + "message": "Запрос на вход истек." + }, + "justNow": { + "message": "Только что" + }, + "requestedXMinutesAgo": { + "message": "Запрошено $MINUTES$ минут назад", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Требуется одобрение устройства. Выберите вариант ниже:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Запросить одобрение администратора" }, + "unableToCompleteLogin": { + "message": "Не удалось завершить вход" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Вам необходимо авторизоваться с доверенного устройства или попросить вашего администратора назначить вам пароль." + }, "ssoIdentifierRequired": { "message": "Требуется идентификатор SSO организации." }, @@ -4244,6 +4397,26 @@ "message": "Основные форматы", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "Обнаружение совпадения URI - это способ, с помощью которого Bitwarden идентифицирует предложения по автозаполнению.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Регулярное выражение\" - это расширенный вариант с повышенным риском раскрытия учетных данных.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Начинается с\" - это расширенный вариант с повышенным риском раскрытия учетных данных.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Подробнее об обнаружении совпадений", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Расширенные настройки", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Перейти к настройкам браузера?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Скопировать $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Копировать $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/si/messages.json b/apps/browser/src/_locales/si/messages.json index 9f60625ce4c..7bc0ba2694a 100644 --- a/apps/browser/src/_locales/si/messages.json +++ b/apps/browser/src/_locales/si/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "සුරක්ෂිතාගාරය සොයන්න" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "සංස්කරණය" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "ආරක්ෂක කේතය" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "හිටපු." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "මෙම අංගය භාවිතා කිරීම සඳහා ඔබේ විද්යුත් තැපෑල සත්යාපනය කළ යුතුය. වෙබ් සුරක්ෂිතාගාරයේ ඔබගේ විද්යුත් තැපෑල සත්යාපනය කළ හැකිය." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "යාවත්කාලීන කරන ලද මාස්ටර් මුරපදය" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/sk/messages.json b/apps/browser/src/_locales/sk/messages.json index 8a10ad901e8..28a687be339 100644 --- a/apps/browser/src/_locales/sk/messages.json +++ b/apps/browser/src/_locales/sk/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Prehľadávať trezor" }, + "resetSearch": { + "message": "Resetovať vyhľadávanie" + }, "edit": { "message": "Upraviť" }, @@ -1173,6 +1176,12 @@ "message": "Ale nie! Nepodarilo sa nám to uložiť. Skúste zadať údaje manuálne.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Po zmene hesla sa musíte prihlásiť pomocou nového hesla. Aktívne relácie na iných zariadeniach budú do jednej hodiny odhlásené." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Zmeňte hlavné heslo, aby ste dokončili obnovenie účtu." + }, "enableChangedPasswordNotification": { "message": "Požiadať o aktualizáciu existujúceho prihlasovania" }, @@ -1213,11 +1222,11 @@ "message": "Sekundárnym kliknutím získate prístup k vygenerovaniu hesiel a zodpovedajúcim prihláseniam pre webovú stránku. Platí pre všetky prihlásené účty." }, "defaultUriMatchDetection": { - "message": "Predvolené mapovanie", + "message": "Predvolený spôsob zisťovania zhody URI", "description": "Default URI match detection for autofill." }, "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." + "message": "Vyberte predvolený spôsob zisťovania zhody, ktorý bude použitý pre prihlasovacie údaje pri využití funkcií, ako je napríklad automatické vypĺňanie hesiel." }, "theme": { "message": "Motív" @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Bezpečnostný kód" }, + "cardNumber": { + "message": "číslo karty" + }, "ex": { "message": "napr." }, @@ -2049,11 +2061,11 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Spôsob mapovania", + "message": "Zisťovanie zhody", "description": "URI match detection for autofill." }, "defaultMatchDetection": { - "message": "Predvolené mapovanie", + "message": "Predvolené zisťovanie zhody", "description": "Default URI match detection for autofill." }, "toggleOptions": { @@ -2902,7 +2914,7 @@ "message": "Skryť moju e-mailovú adresu pri zobrazení." }, "passwordPrompt": { - "message": "Znova zadajte hlavné heslo" + "message": "Vyzvať na zadanie hesla" }, "passwordConfirmation": { "message": "Potvrdenie hlavného hesla" @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Na použitie tejto funkcie musíte overiť svoj e-mail. Svoj e-mail môžete overiť vo webovom trezore." }, + "masterPasswordSuccessfullySet": { + "message": "Hlavné heslo bolo úspešne nastavené" + }, "updatedMasterPassword": { "message": "Hlavné heslo aktualizované" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Požiadavka bola odoslaná" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Potvrdené prihlásenie pre $EMAIL$ na $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Odmietli ste pokus o prihlásenie z iného zariadenia. Ak ste to boli vy, skúste sa prihlásiť pomocou zariadenia znova." + }, + "device": { + "message": "Zariadenie" + }, + "loginStatus": { + "message": "Stav prihlásenia" + }, + "masterPasswordChanged": { + "message": "Hlavné heslo uložené" + }, "exposedMasterPassword": { "message": "Odhalené hlavné heslo" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Zapamätať si toto zariadenie, pre budúce bezproblémové prihlásenie" }, + "manageDevices": { + "message": "Spravovať zariadenia" + }, + "currentSession": { + "message": "Aktuálna relácia" + }, + "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" + }, + "webApp": { + "message": "Webová aplikácia" + }, + "cli": { + "message": "Príkazový riadok (CLI)" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Žiadosť čaká na spracovanie" + }, + "firstLogin": { + "message": "Prvé prihlásenie" + }, + "trusted": { + "message": "Dôveryhodné" + }, + "needsApproval": { + "message": "Potrebuje súhlas" + }, + "devices": { + "message": "Zariadenia" + }, + "accessAttemptBy": { + "message": "Pokus o prístup z $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Potvrdiť prístup" + }, + "denyAccess": { + "message": "Zamietnuť prístup" + }, + "time": { + "message": "Čas" + }, + "deviceType": { + "message": "Typ zariadenia" + }, + "loginRequest": { + "message": "Žiadosť o prihlásenie" + }, + "thisRequestIsNoLongerValid": { + "message": "Táto žiadosť už nie je platná." + }, + "areYouTryingToAccessYourAccount": { + "message": "Snažíte sa získať prístup k svojmu účtu?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Potvrdené prihlásenie pre $EMAIL$ na $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Odmietli ste pokus o prihlásenie z iného zariadenia. Ak ste to boli naozaj vy, skúste sa prihlásiť pomocou zariadenia znova." + }, + "loginRequestHasAlreadyExpired": { + "message": "Platnosť žiadosti o prihlásenie už vypršala." + }, + "justNow": { + "message": "Práve teraz" + }, + "requestedXMinutesAgo": { + "message": "Vyžiadané pred $MINUTES$ min.", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Vyžaduje sa schválenie zariadenia. Vyberte možnosť schválenia nižšie:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Žiadosť o schválenie správcom" }, + "unableToCompleteLogin": { + "message": "Nepodarilo sa dokončiť prihlásenie" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Musíte sa prihlásiť na dôveryhodnom zariadení alebo požiadať správcu o priradenie hesla." + }, "ssoIdentifierRequired": { "message": "Pole identifikátora SSO je povinné." }, @@ -4244,6 +4397,26 @@ "message": "Bežné formáty", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "Zisťovanie zhody URI je spôsob, akým Bitwarden identifikuje návrhy na automatické vypĺňanie.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regulárny výraz\" je pokročilá možnosť so zvýšeným rizikom odhalenia prihlasovacích údajov.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Začína na\" je rozšírená možnosť so zvýšeným rizikom odhalenia prihlasovacích údajov.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Viac informácií o zisťovaní zhody", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Rozšírené možnosti", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Pokračovať do nastavení prehliadača?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Kopírovať $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Kopírovať $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, @@ -4692,7 +4865,7 @@ } }, "showMatchDetection": { - "message": "Zobraziť spôsob mapovania $WEBSITE$", + "message": "Zobraziť zisťovanie zhody $WEBSITE$", "placeholders": { "website": { "content": "$1", @@ -4701,7 +4874,7 @@ } }, "hideMatchDetection": { - "message": "Skryť spôsob mapovania $WEBSITE$", + "message": "Skryť spôsob zisťovania zhody $WEBSITE$", "placeholders": { "website": { "content": "$1", diff --git a/apps/browser/src/_locales/sl/messages.json b/apps/browser/src/_locales/sl/messages.json index 2d73e99023c..2db40266cd7 100644 --- a/apps/browser/src/_locales/sl/messages.json +++ b/apps/browser/src/_locales/sl/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Išči v trezorju" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Uredi" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Predlagaj posodobitev obstoječe prijave" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Varnostna koda" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "npr." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Za uporabo te funkcionalnosti morate potrditi svoj e-naslov. To lahko storite v spletnem trezorju." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Posodobi glavno geslo" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/sr/messages.json b/apps/browser/src/_locales/sr/messages.json index 870338e3563..f9534750cef 100644 --- a/apps/browser/src/_locales/sr/messages.json +++ b/apps/browser/src/_locales/sr/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Претражи сеф" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Уреди" }, @@ -1173,6 +1176,12 @@ "message": "Ох не! Нисмо могли да то сачувамо. Покушајте да ручно унесете детаље.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Након промене лозинке, мораћете да се пријавите са новом лозинком. Активне сесије на другим уређајима биће одјављене у року од једног сата." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Промените главну лозинку да бисте завршили опоравак налога." + }, "enableChangedPasswordNotification": { "message": "Питај за ажурирање постојеће пријаве" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Сигурносни код" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "нпр." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Морате да потврдите е-пошту да бисте користили ову функцију. Можете да потврдите е-пошту у веб сефу." }, + "masterPasswordSuccessfullySet": { + "message": "Главна лозинка успешно постављена" + }, "updatedMasterPassword": { "message": "Главна лозинка ажурирана" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Захтев је послат" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Главна лозинка сачувана" + }, "exposedMasterPassword": { "message": "Изложена главна лозинка" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Запамтити овај уређај да би будуће пријаве биле беспрекорне" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Потребно је одобрење уређаја. Изаберите опцију одобрења испод:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Затражити одобрење администратора" }, + "unableToCompleteLogin": { + "message": "Није могуће завршити пријаву" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Потребно је да се пријавите на поузданом уређају или да замолите администратора да вам додели лозинку." + }, "ssoIdentifierRequired": { "message": "Потребан је SSO идентификатор организације." }, @@ -4244,6 +4397,26 @@ "message": "Уобичајени формати", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "Детекција подударања URI-ја је начин на који Bitwarden идентификује предлоге за ауто-попуњавање.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "„Регуларни израз“ је напредна опција са повећаним ризиком од откривања акредитива.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "„Почни са“ је напредна опција са повећаним ризиком од откривања акредитива.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Више о откривању подударања", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Напредне опције", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Желите ли да наставите на подешавања претраживача?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Копирај $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/sv/messages.json b/apps/browser/src/_locales/sv/messages.json index c4b72cc5ea1..49d2765bf6e 100644 --- a/apps/browser/src/_locales/sv/messages.json +++ b/apps/browser/src/_locales/sv/messages.json @@ -3,7 +3,7 @@ "message": "Bitwarden" }, "appLogoLabel": { - "message": "Bitwarden logo" + "message": "Bitwardens logotyp" }, "extName": { "message": "Bitwarden Lösenordshanterare", @@ -84,7 +84,7 @@ "message": "Huvudlösenordsledtråd (valfri)" }, "passwordStrengthScore": { - "message": "Password strength score $SCORE$", + "message": "Lösenordsstyrka $SCORE$ (score)", "placeholders": { "score": { "content": "$1", @@ -105,7 +105,7 @@ } }, "finishJoiningThisOrganizationBySettingAMasterPassword": { - "message": "Finish joining this organization by setting a master password." + "message": "Avsluta anslutningen till denna organisation genom att ange ett huvudlösenord." }, "tab": { "message": "Flik" @@ -264,7 +264,7 @@ "message": "Begär lösenordsledtråd" }, "enterYourAccountEmailAddressAndYourPasswordHintWillBeSentToYou": { - "message": "Enter your account email address and your password hint will be sent to you" + "message": "Ange din e-postadress för kontot så skickas en lösenordshint till dig" }, "getMasterPasswordHint": { "message": "Hämta huvudlösenordsledtråd" @@ -350,7 +350,7 @@ "message": "Bitwarden Hemlighetshanterare" }, "continueToSecretsManagerPageDesc": { - "message": "Securely store, manage, and share developer secrets with Bitwarden Secrets Manager. Learn more on the bitwarden.com website." + "message": "Lagra, hantera och dela utvecklarhemligheter på ett säkert sätt med Bitwarden Secrets Manager. Läs mer på webbplatsen bitwarden.com." }, "passwordlessDotDev": { "message": "Passwordless.dev" @@ -359,10 +359,10 @@ "message": "Skapa smidiga och säkra inloggningsupplevelser fria från traditionella lösenord med Passwordless.dev. Läs mer på bitwarden.com hemsidan." }, "freeBitwardenFamilies": { - "message": "Free Bitwarden Families" + "message": "Gratis Bitwarden Familjer" }, "freeBitwardenFamiliesPageDesc": { - "message": "You are eligible for Free Bitwarden Families. Redeem this offer today in the web app." + "message": "Du är berättigad till gratis Bitwarden Families. Lös in erbjudandet idag i webbappen." }, "version": { "message": "Version" @@ -398,7 +398,7 @@ "message": "Mappnamn" }, "folderHintText": { - "message": "Nest a folder by adding the parent folder's name followed by a “/”. Example: Social/Forums" + "message": "Nästla en mapp genom att lägga till namnet på den överordnade mappen följt av \"/\". Exempel: Sociala/Forums" }, "noFoldersAdded": { "message": "Inga mappar tillagda" @@ -407,7 +407,7 @@ "message": "Skapa mappar för att organisera dina valvobjekt" }, "deleteFolderPermanently": { - "message": "Are you sure you want to permanently delete this folder?" + "message": "Är du säker på att du vill radera den här mappen permanent?" }, "deleteFolder": { "message": "Radera mapp" @@ -541,12 +541,15 @@ "description": "Label for the avoid ambiguous characters checkbox." }, "generatorPolicyInEffect": { - "message": "Enterprise policy requirements have been applied to your generator options.", + "message": "Företagets policykrav har tillämpats på dina generatoralternativ.", "description": "Indicates that a policy limits the credential generator screen." }, "searchVault": { "message": "Sök i valvet" }, + "resetSearch": { + "message": "Nollställ sökning" + }, "edit": { "message": "Redigera" }, @@ -566,7 +569,7 @@ "message": "Lösenord" }, "totp": { - "message": "Authenticator secret" + "message": "Autentiserarens hemlighet" }, "passphrase": { "message": "Lösenfras" @@ -635,7 +638,7 @@ "message": "Upplåsningsalternativ" }, "unlockMethodNeededToChangeTimeoutActionDesc": { - "message": "Set up an unlock method to change your vault timeout action." + "message": "Konfigurera en upplåsningsmetod för att ändra timeout-åtgärden för valvet." }, "unlockMethodNeeded": { "message": "Ställ in en upplåsningsmetod i Inställningar" @@ -659,7 +662,7 @@ "message": "Verifiera din identitet" }, "weDontRecognizeThisDevice": { - "message": "We don't recognize this device. Enter the code sent to your email to verify your identity." + "message": "Vi känner inte igen den här enheten. Ange koden som skickats till din e-post för att verifiera din identitet." }, "continueLoggingIn": { "message": "Fortsätt logga in" @@ -814,7 +817,7 @@ "message": "Verifieringskod krävs." }, "webauthnCancelOrTimeout": { - "message": "The authentication was cancelled or took too long. Please try again." + "message": "Autentiseringen avbröts eller tog för lång tid. Vänligen försök igen." }, "invalidVerificationCode": { "message": "Ogiltig verifieringskod" @@ -839,16 +842,16 @@ "message": "Autentiseringsnyckel tillagd" }, "totpCapture": { - "message": "Scan authenticator QR code from current webpage" + "message": "Skanna QR-koden för autentisering från aktuell webbsida" }, "totpHelperTitle": { "message": "Gör tvåstegsverifiering sömlös" }, "totpHelper": { - "message": "Bitwarden can store and fill 2-step verification codes. Copy and paste the key into this field." + "message": "Bitwarden kan lagra och fylla i 2-stegs verifieringskoder. Kopiera och klistra in nyckeln i detta fält." }, "totpHelperWithCapture": { - "message": "Bitwarden can store and fill 2-step verification codes. Select the camera icon to take a screenshot of this website's authenticator QR code, or copy and paste the key into this field." + "message": "Bitwarden kan lagra och fylla i 2-stegsverifieringskoder. Välj kameraikonen för att ta en skärmdump av den här webbplatsens QR-kod för autentisering, eller kopiera och klistra in nyckeln i det här fältet." }, "learnMoreAboutAuthenticators": { "message": "Läs mer om autentiserare" @@ -881,13 +884,13 @@ "message": "Tryck på din YubiKey för att autentisera" }, "duoTwoFactorRequiredPageSubtitle": { - "message": "Duo two-step login is required for your account. Follow the steps below to finish logging in." + "message": "Tvåstegsinloggning med Duo krävs för ditt konto. Följ stegen nedan för att slutföra inloggningen." }, "followTheStepsBelowToFinishLoggingIn": { - "message": "Follow the steps below to finish logging in." + "message": "Följ stegen nedan för att slutföra inloggningen." }, "followTheStepsBelowToFinishLoggingInWithSecurityKey": { - "message": "Follow the steps below to finish logging in with your security key." + "message": "Följ stegen nedan för att slutföra inloggningen med din säkerhetsnyckel." }, "restartRegistration": { "message": "Starta om registrering" @@ -1016,16 +1019,16 @@ "message": "Be om att lägga till inloggning" }, "vaultSaveOptionsTitle": { - "message": "Save to vault options" + "message": "Alternativ för att spara i valvet" }, "addLoginNotificationDesc": { "message": "Be om att lägga till ett objekt om det inte finns i ditt valv." }, "addLoginNotificationDescAlt": { - "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + "message": "Be att få lägga till ett objekt om det inte finns i ditt valv. Gäller för alla inloggade konton." }, "showCardsInVaultViewV2": { - "message": "Always show cards as Autofill suggestions on Vault view" + "message": "Visa alltid kort som Autofyll-förslag i Vault-vyn" }, "showCardsCurrentTab": { "message": "Visa kort på fliksida" @@ -1034,7 +1037,7 @@ "message": "Lista kortobjekt på fliksidan för enkel autofyll." }, "showIdentitiesInVaultViewV2": { - "message": "Always show identities as Autofill suggestions on Vault view" + "message": "Visa alltid identiteter som Autofyll-förslag i Vault-vyn" }, "showIdentitiesCurrentTab": { "message": "Visa identiteter på fliksidan" @@ -1043,10 +1046,10 @@ "message": "Lista identitetsobjekt på fliksidan för enkel autofyll." }, "clickToAutofillOnVault": { - "message": "Click items to autofill on Vault view" + "message": "Klicka på objekt som ska fyllas i automatiskt i Vault-vyn" }, "clickToAutofill": { - "message": "Click items in autofill suggestion to fill" + "message": "Klicka på objekt i autofyllförslaget för att fylla i" }, "clearClipboard": { "message": "Rensa urklipp", @@ -1063,7 +1066,7 @@ "message": "Spara" }, "notificationViewAria": { - "message": "View $ITEMNAME$, opens in new window", + "message": "Visa $ITEMNAME$, öppnas i nytt fönster", "placeholders": { "itemName": { "content": "$1" @@ -1072,18 +1075,18 @@ "description": "Aria label for the view button in notification bar confirmation message" }, "notificationNewItemAria": { - "message": "New Item, opens in new window", + "message": "Nytt föremål, öppnas i nytt fönster", "description": "Aria label for the new item button in notification bar confirmation message when error is prompted" }, "notificationEditTooltip": { - "message": "Edit before saving", + "message": "Redigera innan du sparar", "description": "Tooltip and Aria label for edit button on cipher item" }, "newNotification": { - "message": "New notification" + "message": "Nytt meddelande" }, "labelWithNotification": { - "message": "$LABEL$: New notification", + "message": "$LABEL$: Nytt meddelande", "description": "Label for the notification with a new login suggestion.", "placeholders": { "label": { @@ -1093,15 +1096,15 @@ } }, "notificationLoginSaveConfirmation": { - "message": "saved to Bitwarden.", + "message": "sparades till Bitwarden.", "description": "Shown to user after item is saved." }, "notificationLoginUpdatedConfirmation": { - "message": "updated in Bitwarden.", + "message": "uppdaterad i Bitwarden.", "description": "Shown to user after item is updated." }, "selectItemAriaLabel": { - "message": "Select $ITEMTYPE$, $ITEMNAME$", + "message": "Välj $ITEMTYPE$, $ITEMNAME$", "description": "Used by screen readers. $1 is the item type (like vault or folder), $2 is the selected item name.", "placeholders": { "itemType": { @@ -1113,15 +1116,15 @@ } }, "saveAsNewLoginAction": { - "message": "Save as new login", + "message": "Spara som ny inloggning", "description": "Button text for saving login details as a new entry." }, "updateLoginAction": { - "message": "Update login", + "message": "Uppdatera inloggning", "description": "Button text for updating an existing login entry." }, "unlockToSave": { - "message": "Unlock to save this login", + "message": "Lås upp för att spara denna inloggning", "description": "User prompt to take action in order to save the login they just entered." }, "saveLogin": { @@ -1129,7 +1132,7 @@ "description": "Prompt asking the user if they want to save their login details." }, "updateLogin": { - "message": "Update existing login", + "message": "Uppdatera befintlig inloggning", "description": "Prompt asking the user if they want to update an existing login entry." }, "loginSaveSuccess": { @@ -1141,7 +1144,7 @@ "description": "Message displayed when login details are successfully updated." }, "loginUpdateTaskSuccess": { - "message": "Great job! You took the steps to make you and $ORGANIZATION$ more secure.", + "message": "Bra jobbat! Du tog stegen för att göra dig och $ORGANIZATION$ säkrare.", "placeholders": { "organization": { "content": "$1" @@ -1150,7 +1153,7 @@ "description": "Shown to user after login is updated." }, "loginUpdateTaskSuccessAdditional": { - "message": "Thank you for making $ORGANIZATION$ more secure. You have $TASK_COUNT$ more passwords to update.", + "message": "Tack för att du gör $ORGANIZATION$ säkrare. Du har $TASK_COUNT$ fler lösenord att uppdatera.", "placeholders": { "organization": { "content": "$1" @@ -1162,17 +1165,23 @@ "description": "Shown to user after login is updated." }, "nextSecurityTaskAction": { - "message": "Change next password", + "message": "Ändra nästa lösenord", "description": "Message prompting user to undertake completion of another security task." }, "saveFailure": { - "message": "Error saving", + "message": "Fel i sparandet", "description": "Error message shown when the system fails to save login details." }, "saveFailureDetails": { - "message": "Oh no! We couldn't save this. Try entering the details manually.", + "message": "Åh nej! Vi kunde inte spara detta. Försök att ange uppgifterna manuellt.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "När du har ändrat ditt lösenord måste du logga in med det nya lösenordet. Aktiva sessioner på andra enheter kommer att loggas ut inom en timme." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Ändra ditt huvudlösenord för att slutföra återställningen av kontot." + }, "enableChangedPasswordNotification": { "message": "Be om att uppdatera befintlig inloggning" }, @@ -1180,7 +1189,7 @@ "message": "Be om att uppdatera ett lösenord när en ändring upptäcks på en webbplats." }, "changedPasswordNotificationDescAlt": { - "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + "message": "Be att få uppdatera lösenordet för en inloggning när en ändring upptäcks på en webbplats. Gäller för alla inloggade konton." }, "enableUsePasskeys": { "message": "Be om att spara och använda lösennycklar" @@ -1207,10 +1216,10 @@ "message": "Visa alternativ för snabbmenyn" }, "contextMenuItemDesc": { - "message": "Använd ett andra klick för att komma åt lösenordsgenerering och matchande inloggningar för webbplatsen. " + "message": "Använd ett andra klick för att komma åt lösenordsgenerering och matchande inloggningar för webbplatsen." }, "contextMenuItemDescAlt": { - "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + "message": "Använd ett sekundärt klick för att få tillgång till lösenordsgenerering och matchande inloggningar för webbplatsen. Gäller för alla inloggade konton." }, "defaultUriMatchDetection": { "message": "Standardmatchning för URI", @@ -1246,28 +1255,28 @@ "message": "Filformat" }, "fileEncryptedExportWarningDesc": { - "message": "This file export will be password protected and require the file password to decrypt." + "message": "Den här filexporten kommer att vara lösenordsskyddad och kräver filens lösenord för att dekryptera." }, "filePassword": { "message": "Fillösenord" }, "exportPasswordDescription": { - "message": "This password will be used to export and import this file" + "message": "Detta lösenord kommer att användas för att exportera och importera denna fil" }, "accountRestrictedOptionDescription": { - "message": "Use your account encryption key, derived from your account's username and Master Password, to encrypt the export and restrict import to only the current Bitwarden account." + "message": "Använd ditt kontos krypteringsnyckel, som härrör från ditt kontos användarnamn och huvudlösenord, för att kryptera exporten och begränsa importen till endast det aktuella Bitwarden-kontot." }, "passwordProtectedOptionDescription": { - "message": "Set a file password to encrypt the export and import it to any Bitwarden account using the password for decryption." + "message": "Ange ett lösenord för filen för att kryptera exporten och importera den till valfritt Bitwarden-konto med lösenordet för dekryptering." }, "exportTypeHeading": { "message": "Exporttyp" }, "accountRestricted": { - "message": "Account restricted" + "message": "Konto med restriktioner" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { - "message": "“File password” and “Confirm file password“ do not match." + "message": "\"Fillösenord\" och \"Bekräfta fillösenord\" stämmer inte överens." }, "warning": { "message": "VARNING", @@ -1296,7 +1305,7 @@ "message": "Delad" }, "bitwardenForBusinessPageDesc": { - "message": "Bitwarden for Business allows you to share your vault items with others by using an organization. Learn more on the bitwarden.com website." + "message": "Med Bitwarden for Business kan du dela dina valvobjekt med andra genom att använda en organisation. Läs mer på webbplatsen bitwarden.com." }, "moveToOrganization": { "message": "Flytta till organisation" @@ -1354,7 +1363,7 @@ "message": "Fil" }, "fileToShare": { - "message": "File to share" + "message": "Fil att dela" }, "selectFile": { "message": "Välj en fil" @@ -1366,7 +1375,7 @@ "message": "Funktion ej tillgänglig" }, "legacyEncryptionUnsupported": { - "message": "Legacy encryption is no longer supported. Please contact support to recover your account." + "message": "Legacy-kryptering stöds inte längre. Vänligen kontakta support för att återställa ditt konto." }, "premiumMembership": { "message": "Premium-medlemskap" @@ -1411,7 +1420,7 @@ "message": "Köp Premium" }, "premiumPurchaseAlertV2": { - "message": "You can purchase Premium from your account settings on the Bitwarden web app." + "message": "Du kan köpa Premium från dina kontoinställningar i Bitwardens webbapp." }, "premiumCurrentMember": { "message": "Du är en premium-medlem!" @@ -1459,10 +1468,10 @@ "message": "Ett premium-medlemskap krävs för att använda den här funktionen." }, "authenticationTimeout": { - "message": "Authentication timeout" + "message": "Timeout för autentisering" }, "authenticationSessionTimedOut": { - "message": "The authentication session timed out. Please restart the login process." + "message": "Autentiseringssessionen timade ut. Vänligen starta om inloggningsprocessen." }, "verificationCodeEmailSent": { "message": "Verifieringsmeddelande har skickats till $EMAIL$.", @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Säkerhetskod" }, + "cardNumber": { + "message": "kortnummer" + }, "ex": { "message": "t. ex." }, @@ -1923,7 +1935,7 @@ "message": "SSH-nyckel" }, "typeNote": { - "message": "Note" + "message": "Anteckning" }, "newItemHeader": { "message": "Ny $TYPE$", @@ -2157,7 +2169,7 @@ "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." }, "setPinCode": { - "message": "You can use this PIN to unlock Bitwarden. Your PIN will be reset if you ever fully log out of the application." + "message": "Du kan använda denna PIN-kod för att låsa upp Bitwarden. Din PIN-kod kommer att återställas om du någonsin loggar ut helt från programmet." }, "pinRequired": { "message": "PIN-kod krävs." @@ -2208,7 +2220,7 @@ "message": "Använd detta lösenord" }, "useThisPassphrase": { - "message": "Use this passphrase" + "message": "Använd denna lösenfras" }, "useThisUsername": { "message": "Använd detta användarnamn" @@ -2278,7 +2290,7 @@ "message": "Fyllde i objektet automatiskt och sparade URI:n" }, "autoFillSuccess": { - "message": "Fyllde i objektet automatiskt" + "message": "Fyllde i objektet automatiskt " }, "insecurePageWarning": { "message": "Varning: Detta är en icke säkrad HTTP-sida, och all information du skickar kan potentiellt ses och ändras av andra. Denna inloggning sparades ursprungligen på en säker (HTTPS) sida." @@ -2380,7 +2392,7 @@ "message": "Integritetspolicy" }, "yourNewPasswordCannotBeTheSameAsYourCurrentPassword": { - "message": "Your new password cannot be the same as your current password." + "message": "Ditt nya lösenord får inte vara samma som ditt nuvarande lösenord." }, "hintEqualsPassword": { "message": "Din lösenordsledtråd får inte vara samma som ditt lösenord." @@ -2389,10 +2401,10 @@ "message": "OK" }, "errorRefreshingAccessToken": { - "message": "Access Token Refresh Error" + "message": "Fel vid uppdatering av åtkomsttoken" }, "errorRefreshingAccessTokenDesc": { - "message": "No refresh token or API keys found. Please try logging out and logging back in." + "message": "Ingen uppdateringstoken eller API-nyckel hittades. Försök att logga ut och logga in igen." }, "desktopSyncVerificationTitle": { "message": "Verifiering av synkronisering med skrivbordsprogrammet" @@ -2431,10 +2443,10 @@ "message": "Kontoavvikelse" }, "nativeMessagingWrongUserKeyTitle": { - "message": "Biometric key missmatch" + "message": "Missmatchning av biometrisk nyckel" }, "nativeMessagingWrongUserKeyDesc": { - "message": "Biometric unlock failed. The biometric secret key failed to unlock the vault. Please try to set up biometrics again." + "message": "Biometrisk upplåsning misslyckades. Den biometriska hemliga nyckeln kunde inte låsa upp valvet. Försök att ställa in biometri igen." }, "biometricsNotEnabledTitle": { "message": "Biometri är inte aktiverat" @@ -2449,16 +2461,16 @@ "message": "Biometri i webbläsaren stöds inte på den här enheten." }, "biometricsNotUnlockedTitle": { - "message": "User locked or logged out" + "message": "Användaren är låst eller utloggad" }, "biometricsNotUnlockedDesc": { "message": "Lås upp den här användaren i skrivbordsprogrammet och försök igen." }, "biometricsNotAvailableTitle": { - "message": "Biometric unlock unavailable" + "message": "Biometrisk upplåsning ej tillgänglig" }, "biometricsNotAvailableDesc": { - "message": "Biometric unlock is currently unavailable. Please try again later." + "message": "Biometrisk upplåsning är för närvarande inte tillgänglig. Vänligen försök igen senare." }, "biometricsFailedTitle": { "message": "Biometri misslyckades" @@ -2485,23 +2497,23 @@ "message": "En organisationspolicy påverkar dina ägarskapsalternativ." }, "personalOwnershipPolicyInEffectImports": { - "message": "An organization policy has blocked importing items into your individual vault." + "message": "En organisationspolicy har blockerat import av objekt till ditt individuella valv." }, "restrictCardTypeImport": { - "message": "Cannot import card item types" + "message": "Det går inte att importera typer av kortposter" }, "restrictCardTypeImportDesc": { - "message": "A policy set by 1 or more organizations prevents you from importing cards to your vaults." + "message": "En policy som har fastställts av en eller flera organisationer hindrar dig från att importera kort till dina valv." }, "domainsTitle": { "message": "Domäner", "description": "A category title describing the concept of web domains" }, "blockedDomains": { - "message": "Blocked domains" + "message": "Blockerade domäner" }, "learnMoreAboutBlockedDomains": { - "message": "Learn more about blocked domains" + "message": "Läs mer om blockerade domäner" }, "excludedDomains": { "message": "Exkluderade domäner" @@ -2510,26 +2522,26 @@ "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." }, "excludedDomainsDescAlt": { - "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + "message": "Bitwarden kommer inte att be om att få spara inloggningsuppgifter för dessa domäner för alla inloggade konton. Du måste uppdatera sidan för att ändringarna ska träda i kraft." }, "blockedDomainsDesc": { - "message": "Autofill and other related features will not be offered for these websites. You must refresh the page for changes to take effect." + "message": "Autofyll och andra relaterade funktioner kommer inte att erbjudas för dessa webbplatser. Du måste uppdatera sidan för att ändringarna ska träda i kraft." }, "autofillBlockedNoticeV2": { - "message": "Autofill is blocked for this website." + "message": "Autofyll är blockerat för den här webbplatsen." }, "autofillBlockedNoticeGuidance": { "message": "Ändra detta i inställningar" }, "change": { - "message": "Change" + "message": "Ändra" }, "changePassword": { - "message": "Change password", + "message": "Ändra lösenord", "description": "Change password button for browser at risk notification on login." }, "changeButtonTitle": { - "message": "Change password - $ITEMNAME$", + "message": "Byt lösenord - $ITEMNAME$", "placeholders": { "itemname": { "content": "$1", @@ -2538,13 +2550,13 @@ } }, "atRiskPassword": { - "message": "At-risk password" + "message": "Lösenord med risk" }, "atRiskPasswords": { - "message": "At-risk passwords" + "message": "Lösenord i riskzonen" }, "atRiskPasswordDescSingleOrg": { - "message": "$ORGANIZATION$ is requesting you change one password because it is at-risk.", + "message": "$ORGANIZATION$ ber dig att ändra ett lösenord eftersom det är i riskzonen.", "placeholders": { "organization": { "content": "$1", @@ -2553,7 +2565,7 @@ } }, "atRiskPasswordsDescSingleOrgPlural": { - "message": "$ORGANIZATION$ is requesting you change the $COUNT$ passwords because they are at-risk.", + "message": "$ORGANIZATION$ begär att du ändrar $COUNT$-lösenorden eftersom de är i riskzonen.", "placeholders": { "organization": { "content": "$1", @@ -2566,7 +2578,7 @@ } }, "atRiskPasswordsDescMultiOrgPlural": { - "message": "Your organizations are requesting you change the $COUNT$ passwords because they are at-risk.", + "message": "Dina organisationer begär att du ändrar $COUNT$-lösenorden eftersom de är i riskzonen.", "placeholders": { "count": { "content": "$1", @@ -2575,7 +2587,7 @@ } }, "atRiskChangePrompt": { - "message": "Your password for this site is at-risk. $ORGANIZATION$ has requested that you change it.", + "message": "Ditt lösenord för den här webbplatsen är i fara. $ORGANIZATION$ har begärt att du ändrar det.", "placeholders": { "organization": { "content": "$1", @@ -2585,7 +2597,7 @@ "description": "Notification body when a login triggers an at-risk password change request and the change password domain is known." }, "atRiskNavigatePrompt": { - "message": "$ORGANIZATION$ wants you to change this password because it is at-risk. Navigate to your account settings to change the password.", + "message": "$ORGANIZATION$ vill att du ändrar det här lösenordet eftersom det är i riskzonen. Navigera till dina kontoinställningar för att ändra lösenordet.", "placeholders": { "organization": { "content": "$1", @@ -2595,10 +2607,10 @@ "description": "Notification body when a login triggers an at-risk password change request and no change password domain is provided." }, "reviewAndChangeAtRiskPassword": { - "message": "Review and change one at-risk password" + "message": "Granska och ändra ett risklösenord" }, "reviewAndChangeAtRiskPasswordsPlural": { - "message": "Review and change $COUNT$ at-risk passwords", + "message": "Granska och ändra $COUNT$ riskfyllda lösenord", "placeholders": { "count": { "content": "$1", @@ -2607,40 +2619,40 @@ } }, "changeAtRiskPasswordsFaster": { - "message": "Change at-risk passwords faster" + "message": "Ändra riskfyllda lösenord snabbare" }, "changeAtRiskPasswordsFasterDesc": { - "message": "Update your settings so you can quickly autofill your passwords and generate new ones" + "message": "Uppdatera dina inställningar så att du snabbt kan autofylla dina lösenord och generera nya" }, "reviewAtRiskLogins": { - "message": "Review at-risk logins" + "message": "Granska riskfyllda inloggningar" }, "reviewAtRiskPasswords": { - "message": "Review at-risk passwords" + "message": "Granska riskfyllda lösenord" }, "reviewAtRiskLoginsSlideDesc": { - "message": "Your organization passwords are at-risk because they are weak, reused, and/or exposed.", + "message": "Lösenorden i din organisation är i riskzonen eftersom de är svaga, återanvända och/eller exponerade.", "description": "Description of the review at-risk login slide on the at-risk password page carousel" }, "reviewAtRiskLoginSlideImgAltPeriod": { - "message": "Illustration of a list of logins that are at-risk." + "message": "Illustration av en lista över inloggningar som är i riskzonen." }, "generatePasswordSlideDesc": { - "message": "Quickly generate a strong, unique password with the Bitwarden autofill menu on the at-risk site.", + "message": "Skapa snabbt ett starkt, unikt lösenord med Bitwardens autofyllmeny på riskwebbplatsen.", "description": "Description of the generate password slide on the at-risk password page carousel" }, "generatePasswordSlideImgAltPeriod": { - "message": "Illustration of the Bitwarden autofill menu displaying a generated password." + "message": "Illustration av Bitwardens autofyllmeny som visar ett genererat lösenord." }, "updateInBitwarden": { - "message": "Update in Bitwarden" + "message": "Uppdatera i Bitwarden" }, "updateInBitwardenSlideDesc": { - "message": "Bitwarden will then prompt you to update the password in the password manager.", + "message": "Bitwarden kommer då att uppmana dig att uppdatera lösenordet i lösenordshanteraren.", "description": "Description of the update in Bitwarden slide on the at-risk password page carousel" }, "updateInBitwardenSlideImgAltPeriod": { - "message": "Illustration of a Bitwarden’s notification prompting the user to update the login." + "message": "Illustration av ett Bitwarden-meddelande som uppmanar användaren att uppdatera inloggningen." }, "turnOnAutofill": { "message": "Aktivera autofyll" @@ -2649,7 +2661,7 @@ "message": "Aktiverade autofyll" }, "dismiss": { - "message": "Dismiss" + "message": "Stäng" }, "websiteItemLabel": { "message": "Webbplats $number$ (URI)", @@ -2670,20 +2682,20 @@ } }, "blockedDomainsSavedSuccess": { - "message": "Blocked domain changes saved" + "message": "Blockerade domänändringar sparas" }, "excludedDomainsSavedSuccess": { - "message": "Excluded domain changes saved" + "message": "Ändringar för exkluderad domän sparas" }, "limitSendViews": { - "message": "Limit views" + "message": "Begränsa antalet visningar" }, "limitSendViewsHint": { - "message": "No one can view this Send after the limit is reached.", + "message": "Ingen kan se denna sändning efter att gränsen har nåtts.", "description": "Displayed under the limit views field on Send" }, "limitSendViewsCount": { - "message": "$ACCESSCOUNT$ views left", + "message": "$ACCESSCOUNT$ visningar kvar", "description": "Displayed under the limit views field on Send", "placeholders": { "accessCount": { @@ -2697,14 +2709,14 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDetails": { - "message": "Send details", + "message": "Skicka information", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTypeText": { "message": "Text" }, "sendTypeTextToShare": { - "message": "Text to share" + "message": "Text att dela" }, "sendTypeFile": { "message": "Fil" @@ -2714,11 +2726,11 @@ "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", + "message": "Max antal åtkomster har uppnåtts", "description": "This text will be displayed after a Send has been accessed the maximum amount of times." }, "hideTextByDefault": { - "message": "Hide text by default" + "message": "Dölj text som standard" }, "expired": { "message": "Utgången" @@ -2765,7 +2777,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deleteSendPermanentConfirmation": { - "message": "Are you sure you want to permanently delete this Send?", + "message": "Är du säker på att du vill ta bort det här meddelandet permanent?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { @@ -2776,7 +2788,7 @@ "message": "Raderingsdatum" }, "deletionDateDescV2": { - "message": "The Send will be permanently deleted on this date.", + "message": "Sändningen kommer att raderas permanent på detta datum.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { @@ -2798,7 +2810,7 @@ "message": "Anpassad" }, "sendPasswordDescV3": { - "message": "Add an optional password for recipients to access this Send.", + "message": "Lägg till ett valfritt lösenord för att mottagarna ska få åtkomst till detta meddelande.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createSend": { @@ -2821,15 +2833,15 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSendSuccessfully": { - "message": "Send created successfully!", + "message": "Skicka skapad framgångsrikt!", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInHoursSingle": { - "message": "The Send will be available to anyone with the link for the next 1 hour.", + "message": "Sändningen kommer att vara tillgänglig för alla med länken under den kommande 1 timmen.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInHours": { - "message": "The Send will be available to anyone with the link for the next $HOURS$ hours.", + "message": "Sändningen kommer att vara tillgänglig för alla som har länken under de närmaste $HOURS$ timmarna.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.", "placeholders": { "hours": { @@ -2839,11 +2851,11 @@ } }, "sendExpiresInDaysSingle": { - "message": "The Send will be available to anyone with the link for the next 1 day.", + "message": "Sändningen kommer att vara tillgänglig för alla som har länken under den kommande 1 dagen.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInDays": { - "message": "The Send will be available to anyone with the link for the next $DAYS$ days.", + "message": "Send kommer att vara tillgänglig för alla som har länken under de närmaste $DAYS$-dagarna.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.", "placeholders": { "days": { @@ -2853,7 +2865,7 @@ } }, "sendLinkCopied": { - "message": "Send link copied", + "message": "Skicka länk kopierad", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { @@ -2861,11 +2873,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendFilePopoutDialogText": { - "message": "Pop out extension?", + "message": "Pop out-förlängning?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendFilePopoutDialogDesc": { - "message": "To create a file Send, you need to pop out the extension to a new window.", + "message": "För att skapa en fil Skicka, måste du popa ut förlängningen till ett nytt fönster.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -2878,7 +2890,7 @@ "message": "För att välja en fil med Safari, öppna ett nytt fönster genom att klicka på denna banner." }, "popOut": { - "message": "Pop out" + "message": "Popa ut" }, "sendFileCalloutHeader": { "message": "Innan du börjar" @@ -2899,7 +2911,7 @@ "message": "Det gick inte att spara raderings- och utgångsdatum." }, "hideYourEmail": { - "message": "Hide your email address from viewers." + "message": "Dölj din e-postadress från tittarna." }, "passwordPrompt": { "message": "Återupprepa huvudlösenord" @@ -2919,6 +2931,9 @@ "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." }, + "masterPasswordSuccessfullySet": { + "message": "Masterlösenordet har ställts in" + }, "updatedMasterPassword": { "message": "Huvudlösenord uppdaterades" }, @@ -2932,7 +2947,7 @@ "message": "Ditt huvudlösenord följer inte ett eller flera av din organisations regler. För att komma åt ditt valv så måste du ändra ditt huvudlösenord nu. Om du gör det kommer du att loggas du ut ur din nuvarande session så du måste logga in på nytt. Aktiva sessioner på andra enheter kommer fortsatt vara aktiva i upp till en timme." }, "tdeDisabledMasterPasswordRequired": { - "message": "Your organization has disabled trusted device encryption. Please set a master password to access your vault." + "message": "Din organisation har inaktiverat betrodd enhetskryptering. Ange ett huvudlösenord för att komma åt ditt valv." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatiskt deltagande" @@ -2975,10 +2990,10 @@ "message": "Minuter" }, "vaultTimeoutPolicyAffectingOptions": { - "message": "Enterprise policy requirements have been applied to your timeout options" + "message": "Företagets policykrav har tillämpats på dina timeout-alternativ" }, "vaultTimeoutPolicyInEffect": { - "message": "Dina organisationsprinciper påverkar ditt valvs tid för timeout. Maximal tillåten tid innan timeout är $HOURS$ timmar och $MINUTES$ minuter", + "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", @@ -2991,7 +3006,7 @@ } }, "vaultTimeoutPolicyInEffect1": { - "message": "$HOURS$ hour(s) and $MINUTES$ minute(s) maximum.", + "message": "$HOURS$ timme(n) och $MINUTES$ minut(er) maximalt.", "placeholders": { "hours": { "content": "$1", @@ -3004,7 +3019,7 @@ } }, "vaultTimeoutPolicyMaximumError": { - "message": "Timeout exceeds the restriction set by your organization: $HOURS$ hour(s) and $MINUTES$ minute(s) maximum", + "message": "Tidsgränsen överskrider den begränsning som har fastställts av din organisation: $HOURS$ timme(n) och $MINUTES$ minut(er) max", "placeholders": { "hours": { "content": "$1", @@ -3017,7 +3032,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is $HOURS$ hour(s) and $MINUTES$ minute(s). Your vault timeout action is set to $ACTION$.", + "message": "Din organisations policyer påverkar valvets timeout. Högsta tillåtna timeout för valvet är $HOURS$ timme(n) och $MINUTES$ minut(er). Åtgärden för valvets timeout är inställd på $ACTION$.", "placeholders": { "hours": { "content": "$1", @@ -3034,7 +3049,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "Your organization policies have set your vault timeout action to $ACTION$.", + "message": "I organisationens policyer har timeoutåtgärden för valvet ställts in på $ACTION$.", "placeholders": { "action": { "content": "$1", @@ -3058,13 +3073,13 @@ "message": "Ingen unik identifierare hittades." }, "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." + "message": "Ett huvudlösenord krävs inte längre för medlemmar i följande organisation. Vänligen bekräfta domänen nedan med din organisationsadministratör." }, "organizationName": { "message": "Organisationsnamn" }, "keyConnectorDomain": { - "message": "Key Connector domain" + "message": "Key Connector-domän" }, "leaveOrganization": { "message": "Lämna organisation" @@ -3091,7 +3106,7 @@ "message": "Exporterar individuellt valv" }, "exportingIndividualVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", + "message": "Endast de enskilda valvobjekt som är associerade med $EMAIL$ exporteras. Valvobjekt för organisationer kommer inte att inkluderas. Endast information om valvobjektet exporteras och inkluderar inte tillhörande bilagor.", "placeholders": { "email": { "content": "$1", @@ -3100,7 +3115,7 @@ } }, "exportingIndividualVaultWithAttachmentsDescription": { - "message": "Only the individual vault items including attachments associated with $EMAIL$ will be exported. Organization vault items will not be included", + "message": "Endast de enskilda valvobjekten inklusive bilagor som är associerade med $EMAIL$ exporteras. Organisationens valvobjekt kommer inte att inkluderas", "placeholders": { "email": { "content": "$1", @@ -3109,10 +3124,10 @@ } }, "exportingOrganizationVaultTitle": { - "message": "Exporting organization vault" + "message": "Exportera organisationsvalv" }, "exportingOrganizationVaultDesc": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Items in individual vaults or other organizations will not be included.", + "message": "Endast det organisationsvalv som är associerat med $ORGANIZATION$ exporteras. Objekt i enskilda valv eller andra organisationer kommer inte att inkluderas.", "placeholders": { "organization": { "content": "$1", @@ -3124,24 +3139,24 @@ "message": "Fel" }, "decryptionError": { - "message": "Decryption error" + "message": "Dekrypteringsfel" }, "couldNotDecryptVaultItemsBelow": { - "message": "Bitwarden could not decrypt the vault item(s) listed below." + "message": "Bitwarden kunde inte dekryptera valvföremålet/valvföremålen som listas nedan." }, "contactCSToAvoidDataLossPart1": { - "message": "Contact customer success", + "message": "Kontakta kundtjänst", "description": "This is part of a larger sentence. The full sentence will read 'Contact customer success to avoid additional data loss.'" }, "contactCSToAvoidDataLossPart2": { - "message": "to avoid additional data loss.", + "message": "för att undvika ytterligare dataförlust.", "description": "This is part of a larger sentence. The full sentence will read 'Contact customer success to avoid additional data loss.'" }, "generateUsername": { "message": "Generera användarnamn" }, "generateEmail": { - "message": "Generate email" + "message": "Generera e-post" }, "spinboxBoundariesHint": { "message": "Värde måste vara mellan $MIN$ och $MAX$.", @@ -3213,7 +3228,7 @@ "description": "Labels the domain name email forwarder service option" }, "forwarderDomainNameHint": { - "message": "Choose a domain that is supported by the selected service", + "message": "Välj en domän som stöds av den valda tjänsten", "description": "Guidance provided for email forwarding services that support multiple email domains." }, "forwarderError": { @@ -3269,7 +3284,7 @@ } }, "forwaderInvalidOperation": { - "message": "$SERVICENAME$ refused your request. Please contact your service provider for assistance.", + "message": "$SERVICENAME$ avvisade din begäran. Vänligen kontakta din tjänsteleverantör för hjälp.", "description": "Displayed when the user is forbidden from using the API by the forwarding service.", "placeholders": { "servicename": { @@ -3279,7 +3294,7 @@ } }, "forwaderInvalidOperationWithMessage": { - "message": "$SERVICENAME$ refused your request: $ERRORMESSAGE$", + "message": "$SERVICENAME$ avvisade din begäran: $ERRORMESSAGE$", "description": "Displayed when the user is forbidden from using the API by the forwarding service with an error message.", "placeholders": { "servicename": { @@ -3293,7 +3308,7 @@ } }, "forwarderNoAccountId": { - "message": "Unable to obtain $SERVICENAME$ masked email account ID.", + "message": "Det gick inte att få $SERVICENAME$ maskerat ID för e-postkonto.", "description": "Displayed when the forwarding service fails to return an account ID.", "placeholders": { "servicename": { @@ -3323,7 +3338,7 @@ } }, "forwarderUnknownError": { - "message": "Unknown $SERVICENAME$ error occurred.", + "message": "Okänt $SERVICENAME$-fel inträffade.", "description": "Displayed when the forwarding service failed due to an unknown error.", "placeholders": { "servicename": { @@ -3333,7 +3348,7 @@ } }, "forwarderUnknownForwarder": { - "message": "Unknown forwarder: '$SERVICENAME$'.", + "message": "Okänd vidarebefordrare: '$SERVICENAME$'.", "description": "Displayed when the forwarding service is not supported.", "placeholders": { "servicename": { @@ -3428,28 +3443,53 @@ "message": "En avisering har skickats till din enhet." }, "notificationSentDevicePart1": { - "message": "Unlock Bitwarden on your device or on the" + "message": "Lås upp Bitwarden på din enhet eller på" }, "notificationSentDeviceAnchor": { - "message": "web app" + "message": "webbapp" }, "notificationSentDevicePart2": { - "message": "Make sure the Fingerprint phrase matches the one below before approving." + "message": "Kontrollera att fingeravtrycksfrasen stämmer överens med den nedan innan du godkänner." }, "aNotificationWasSentToYourDevice": { - "message": "A notification was sent to your device" + "message": "Ett meddelande har skickats till din enhet" }, "youWillBeNotifiedOnceTheRequestIsApproved": { - "message": "You will be notified once the request is approved" + "message": "Du kommer att få ett meddelande när begäran har godkänts" }, "needAnotherOptionV1": { - "message": "Need another option?" + "message": "Behöver du ett annat alternativ?" }, "loginInitiated": { "message": "Inloggning påbörjad" }, "logInRequestSent": { - "message": "Request sent" + "message": "Begäran skickad" + }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Inloggningsbegäran godkänd för $EMAIL$ på $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Du nekade ett inloggningsförsök från en annan enhet. Om det var du, försök att logga in med enheten igen." + }, + "device": { + "message": "Enhet" + }, + "loginStatus": { + "message": "Inloggningsstatus" + }, + "masterPasswordChanged": { + "message": "Huvudlösenordet sparades" }, "exposedMasterPassword": { "message": "Huvudlösenordet har exponerats" @@ -3488,7 +3528,7 @@ "message": "Hur du fyller i automatiskt" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", + "message": "Välj ett objekt från den här skärmen, använd genvägen $COMMAND$ eller utforska andra alternativ i inställningarna.", "placeholders": { "command": { "content": "$1", @@ -3497,7 +3537,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this screen, or explore other options in settings." + "message": "Välj ett objekt från den här skärmen eller utforska andra alternativ i inställningarna." }, "gotIt": { "message": "Förstått" @@ -3521,7 +3561,7 @@ "message": "Kortkommandot för autofyll av inloggning är inte inställt. Du kan ändra det i webbläsarens inställningar." }, "autofillLoginShortcutText": { - "message": "The autofill login shortcut is $COMMAND$. Manage all shortcuts in the browser's settings.", + "message": "Genvägen för autofyll-inloggning är $COMMAND$. Hantera alla genvägar i webbläsarens inställningar.", "placeholders": { "command": { "content": "$1", @@ -3542,22 +3582,129 @@ "message": "Öppnas i ett nytt fönster" }, "rememberThisDeviceToMakeFutureLoginsSeamless": { - "message": "Remember this device to make future logins seamless" + "message": "Kom ihåg den här enheten för att göra framtida inloggningar smidiga" + }, + "manageDevices": { + "message": "Hantera enheter" + }, + "currentSession": { + "message": "Aktuell session" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Tillägg", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Skrivbord", + "description": "Desktop app" + }, + "webVault": { + "message": "Webbvalv" + }, + "webApp": { + "message": "Webbapp" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Förfrågning väntar" + }, + "firstLogin": { + "message": "Första inloggningen" + }, + "trusted": { + "message": "Betrodd" + }, + "needsApproval": { + "message": "Kräver godkännande" + }, + "devices": { + "message": "Enheter" + }, + "accessAttemptBy": { + "message": "Åtkomstförsök av $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Bekräfta åtkomst" + }, + "denyAccess": { + "message": "Neka åtkomst" + }, + "time": { + "message": "Tid" + }, + "deviceType": { + "message": "Enhetstyp" + }, + "loginRequest": { + "message": "Begäran om inloggning" + }, + "thisRequestIsNoLongerValid": { + "message": "Denna begäran är inte längre giltig." + }, + "areYouTryingToAccessYourAccount": { + "message": "Försöker du komma åt ditt konto?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Inloggning bekräftad för $EMAIL$ på $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Du har avvisat ett inloggningsförsök från en annan enhet. Om det verkligen var du, försök logga in med enheten igen." + }, + "loginRequestHasAlreadyExpired": { + "message": "Inloggningsbegäran har redan gått ut." + }, + "justNow": { + "message": "Just nu" + }, + "requestedXMinutesAgo": { + "message": "Begärdes för $MINUTES$ minuter sedan", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } }, "deviceApprovalRequired": { - "message": "Device approval required. Select an approval option below:" + "message": "Godkännande av enhet krävs. Välj ett alternativ för godkännande nedan:" }, "deviceApprovalRequiredV2": { - "message": "Device approval required" + "message": "Godkännande av utrustning krävs" }, "selectAnApprovalOptionBelow": { - "message": "Select an approval option below" + "message": "Välj ett godkännandealternativ nedan" }, "rememberThisDevice": { "message": "Kom ihåg denna enhet" }, "uncheckIfPublicDevice": { - "message": "Uncheck if using a public device" + "message": "Avmarkera om du använder en offentlig enhet" }, "approveFromYourOtherDevice": { "message": "Godkänn från din andra enhet" @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Be om godkännande från administratör" }, + "unableToCompleteLogin": { + "message": "Kunde inte slutföra inloggningen" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Du måste logga in på en betrodd enhet eller fråga din administratör att tilldela dig ett lösenord." + }, "ssoIdentifierRequired": { "message": "Organisationens SSO-identifierare krävs." }, @@ -3578,7 +3731,7 @@ "message": "Följ länken i e-postmeddelandet som skickats till" }, "andContinueCreatingYourAccount": { - "message": "and continue creating your account." + "message": "och fortsätt att skapa ditt konto." }, "noEmail": { "message": "Ingen e-post?" @@ -3600,7 +3753,7 @@ "message": "Allmänt" }, "display": { - "message": "Display" + "message": "Visa" }, "accountSuccessfullyCreated": { "message": "Ditt konto har skapats!" @@ -3621,41 +3774,41 @@ "message": "Användarens e-postadress saknas" }, "activeUserEmailNotFoundLoggingYouOut": { - "message": "Active user email not found. Logging you out." + "message": "E-postadressen för aktiv användare hittades inte. Loggar ut dig." }, "deviceTrusted": { "message": "Enhet betrodd" }, "trustOrganization": { - "message": "Trust organization" + "message": "Lita på organisation" }, "trust": { - "message": "Trust" + "message": "Förtroende" }, "doNotTrust": { - "message": "Do not trust" + "message": "Lita inte på" }, "organizationNotTrusted": { - "message": "Organization is not trusted" + "message": "Organisationen är inte betrodd" }, "emergencyAccessTrustWarning": { - "message": "For the security of your account, only confirm if you have granted emergency access to this user and their fingerprint matches what is displayed in their account" + "message": "För att skydda ditt konto ska du bara bekräfta om du har beviljat nödåtkomst till den här användaren och om fingeravtrycket matchar det som visas på användarens konto" }, "orgTrustWarning": { - "message": "For the security of your account, only proceed if you are a member of this organization, have account recovery enabled, and the fingerprint displayed below matches the organization's fingerprint." + "message": "För att skydda ditt konto ska du bara fortsätta om du är medlem i den här organisationen, har aktiverat kontoåterställning och om det fingeravtryck som visas nedan matchar organisationens fingeravtryck." }, "orgTrustWarning1": { - "message": "This organization has an Enterprise policy that will enroll you in account recovery. Enrollment will allow organization administrators to change your password. Only proceed if you recognize this organization and the fingerprint phrase displayed below matches the organization's fingerprint." + "message": "Den här organisationen har en företagspolicy som gör att du kan anmäla dig till kontoåterställning. Registreringen gör det möjligt för organisationens administratörer att ändra ditt lösenord. Fortsätt bara om du känner igen den här organisationen och om fingeravtrycksfrasen som visas nedan matchar organisationens fingeravtryck." }, "trustUser": { - "message": "Trust user" + "message": "Lita på användare" }, "sendsTitleNoItems": { - "message": "Send sensitive information safely", + "message": "Skicka känslig information på ett säkert sätt", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendsBodyNoItems": { - "message": "Share files and data securely with anyone, on any platform. Your information will remain end-to-end encrypted while limiting exposure.", + "message": "Dela filer och data på ett säkert sätt med vem som helst, på vilken plattform som helst. Din information kommer att förbli krypterad från början till slut samtidigt som exponeringen begränsas.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "inputRequired": { @@ -3677,7 +3830,7 @@ } }, "inputMaxLength": { - "message": "Input must not exceed $COUNT$ characters in length.", + "message": "Inmatningen får inte vara längre än $COUNT$ tecken.", "placeholders": { "count": { "content": "$1", @@ -3695,7 +3848,7 @@ } }, "inputMinValue": { - "message": "Input value must be at least $MIN$.", + "message": "Inmatningsvärdet måste vara minst $MIN$.", "placeholders": { "min": { "content": "$1", @@ -3704,7 +3857,7 @@ } }, "inputMaxValue": { - "message": "Input value must not exceed $MAX$.", + "message": "Inmatningsvärdet får inte överstiga $MAX$.", "placeholders": { "max": { "content": "$1", @@ -3716,7 +3869,7 @@ "message": "En eller flera e-postadresser är ogiltiga" }, "inputTrimValidator": { - "message": "Input must not contain only whitespace.", + "message": "Inmatningen får inte innehålla enbart blanksteg.", "description": "Notification to inform the user that a form's input can't contain only whitespace." }, "inputEmail": { @@ -3732,10 +3885,10 @@ } }, "singleFieldNeedsAttention": { - "message": "1 field needs your attention." + "message": "1 fält behöver din uppmärksamhet." }, "multipleFieldsNeedAttention": { - "message": "$COUNT$ fields need your attention.", + "message": "$COUNT$-fälten behöver din uppmärksamhet.", "placeholders": { "count": { "content": "$1", @@ -3790,7 +3943,7 @@ "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." }, "toggleSideNavigation": { - "message": "Toggle side navigation" + "message": "Växla sidonavigering" }, "skipToContent": { "message": "Hoppa till innehåll" @@ -3820,15 +3973,15 @@ "description": "Button text to display in overlay when the account is locked." }, "unlockAccountAria": { - "message": "Unlock your account, opens in a new window", + "message": "Lås upp ditt konto, öppnas i ett nytt fönster", "description": "Screen reader text (aria-label) for unlock account button in overlay" }, "totpCodeAria": { - "message": "Time-based One-Time Password Verification Code", + "message": "Tidsbaserat engångslösenord Verifieringskod", "description": "Aria label for the totp code displayed in the inline menu for autofill" }, "totpSecondsSpanAria": { - "message": "Time remaining before current TOTP expires", + "message": "Återstående tid innan aktuell TOTP löper ut", "description": "Aria label for the totp seconds displayed in the inline menu for autofill" }, "fillCredentialsFor": { @@ -3836,7 +3989,7 @@ "description": "Screen reader text for when overlay item is in focused" }, "partialUsername": { - "message": "Partial username", + "message": "Delvis användarnamn", "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" }, "noItemsToShow": { @@ -3856,7 +4009,7 @@ "description": "Button text to display within inline menu when there are no matching items on a login field" }, "addNewLoginItemAria": { - "message": "Add new vault login item, opens in a new window", + "message": "Lägg till nytt valvinloggningsobjekt, öppnas i ett nytt fönster", "description": "Screen reader text (aria-label) for new login button within inline menu" }, "newCard": { @@ -3864,7 +4017,7 @@ "description": "Button text to display within inline menu when there are no matching items on a credit card field" }, "addNewCardItemAria": { - "message": "Add new vault card item, opens in a new window", + "message": "Lägg till ny valvkortsartikel, öppnas i nytt fönster", "description": "Screen reader text (aria-label) for new card button within inline menu" }, "newIdentity": { @@ -3872,7 +4025,7 @@ "description": "Button text to display within inline menu when there are no matching items on an identity field" }, "addNewIdentityItemAria": { - "message": "Add new vault identity item, opens in a new window", + "message": "Lägg till ny valvidentitetsartikel, öppnas i nytt fönster", "description": "Screen reader text (aria-label) for new identity button within inline menu" }, "bitwardenOverlayMenuAvailable": { @@ -3962,13 +4115,13 @@ } }, "duoHealthCheckResultsInNullAuthUrlError": { - "message": "Error connecting with the Duo service. Use a different two-step login method or contact Duo for assistance." + "message": "Fel vid anslutning till Duo-tjänsten. Använd en annan tvåstegsinloggningsmetod eller kontakta Duo för hjälp." }, "duoRequiredForAccount": { - "message": "Duo two-step login is required for your account." + "message": "Tvåstegsinloggning med Duo krävs för ditt konto." }, "popoutExtension": { - "message": "Popout extension" + "message": "Popout-förlängning" }, "launchDuo": { "message": "Starta Duo" @@ -3998,7 +4151,7 @@ "message": "Välj en samling" }, "importTargetHint": { - "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "message": "Välj det här alternativet om du vill att innehållet i den importerade filen ska flyttas till en $DESTINATION$", "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", "placeholders": { "destination": { @@ -4045,22 +4198,22 @@ "message": "Bekräfta fillösenord" }, "exportSuccess": { - "message": "Vault data exported" + "message": "Valvdata exporteras" }, "typePasskey": { "message": "Nyckel" }, "accessing": { - "message": "Accessing" + "message": "Åtkomst via" }, "loggedInExclamation": { - "message": "Logged in!" + "message": "Inloggad!" }, "passkeyNotCopied": { - "message": "Lösennyckeln kommer inte kopieras" + "message": "Inloggningsnyckeln kommer inte kopieras" }, "passkeyNotCopiedAlert": { - "message": "Lösennyckeln kommer inte att kopieras till det klonade objektet. Vill du fortsätta klona det här objektet?" + "message": "Inloggningsnyckeln kommer inte att kopieras till det klonade objektet. Vill du fortsätta klona det här objektet?" }, "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { "message": "Verifiering krävs av den initierande webbplatsen. Denna funktion är ännu inte implementerad för konton utan huvudlösenord." @@ -4069,7 +4222,7 @@ "message": "Logga in med nyckel?" }, "passkeyAlreadyExists": { - "message": "En lösennyckel finns redan för detta program." + "message": "En inloggningsnyckel finns redan för detta program." }, "noPasskeysFoundForThisApplication": { "message": "Inga lösennycklar hittades för detta program." @@ -4078,7 +4231,7 @@ "message": "Det finns ingen matchande inloggning för denna webbplats." }, "noMatchingLoginsForSite": { - "message": "No matching logins for this site" + "message": "Inga matchande inloggningar för denna webbplats" }, "searchSavePasskeyNewLogin": { "message": "Sök eller spara nyckel som ny inloggning" @@ -4093,25 +4246,25 @@ "message": "Spara nyckel som ny inloggning" }, "chooseCipherForPasskeySave": { - "message": "Choose a login to save this passkey to" + "message": "Välj en inloggning som du vill spara inloggningsnyckeln till" }, "chooseCipherForPasskeyAuth": { - "message": "Choose a passkey to log in with" + "message": "Välj en inloggningsnyckel att logga in med" }, "passkeyItem": { - "message": "Lösennyckelobjekt" + "message": "Inloggningsnyckelsobjekt" }, "overwritePasskey": { - "message": "Skriv över lösennyckel?" + "message": "Skriv över inloggningsnyckel?" }, "overwritePasskeyAlert": { - "message": "Detta objekt innehåller redan en lösennyckel. Är du säker på att du vill skriva över nuvarande lösennyckeln?" + "message": "Detta objekt innehåller redan en inloggningsnyckel. Är du säker på att du vill skriva över nuvarande inloggningsnyckel?" }, "featureNotSupported": { "message": "Funktionen stöds ännu inte" }, "yourPasskeyIsLocked": { - "message": "Autentisering krävs för att använda lösennyckel. Verifiera din identitet för att fortsätta." + "message": "Autentisering krävs för att använda inloggningsnyckel. Verifiera din identitet för att fortsätta." }, "multifactorAuthenticationCancelled": { "message": "Flerfaktorsautentisering avbruten" @@ -4162,10 +4315,10 @@ "message": "LastPass autentisering krävs" }, "awaitingSSO": { - "message": "Awaiting SSO authentication" + "message": "Väntar på SSO-autentisering" }, "awaitingSSODesc": { - "message": "Please continue to log in using your company credentials." + "message": "Fortsätt att logga in med dina företagsuppgifter." }, "seeDetailedInstructions": { "message": "Se detaljerade instruktioner på vår hjälpsida på", @@ -4178,7 +4331,7 @@ "message": "Importera från CSV" }, "lastPassTryAgainCheckEmail": { - "message": "Try again or look for an email from LastPass to verify it's you." + "message": "Försök igen eller leta efter ett e-postmeddelande från LastPass för att verifiera att det är du." }, "collection": { "message": "Samling" @@ -4199,13 +4352,13 @@ "message": "Aktivt konto" }, "bitwardenAccount": { - "message": "Bitwarden account" + "message": "Bitwarden-konto" }, "availableAccounts": { "message": "Tillgängliga konton" }, "accountLimitReached": { - "message": "Account limit reached. Log out of an account to add another." + "message": "Kontogränsen har nåtts. Logga ut från ett konto för att lägga till ett annat." }, "active": { "message": "aktiv" @@ -4220,7 +4373,7 @@ "message": "server" }, "hostedAt": { - "message": "hosted at" + "message": "värd på" }, "useDeviceOrHardwareKey": { "message": "Använd din enhet eller hårdvarunyckel" @@ -4232,7 +4385,7 @@ "message": "Alltid för denna webbplats" }, "domainAddedToExcludedDomains": { - "message": "$DOMAIN$ added to excluded domains.", + "message": "$DOMAIN$ tillagd till uteslutna domäner.", "placeholders": { "domain": { "content": "$1", @@ -4244,8 +4397,28 @@ "message": "Vanliga format", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "Detektering av URI-matchning är hur Bitwarden identifierar autofyllförslag.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Reguljär uttryck\" är ett avancerat alternativ med ökad risk för att röja inloggningsuppgifter.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Börjar med\" är ett avancerat alternativ med ökad risk för att röja inloggningsuppgifter.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Mer om matchdetektering", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Avancerade inställningar", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { - "message": "Continue to browser settings?", + "message": "Fortsätt till webbläsarinställningar?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" }, "confirmContinueToHelpCenter": { @@ -4253,19 +4426,19 @@ "description": "Title for dialog which asks if the user wants to proceed to a relevant Help Center page" }, "confirmContinueToHelpCenterPasswordManagementContent": { - "message": "Change your browser's autofill and password management settings.", + "message": "Ändra inställningarna för autofyll och lösenordshantering i din webbläsare.", "description": "Body content for dialog which asks if the user wants to proceed to the Help Center's page about browser password management settings" }, "confirmContinueToHelpCenterKeyboardShortcutsContent": { - "message": "You can view and set extension shortcuts in your browser's settings.", + "message": "Du kan se och ställa in genvägar för tillägg i webbläsarens inställningar.", "description": "Body content for dialog which asks if the user wants to proceed to the Help Center's page about browser keyboard shortcut settings" }, "confirmContinueToBrowserPasswordManagementSettingsContent": { - "message": "Change your browser's autofill and password management settings.", + "message": "Ändra inställningarna för autofyll och lösenordshantering i din webbläsare.", "description": "Body content for dialog which asks if the user wants to proceed to the browser's password management settings page" }, "confirmContinueToBrowserKeyboardShortcutSettingsContent": { - "message": "You can view and set extension shortcuts in your browser's settings.", + "message": "Du kan se och ställa in genvägar för tillägg i webbläsarens inställningar.", "description": "Body content for dialog which asks if the user wants to proceed to the browser's keyboard shortcut settings page" }, "overrideDefaultBrowserAutofillTitle": { @@ -4281,11 +4454,11 @@ "description": "Label for the setting that allows overriding the default browser autofill settings" }, "privacyPermissionAdditionNotGrantedTitle": { - "message": "Unable to set Bitwarden as the default password manager", + "message": "Det går inte att ställa in Bitwarden som standardlösenordshanterare", "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" }, "privacyPermissionAdditionNotGrantedDescription": { - "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "message": "Du måste ge Bitwarden sekretessbehörighet för webbläsaren för att kunna ange den som standardlösenordshanterare.", "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" }, "makeDefault": { @@ -4293,39 +4466,39 @@ "description": "Button text for the setting that allows overriding the default browser autofill settings" }, "saveCipherAttemptSuccess": { - "message": "Credentials saved successfully!", + "message": "Legitimationen har sparats framgångsrikt!", "description": "Notification message for when saving credentials has succeeded." }, "passwordSaved": { - "message": "Password saved!", + "message": "Lösenordet sparat!", "description": "Notification message for when saving credentials has succeeded." }, "updateCipherAttemptSuccess": { - "message": "Credentials updated successfully!", + "message": "Legitimationen har uppdaterats!", "description": "Notification message for when updating credentials has succeeded." }, "passwordUpdated": { - "message": "Password updated!", + "message": "Lösenord uppdaterat!", "description": "Notification message for when updating credentials has succeeded." }, "saveCipherAttemptFailed": { - "message": "Error saving credentials. Check console for details.", + "message": "Fel vid sparande av inloggningsuppgifter. Kontrollera konsolen för detaljer.", "description": "Notification message for when saving credentials has failed." }, "success": { - "message": "Success" + "message": "Lyckades" }, "removePasskey": { - "message": "Ta bort passkey" + "message": "Ta bort inloggningsnyckel" }, "passkeyRemoved": { - "message": "Passkey borttagen" + "message": "Inloggningsnyckel borttagen" }, "autofillSuggestions": { "message": "Förslag för autofyll" }, "itemSuggestions": { - "message": "Suggested items" + "message": "Föreslagna föremål" }, "autofillSuggestionsTip": { "message": "Spara ett inloggningsobjekt för den här webbplatsen för autofyll" @@ -4337,10 +4510,10 @@ "message": "Inga objekt matchar din sökning" }, "clearFiltersOrTryAnother": { - "message": "Clear filters or try another search term" + "message": "Rensa filter eller försök med en annan sökterm" }, "copyInfoTitle": { - "message": "Copy info - $ITEMNAME$", + "message": "Kopiera information - $ITEMNAME$", "description": "Title for a button that opens a menu with options to copy information from an item.", "placeholders": { "itemname": { @@ -4360,7 +4533,7 @@ } }, "moreOptionsLabel": { - "message": "More options, $ITEMNAME$", + "message": "Fler alternativ, $ITEMNAME$", "description": "Aria label for a button that opens a menu with more options for an item.", "placeholders": { "itemname": { @@ -4370,7 +4543,7 @@ } }, "moreOptionsTitle": { - "message": "More options - $ITEMNAME$", + "message": "Fler alternativ - $ITEMNAME$", "description": "Title for a button that opens a menu with more options for an item.", "placeholders": { "itemname": { @@ -4390,7 +4563,7 @@ } }, "viewItemTitleWithField": { - "message": "View item - $ITEMNAME$ - $FIELD$", + "message": "Visa objekt - $ITEMNAME$ - $FIELD$", "description": "Title for a link that opens a view for an item.", "placeholders": { "itemname": { @@ -4404,7 +4577,7 @@ } }, "autofillTitle": { - "message": "Autofill - $ITEMNAME$", + "message": "Autofyll - $ITEMNAME$", "description": "Title for a button that autofills a login item.", "placeholders": { "itemname": { @@ -4414,7 +4587,7 @@ } }, "autofillTitleWithField": { - "message": "Autofill - $ITEMNAME$ - $FIELD$", + "message": "Autofyll - $ITEMNAME$ - $FIELD$", "description": "Title for a button that autofills a login item.", "placeholders": { "itemname": { @@ -4427,25 +4600,25 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Kopiera $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, "noValuesToCopy": { - "message": "No values to copy" + "message": "Inga värden att kopiera" }, "assignToCollections": { - "message": "Assign to collections" + "message": "Tilldela till samlingar" }, "copyEmail": { "message": "Kopiera e-postadress" @@ -4457,7 +4630,7 @@ "message": "Kopiera adress" }, "adminConsole": { - "message": "Admin Console" + "message": "Adminkonsol" }, "accountSecurity": { "message": "Kontosäkerhet" @@ -4469,10 +4642,10 @@ "message": "Utseende" }, "errorAssigningTargetCollection": { - "message": "Error assigning target collection." + "message": "Fel vid tilldelning av målsamling." }, "errorAssigningTargetFolder": { - "message": "Error assigning target folder." + "message": "Fel vid tilldelning av målmapp." }, "viewItemsIn": { "message": "Visa objekt i $NAME$", @@ -4517,7 +4690,7 @@ "message": "Objektnamn" }, "organizationIsDeactivated": { - "message": "Organization is deactivated" + "message": "Organisationen är avaktiverad" }, "owner": { "message": "Ägare" @@ -4527,7 +4700,7 @@ "description": "Used as a label to indicate that the user is the owner of an item." }, "contactYourOrgAdmin": { - "message": "Items in deactivated organizations cannot be accessed. Contact your organization owner for assistance." + "message": "Det går inte att komma åt objekt i inaktiverade organisationer. Kontakta din organisationsägare för hjälp." }, "additionalInformation": { "message": "Ytterligare information" @@ -4536,16 +4709,16 @@ "message": "Objekthistorik" }, "lastEdited": { - "message": "Last edited" + "message": "Senast ändrat" }, "ownerYou": { "message": "Ägare: Du" }, "linked": { - "message": "Linked" + "message": "Länkad" }, "copySuccessful": { - "message": "Copy Successful" + "message": "Kopiering lyckades" }, "upload": { "message": "Ladda upp" @@ -4575,52 +4748,52 @@ } }, "downloadBitwarden": { - "message": "Download Bitwarden" + "message": "Ladda ner Bitwarden" }, "downloadBitwardenOnAllDevices": { - "message": "Download Bitwarden on all devices" + "message": "Ladda ner Bitwarden på alla enheter" }, "getTheMobileApp": { - "message": "Get the mobile app" + "message": "Hämta mobilappen" }, "getTheMobileAppDesc": { - "message": "Access your passwords on the go with the Bitwarden mobile app." + "message": "Få tillgång till dina lösenord när du är på språng med Bitwardens mobilapp." }, "getTheDesktopApp": { - "message": "Get the desktop app" + "message": "Hämta skrivbordsappen" }, "getTheDesktopAppDesc": { - "message": "Access your vault without a browser, then set up unlock with biometrics to expedite unlocking in both the desktop app and browser extension." + "message": "Öppna ditt valv utan en webbläsare och ställ sedan in upplåsning med biometri för att påskynda upplåsningen i både skrivbordsappen och webbläsartillägget." }, "downloadFromBitwardenNow": { - "message": "Download from bitwarden.com now" + "message": "Ladda ner från bitwarden.com nu" }, "getItOnGooglePlay": { - "message": "Get it on Google Play" + "message": "Hämta den på Google Play" }, "downloadOnTheAppStore": { - "message": "Download on the App Store" + "message": "Ladda ner på App Store" }, "permanentlyDeleteAttachmentConfirmation": { - "message": "Are you sure you want to permanently delete this attachment?" + "message": "Är du säker på att du vill radera den här bilagan permanent?" }, "premium": { "message": "Premium" }, "freeOrgsCannotUseAttachments": { - "message": "Free organizations cannot use attachments" + "message": "Fria organisationer kan inte använda bilagor" }, "filters": { - "message": "Filters" + "message": "Filter" }, "filterVault": { "message": "Filtrera valv" }, "filterApplied": { - "message": "One filter applied" + "message": "Ett filter tillämpat" }, "filterAppliedPlural": { - "message": "$COUNT$ filters applied", + "message": "$COUNT$ filter tillämpas", "placeholders": { "count": { "content": "$1", @@ -4638,7 +4811,7 @@ "message": "Kontaktuppgifter" }, "downloadAttachment": { - "message": "Download - $ITEMNAME$", + "message": "Ladda ner - $ITEMNAME$", "placeholders": { "itemname": { "content": "$1", @@ -4647,7 +4820,7 @@ } }, "cardNumberEndsWith": { - "message": "card number ends with", + "message": "kortnummer slutar med", "description": "Used within the inline menu to provide an aria description when users are attempting to fill a card cipher." }, "loginCredentials": { @@ -4673,7 +4846,7 @@ } }, "websiteAdded": { - "message": "Website added" + "message": "Webbplats tillagd" }, "addWebsite": { "message": "Lägg till webbplats" @@ -4692,7 +4865,7 @@ } }, "showMatchDetection": { - "message": "Show match detection $WEBSITE$", + "message": "Visa matchningsdetektering $WEBSITE", "placeholders": { "website": { "content": "$1", @@ -4701,7 +4874,7 @@ } }, "hideMatchDetection": { - "message": "Hide match detection $WEBSITE$", + "message": "Detektering av dold matchning $WEBSITE$", "placeholders": { "website": { "content": "$1", @@ -4710,19 +4883,19 @@ } }, "autoFillOnPageLoad": { - "message": "Autofill on page load?" + "message": "Autofyll vid sidladdning?" }, "cardExpiredTitle": { - "message": "Expired card" + "message": "Utgått kort" }, "cardExpiredMessage": { - "message": "If you've renewed it, update the card's information" + "message": "Om du har förnyat kortet ska du uppdatera kortinformationen" }, "cardDetails": { - "message": "Card details" + "message": "Begär kort" }, "cardBrandDetails": { - "message": "$BRAND$ details", + "message": "$BRAND$ detaljer", "placeholders": { "brand": { "content": "$1", @@ -4761,13 +4934,13 @@ "message": "Tilldela" }, "bulkCollectionAssignmentDialogDescriptionSingular": { - "message": "Only organization members with access to these collections will be able to see the item." + "message": "Endast organisationsmedlemmar med tillgång till dessa samlingar kan se objektet." }, "bulkCollectionAssignmentDialogDescriptionPlural": { - "message": "Only organization members with access to these collections will be able to see the items." + "message": "Endast organisationsmedlemmar med tillgång till dessa samlingar kan se objekten." }, "bulkCollectionAssignmentWarning": { - "message": "You have selected $TOTAL_COUNT$ items. You cannot update $READONLY_COUNT$ of the items because you do not have edit permissions.", + "message": "Du har valt $TOTAL_COUNT$ artiklar. Du kan inte uppdatera $READONLY_COUNT$ av objekten eftersom du inte har redigeringsbehörighet.", "placeholders": { "total_count": { "content": "$1", @@ -4797,13 +4970,13 @@ "message": "Använd dolda fält för känslig data, som t. ex. ett lösenord" }, "checkBoxHelpText": { - "message": "Use checkboxes if you'd like to autofill a form's checkbox, like a remember email" + "message": "Använd kryssrutor om du vill fylla i en kryssruta i ett formulär automatiskt, t.ex. för att komma ihåg e-post" }, "linkedHelpText": { - "message": "Use a linked field when you are experiencing autofill issues for a specific website." + "message": "Använd ett länkat fält när du har problem med autofyll för en viss webbplats." }, "linkedLabelHelpText": { - "message": "Enter the the field's html id, name, aria-label, or placeholder." + "message": "Ange fältets html-id, namn, aria-label eller platshållare." }, "editField": { "message": "Redigera fält" @@ -4827,7 +5000,7 @@ } }, "fieldAdded": { - "message": "$LABEL$ added", + "message": "$LABEL$ tillagd", "placeholders": { "label": { "content": "$1", @@ -4836,7 +5009,7 @@ } }, "reorderToggleButton": { - "message": "Reorder $LABEL$. Use arrow key to move item up or down.", + "message": "Ordna om $LABEL$. Använd piltangenten för att flytta objektet uppåt eller nedåt.", "placeholders": { "label": { "content": "$1", @@ -4845,10 +5018,10 @@ } }, "reorderWebsiteUriButton": { - "message": "Reorder website URI. Use arrow key to move item up or down." + "message": "Ordna om webbplatsens URI. Använd piltangenten för att flytta objektet uppåt eller nedåt." }, "reorderFieldUp": { - "message": "$LABEL$ moved up, position $INDEX$ of $LENGTH$", + "message": "$LABEL$ flyttas upp, position $INDEX$ av $LENGTH$", "placeholders": { "label": { "content": "$1", @@ -4865,13 +5038,13 @@ } }, "selectCollectionsToAssign": { - "message": "Select collections to assign" + "message": "Välj samlingar som ska tilldelas" }, "personalItemTransferWarningSingular": { - "message": "1 item will be permanently transferred to the selected organization. You will no longer own this item." + "message": "1 objekt kommer att permanent överföras till den valda organisationen. Du kommer inte längre att äga detta objekt." }, "personalItemsTransferWarningPlural": { - "message": "$PERSONAL_ITEMS_COUNT$ items will be permanently transferred to the selected organization. You will no longer own these items.", + "message": "$PERSONAL_ITEMS_COUNT$ objekt kommer att överföras permanent till den valda organisationen. Du kommer inte längre att äga dessa objekt.", "placeholders": { "personal_items_count": { "content": "$1", @@ -4880,7 +5053,7 @@ } }, "personalItemWithOrgTransferWarningSingular": { - "message": "1 item will be permanently transferred to $ORG$. You will no longer own this item.", + "message": "1 objekt kommer att överföras permanent till $ORG$. Du kommer inte längre att äga det här objektet.", "placeholders": { "org": { "content": "$1", @@ -4889,7 +5062,7 @@ } }, "personalItemsWithOrgTransferWarningPlural": { - "message": "$PERSONAL_ITEMS_COUNT$ items will be permanently transferred to $ORG$. You will no longer own these items.", + "message": "$PERSONAL_ITEMS_COUNT$ objekt kommer att överföras permanent till $ORG$. Du kommer inte längre att äga dessa objekt.", "placeholders": { "personal_items_count": { "content": "$1", @@ -4902,13 +5075,13 @@ } }, "successfullyAssignedCollections": { - "message": "Successfully assigned collections" + "message": "Framgångsrikt tilldelade samlingar" }, "nothingSelected": { - "message": "You have not selected anything." + "message": "Du har inte valt något." }, "itemsMovedToOrg": { - "message": "Items moved to $ORGNAME$", + "message": "Objekt flyttade till $ORGNAME$", "placeholders": { "orgname": { "content": "$1", @@ -4917,7 +5090,7 @@ } }, "itemMovedToOrg": { - "message": "Item moved to $ORGNAME$", + "message": "Objektet flyttat till $ORGNAME$", "placeholders": { "orgname": { "content": "$1", @@ -4926,7 +5099,7 @@ } }, "reorderFieldDown": { - "message": "$LABEL$ moved down, position $INDEX$ of $LENGTH$", + "message": "$LABEL$ flyttas ner, position $INDEX$ av $LENGTH$", "placeholders": { "label": { "content": "$1", @@ -4943,19 +5116,19 @@ } }, "itemLocation": { - "message": "Item Location" + "message": "Föremålets placering" }, "fileSend": { - "message": "File Send" + "message": "Skicka fil" }, "fileSends": { - "message": "File Sends" + "message": "Skicka filer" }, "textSend": { - "message": "Text Send" + "message": "Skicka text" }, "textSends": { - "message": "Text Sends" + "message": "Text skickas" }, "accountActions": { "message": "Kontoåtgärder" @@ -4964,13 +5137,13 @@ "message": "Visa antal autofyllförslag för inloggning på tilläggsikonen" }, "showQuickCopyActions": { - "message": "Show quick copy actions on Vault" + "message": "Visa snabbkopieringsåtgärder på Vault" }, "systemDefault": { "message": "Systemstandard" }, "enterprisePolicyRequirementsApplied": { - "message": "Enterprise policy requirements have been applied to this setting" + "message": "Krav på företagspolicy har tillämpats på denna inställning" }, "sshPrivateKey": { "message": "Privat nyckel" @@ -5000,13 +5173,13 @@ "message": "Försök igen" }, "vaultCustomTimeoutMinimum": { - "message": "Minimum custom timeout is 1 minute." + "message": "Minsta anpassade timeout är 1 minut." }, "additionalContentAvailable": { - "message": "Additional content is available" + "message": "Ytterligare innehåll är tillgängligt" }, "fileSavedToDevice": { - "message": "File saved to device. Manage from your device downloads." + "message": "Fil sparad till enhet. Hantera nedladdningar från din enhet." }, "showCharacterCount": { "message": "Visa antal tecken" @@ -5015,43 +5188,43 @@ "message": "Dölj antal tecken" }, "itemsInTrash": { - "message": "Items in trash" + "message": "Föremål i papperskorgen" }, "noItemsInTrash": { - "message": "No items in trash" + "message": "Inga objekt i papperskorgen" }, "noItemsInTrashDesc": { - "message": "Items you delete will appear here and be permanently deleted after 30 days" + "message": "Objekt som du raderar kommer att visas här och raderas permanent efter 30 dagar" }, "trashWarning": { - "message": "Items that have been in trash more than 30 days will automatically be deleted" + "message": "Objekt som har legat i papperskorgen i mer än 30 dagar raderas automatiskt" }, "restore": { "message": "Återställ" }, "deleteForever": { - "message": "Delete forever" + "message": "Ta bort permanent" }, "noEditPermissions": { - "message": "You don't have permission to edit this item" + "message": "Du har inte behörighet att redigera detta objekt" }, "biometricsStatusHelptextUnlockNeeded": { - "message": "Biometric unlock is unavailable because PIN or password unlock is required first." + "message": "Biometrisk upplåsning är inte tillgänglig eftersom upplåsning med PIN-kod eller lösenord krävs först." }, "biometricsStatusHelptextHardwareUnavailable": { - "message": "Biometric unlock is currently unavailable." + "message": "Biometrisk upplåsning är för närvarande inte tillgänglig." }, "biometricsStatusHelptextAutoSetupNeeded": { - "message": "Biometric unlock is unavailable due to misconfigured system files." + "message": "Biometrisk upplåsning är inte tillgänglig på grund av felkonfigurerade systemfiler." }, "biometricsStatusHelptextManualSetupNeeded": { - "message": "Biometric unlock is unavailable due to misconfigured system files." + "message": "Biometrisk upplåsning är inte tillgänglig på grund av felkonfigurerade systemfiler." }, "biometricsStatusHelptextDesktopDisconnected": { - "message": "Biometric unlock is unavailable because the Bitwarden desktop app is closed." + "message": "Biometrisk upplåsning är inte tillgänglig eftersom Bitwardens skrivbordsapp är stängd." }, "biometricsStatusHelptextNotEnabledInDesktop": { - "message": "Biometric unlock is unavailable because it is not enabled for $EMAIL$ in the Bitwarden desktop app.", + "message": "Biometrisk upplåsning är inte tillgänglig eftersom den inte är aktiverad för $EMAIL$ i Bitwardens skrivbordsapp.", "placeholders": { "email": { "content": "$1", @@ -5060,37 +5233,37 @@ } }, "biometricsStatusHelptextUnavailableReasonUnknown": { - "message": "Biometric unlock is currently unavailable for an unknown reason." + "message": "Biometrisk upplåsning är för närvarande inte tillgänglig av okänd anledning." }, "unlockVault": { - "message": "Unlock your vault in seconds" + "message": "Lås upp ditt valv på några sekunder" }, "unlockVaultDesc": { - "message": "You can customize your unlock and timeout settings to more quickly access your vault." + "message": "Du kan anpassa dina inställningar för upplåsning och timeout för att snabbare komma åt ditt valv." }, "unlockPinSet": { - "message": "Unlock PIN set" + "message": "Lås upp PIN-koden" }, "unlockWithBiometricSet": { - "message": "Unlock with biometrics set" + "message": "Lås upp med biometriuppsättning" }, "authenticating": { - "message": "Authenticating" + "message": "Autentisering" }, "fillGeneratedPassword": { - "message": "Fill generated password", + "message": "Fyll i genererat lösenord", "description": "Heading for the password generator within the inline menu" }, "passwordRegenerated": { - "message": "Password regenerated", + "message": "Lösenord förnyat", "description": "Notification message for when a password has been regenerated" }, "saveToBitwarden": { - "message": "Save to Bitwarden", + "message": "Spara till Bitwarden", "description": "Confirmation message for saving a login to Bitwarden" }, "spaceCharacterDescriptor": { - "message": "Space", + "message": "Mellanslag", "description": "Represents the space key in screen reader content as a readable word" }, "tildeCharacterDescriptor": { @@ -5098,7 +5271,7 @@ "description": "Represents the ~ key in screen reader content as a readable word" }, "backtickCharacterDescriptor": { - "message": "Backtick", + "message": "Bakvänd apostrof", "description": "Represents the ` key in screen reader content as a readable word" }, "exclamationCharacterDescriptor": { @@ -5106,27 +5279,27 @@ "description": "Represents the ! key in screen reader content as a readable word" }, "atSignCharacterDescriptor": { - "message": "At sign", + "message": "Vid skylt", "description": "Represents the @ key in screen reader content as a readable word" }, "hashSignCharacterDescriptor": { - "message": "Hash sign", + "message": "Hash-tecken", "description": "Represents the # key in screen reader content as a readable word" }, "dollarSignCharacterDescriptor": { - "message": "Dollar sign", + "message": "Dollartecken", "description": "Represents the $ key in screen reader content as a readable word" }, "percentSignCharacterDescriptor": { - "message": "Percent sign", + "message": "Procenttecken", "description": "Represents the % key in screen reader content as a readable word" }, "caretCharacterDescriptor": { - "message": "Caret", + "message": "Cirkumflex", "description": "Represents the ^ key in screen reader content as a readable word" }, "ampersandCharacterDescriptor": { - "message": "Ampersand", + "message": "Och", "description": "Represents the & key in screen reader content as a readable word" }, "asteriskCharacterDescriptor": { @@ -5134,19 +5307,19 @@ "description": "Represents the * key in screen reader content as a readable word" }, "parenLeftCharacterDescriptor": { - "message": "Left parenthesis", + "message": "Vänster parentes", "description": "Represents the ( key in screen reader content as a readable word" }, "parenRightCharacterDescriptor": { - "message": "Right parenthesis", + "message": "Höger parentes", "description": "Represents the ) key in screen reader content as a readable word" }, "hyphenCharacterDescriptor": { - "message": "Underscore", + "message": "Understreck", "description": "Represents the _ key in screen reader content as a readable word" }, "underscoreCharacterDescriptor": { - "message": "Hyphen", + "message": "Bindestreck", "description": "Represents the - key in screen reader content as a readable word" }, "plusCharacterDescriptor": { @@ -5154,23 +5327,23 @@ "description": "Represents the + key in screen reader content as a readable word" }, "equalsCharacterDescriptor": { - "message": "Equals", + "message": "Lika med", "description": "Represents the = key in screen reader content as a readable word" }, "braceLeftCharacterDescriptor": { - "message": "Left brace", + "message": "Vänster stag", "description": "Represents the { key in screen reader content as a readable word" }, "braceRightCharacterDescriptor": { - "message": "Right brace", + "message": "Höger stag", "description": "Represents the } key in screen reader content as a readable word" }, "bracketLeftCharacterDescriptor": { - "message": "Left bracket", + "message": "Vänster konsol", "description": "Represents the [ key in screen reader content as a readable word" }, "bracketRightCharacterDescriptor": { - "message": "Right bracket", + "message": "Höger konsol", "description": "Represents the ] key in screen reader content as a readable word" }, "pipeCharacterDescriptor": { @@ -5178,39 +5351,39 @@ "description": "Represents the | key in screen reader content as a readable word" }, "backSlashCharacterDescriptor": { - "message": "Back slash", + "message": "Bakvänt snedstreck", "description": "Represents the back slash key in screen reader content as a readable word" }, "colonCharacterDescriptor": { - "message": "Colon", + "message": "Kolon", "description": "Represents the : key in screen reader content as a readable word" }, "semicolonCharacterDescriptor": { - "message": "Semicolon", + "message": "Semikolon", "description": "Represents the ; key in screen reader content as a readable word" }, "doubleQuoteCharacterDescriptor": { - "message": "Double quote", + "message": "Dubbla citat", "description": "Represents the double quote key in screen reader content as a readable word" }, "singleQuoteCharacterDescriptor": { - "message": "Single quote", + "message": "Enstaka offert", "description": "Represents the ' key in screen reader content as a readable word" }, "lessThanCharacterDescriptor": { - "message": "Less than", + "message": "Mindre än", "description": "Represents the < key in screen reader content as a readable word" }, "greaterThanCharacterDescriptor": { - "message": "Greater than", + "message": "Större än", "description": "Represents the > key in screen reader content as a readable word" }, "commaCharacterDescriptor": { - "message": "Comma", + "message": "Komma", "description": "Represents the , key in screen reader content as a readable word" }, "periodCharacterDescriptor": { - "message": "Period", + "message": "Punkt", "description": "Represents the . key in screen reader content as a readable word" }, "questionCharacterDescriptor": { @@ -5218,7 +5391,7 @@ "description": "Represents the ? key in screen reader content as a readable word" }, "forwardSlashCharacterDescriptor": { - "message": "Forward slash", + "message": "Framåtriktat snedstreck", "description": "Represents the / key in screen reader content as a readable word" }, "lowercaseAriaLabel": { @@ -5228,52 +5401,52 @@ "message": "Versal" }, "generatedPassword": { - "message": "Generated password" + "message": "Genererat lösenord" }, "compactMode": { - "message": "Compact mode" + "message": "Kompakt läge" }, "beta": { "message": "Beta" }, "extensionWidth": { - "message": "Extension width" + "message": "Förlängning bredd" }, "wide": { - "message": "Wide" + "message": "Bred" }, "extraWide": { - "message": "Extra wide" + "message": "Extra bred" }, "sshKeyWrongPassword": { - "message": "The password you entered is incorrect." + "message": "Lösenordet du har angett är felaktigt." }, "importSshKey": { - "message": "Import" + "message": "Importera" }, "confirmSshKeyPassword": { - "message": "Confirm password" + "message": "Bekräfta lösenord" }, "enterSshKeyPasswordDesc": { - "message": "Enter the password for the SSH key." + "message": "Ange lösenordet för SSH-nyckeln." }, "enterSshKeyPassword": { - "message": "Enter password" + "message": "Ange lösenord" }, "invalidSshKey": { - "message": "The SSH key is invalid" + "message": "SSH-nyckeln är ogiltig" }, "sshKeyTypeUnsupported": { - "message": "The SSH key type is not supported" + "message": "SSH-nyckeltypen stöds inte" }, "importSshKeyFromClipboard": { - "message": "Import key from clipboard" + "message": "Importera nyckel från urklipp" }, "sshKeyImported": { - "message": "SSH key imported successfully" + "message": "SSH-nyckel importerad framgångsrikt" }, "cannotRemoveViewOnlyCollections": { - "message": "You cannot remove collections with View only permissions: $COLLECTIONS$", + "message": "Du kan inte ta bort samlingar med behörigheten Visa endast: $COLLECTIONS$", "placeholders": { "collections": { "content": "$1", @@ -5282,81 +5455,81 @@ } }, "updateDesktopAppOrDisableFingerprintDialogTitle": { - "message": "Please update your desktop application" + "message": "Uppdatera din desktop-applikation" }, "updateDesktopAppOrDisableFingerprintDialogMessage": { - "message": "To use biometric unlock, please update your desktop application, or disable fingerprint unlock in the desktop settings." + "message": "Om du vill använda biometrisk upplåsning måste du uppdatera din skrivbordsapplikation eller inaktivera fingeravtrycksupplåsning i skrivbordsinställningarna." }, "changeAtRiskPassword": { - "message": "Change at-risk password" + "message": "Ändra lösenord för riskgrupper" }, "settingsVaultOptions": { - "message": "Vault options" + "message": "Alternativ för valv" }, "emptyVaultDescription": { - "message": "The vault protects more than just your passwords. Store secure logins, IDs, cards and notes securely here." + "message": "Valvet skyddar mer än bara dina lösenord. Förvara säkra inloggningar, ID-handlingar, kort och anteckningar säkert här." }, "introCarouselLabel": { - "message": "Welcome to Bitwarden" + "message": "Välkommen till Bitwarden" }, "securityPrioritized": { - "message": "Security, prioritized" + "message": "Säkerhet, prioriterad" }, "securityPrioritizedBody": { - "message": "Save logins, cards, and identities to your secure vault. Bitwarden uses zero-knowledge, end-to-end encryption to protect what’s important to you." + "message": "Spara inloggningar, kort och identiteter i ditt säkra valv. Bitwarden använder nollkännedom, end-to-end-kryptering för att skydda det som är viktigt för dig." }, "quickLogin": { - "message": "Quick and easy login" + "message": "Snabb och enkel inloggning" }, "quickLoginBody": { - "message": "Set up biometric unlock and autofill to log into your accounts without typing a single letter." + "message": "Ställ in biometrisk upplåsning och autofyll för att logga in på dina konton utan att skriva en enda bokstav." }, "secureUser": { - "message": "Level up your logins" + "message": "Höj nivån på dina inloggningar" }, "secureUserBody": { - "message": "Use the generator to create and save strong, unique passwords for all your accounts." + "message": "Använd generatorn för att skapa och spara starka, unika lösenord för alla dina konton." }, "secureDevices": { - "message": "Your data, when and where you need it" + "message": "Dina data, när och där du behöver dem" }, "secureDevicesBody": { - "message": "Save unlimited passwords across unlimited devices with Bitwarden mobile, browser, and desktop apps." + "message": "Spara obegränsat antal lösenord på obegränsat antal enheter med Bitwardens mobil-, webbläsar- och skrivbordsappar." }, "nudgeBadgeAria": { - "message": "1 notification" + "message": "1 meddelande" }, "emptyVaultNudgeTitle": { - "message": "Import existing passwords" + "message": "Importera befintliga lösenord" }, "emptyVaultNudgeBody": { - "message": "Use the importer to quickly transfer logins to Bitwarden without manually adding them." + "message": "Använd importören för att snabbt överföra inloggningar till Bitwarden utan att lägga till dem manuellt." }, "emptyVaultNudgeButton": { - "message": "Import now" + "message": "Importera nu" }, "hasItemsVaultNudgeTitle": { - "message": "Welcome to your vault!" + "message": "Välkommen till ditt valv!" }, "hasItemsVaultNudgeBodyOne": { - "message": "Autofill items for the current page" + "message": "Autofyll objekt för den aktuella sidan" }, "hasItemsVaultNudgeBodyTwo": { - "message": "Favorite items for easy access" + "message": "Favoritartiklar för enkel åtkomst" }, "hasItemsVaultNudgeBodyThree": { - "message": "Search your vault for something else" + "message": "Sök i ditt valv efter något annat" }, "newLoginNudgeTitle": { - "message": "Save time with autofill" + "message": "Spara tid med autofyll" }, "newLoginNudgeBodyOne": { - "message": "Include a", + "message": "Inkludera ett", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newLoginNudgeBodyBold": { - "message": "Website", + "message": "Webbplats", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, @@ -5366,58 +5539,58 @@ "example": "Include a Website so this login appears as an autofill suggestion." }, "newCardNudgeTitle": { - "message": "Seamless online checkout" + "message": "Sömlös utcheckning online" }, "newCardNudgeBody": { - "message": "With cards, easily autofill payment forms securely and accurately." + "message": "Med kort kan du enkelt autofylla betalningsformulär på ett säkert och exakt sätt." }, "newIdentityNudgeTitle": { - "message": "Simplify creating accounts" + "message": "Förenkla skapandet av konton" }, "newIdentityNudgeBody": { - "message": "With identities, quickly autofill long registration or contact forms." + "message": "Med identiteter kan du snabbt autofylla långa registrerings- eller kontaktformulär." }, "newNoteNudgeTitle": { - "message": "Keep your sensitive data safe" + "message": "Håll dina känsliga uppgifter säkra" }, "newNoteNudgeBody": { - "message": "With notes, securely store sensitive data like banking or insurance details." + "message": "Med anteckningar kan du säkert lagra känslig information som bank- eller försäkringsuppgifter." }, "newSshNudgeTitle": { - "message": "Developer-friendly SSH access" + "message": "Utvecklarvänlig SSH-åtkomst" }, "newSshNudgeBodyOne": { - "message": "Store your keys and connect with the SSH agent for fast, encrypted authentication.", + "message": "Förvara dina nycklar och anslut till SSH-agenten för snabb, krypterad autentisering.", "description": "Two part message", "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, "newSshNudgeBodyTwo": { - "message": "Learn more about SSH agent", + "message": "Läs mer om SSH-agent", "description": "Two part message", "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, "generatorNudgeTitle": { - "message": "Quickly create passwords" + "message": "Skapa lösenord snabbt" }, "generatorNudgeBodyOne": { - "message": "Easily create strong and unique passwords by clicking on", + "message": "Skapa enkelt starka och unika lösenord genom att klicka på", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyTwo": { - "message": "to help you keep your logins secure.", + "message": "för att hjälpa dig att hålla dina inloggningar säkra.", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyAria": { - "message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.", + "message": "Skapa enkelt starka och unika lösenord genom att klicka på knappen Generera lösenord så att du kan hålla dina inloggningar säkra.", "description": "Aria label for the body content of the generator nudge" }, "noPermissionsViewPage": { - "message": "You do not have permissions to view this page. Try logging in with a different account." + "message": "Du har inte behörighet att visa den här sidan. Försök att logga in med ett annat konto." }, "wasmNotSupported": { - "message": "WebAssembly is not supported on your browser or is not enabled. WebAssembly is required to use the Bitwarden app.", + "message": "WebAssembly stöds inte av din webbläsare eller är inte aktiverat. WebAssembly krävs för att använda Bitwarden-appen.", "description": "'WebAssembly' is a technical term and should not be translated." } } diff --git a/apps/browser/src/_locales/te/messages.json b/apps/browser/src/_locales/te/messages.json index b6a8d1834b4..f4c58318bc1 100644 --- a/apps/browser/src/_locales/te/messages.json +++ b/apps/browser/src/_locales/te/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Search vault" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Edit" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "Ask to update existing login" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/th/messages.json b/apps/browser/src/_locales/th/messages.json index f7895c8866d..fd92c71c200 100644 --- a/apps/browser/src/_locales/th/messages.json +++ b/apps/browser/src/_locales/th/messages.json @@ -6,39 +6,39 @@ "message": "โลโก้ Bitwarden" }, "extName": { - "message": "Bitwarden Password Manager", + "message": "Bitwarden - จัดการรหัสผ่าน", "description": "Extension name, MUST be less than 40 characters (Safari restriction)" }, "extDesc": { - "message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information", + "message": "ไม่ว่าจะอยู่ที่ไหน Bitwarden ก็สามารถปกป้องรหัสผ่าน พาสคีย์ และข้อมูลสำคัญของคุณได้อย่างง่ายดาย", "description": "Extension description, MUST be less than 112 characters (Safari restriction)" }, "loginOrCreateNewAccount": { "message": "ล็อกอิน หรือ สร้างบัญชีใหม่ เพื่อใช้งานตู้นิรภัยของคุณ" }, "inviteAccepted": { - "message": "Invitation accepted" + "message": "ตอบรับคำเชิญแล้ว" }, "createAccount": { "message": "สร้างบัญชี" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "เพิ่งเริ่มใช้ Bitwarden ใช่ไหม?" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "เข้าสู่ระบบด้วยพาสคีย์" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "ใช้การลงชื่อเพียงครั้งเดียว" }, "welcomeBack": { - "message": "Welcome back" + "message": "ยินดีต้อนรับกลับมา" }, "setAStrongPassword": { - "message": "Set a strong password" + "message": "ตั้งรหัสผ่านที่รัดกุม" }, "finishCreatingYourAccountBySettingAPassword": { - "message": "Finish creating your account by setting a password" + "message": "ดำเนินการสร้างบัญชีของคุณให้เสร็จสมบูรณ์โดยการตั้งรหัสผ่าน" }, "enterpriseSingleSignOn": { "message": "Enterprise Single Sign-On" @@ -65,7 +65,7 @@ "message": "คำใบ้เกี่ยวกับรหัสผ่านหลักสามารถช่วยให้คุณนึกรหัสผ่านหลักออกได้หากลืม" }, "masterPassHintText": { - "message": "If you forget your password, the password hint can be sent to your email. $CURRENT$/$MAXIMUM$ character maximum.", + "message": "หากคุณลืมรหัสผ่าน ระบบสามารถส่งคำใบ้รหัสผ่านไปยังอีเมลของคุณได้ จำกัด $CURRENT$/$MAXIMUM$ ตัวอักษร", "placeholders": { "current": { "content": "$1", @@ -84,7 +84,7 @@ "message": "Master Password Hint (optional)" }, "passwordStrengthScore": { - "message": "Password strength score $SCORE$", + "message": "คะแนนความรัดกุมของรหัสผ่าน $SCORE$", "placeholders": { "score": { "content": "$1", @@ -264,7 +264,7 @@ "message": "Request password hint" }, "enterYourAccountEmailAddressAndYourPasswordHintWillBeSentToYou": { - "message": "Enter your account email address and your password hint will be sent to you" + "message": "กรอกที่อยู่อีเมลบัญชีของคุณ แล้วระบบจะส่งคำใบ้รหัสผ่านไปให้คุณ" }, "getMasterPasswordHint": { "message": "รับคำใบ้เกี่ยวกับรหัสผ่านหลักของคุณ" @@ -547,6 +547,9 @@ "searchVault": { "message": "ค้นหาในตู้นิรภัย" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "แก้ไข" }, @@ -668,7 +671,7 @@ "message": "ตู้เซฟของคุณถูกล็อก ยืนยันตัวตนของคุณเพื่อดำเนินการต่อ" }, "yourVaultIsLockedV2": { - "message": "Your vault is locked" + "message": "ห้องนิรภัยของคุณถูกล็อก" }, "yourAccountIsLocked": { "message": "Your account is locked" @@ -1022,7 +1025,7 @@ "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." }, "addLoginNotificationDescAlt": { - "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + "message": "หากไม่พบรายการในห้องนิรภัยของคุณ ระบบจะถามเพื่อเพิ่มรายการ มีผลกับทุกบัญชีที่ลงชื่อเข้าใช้" }, "showCardsInVaultViewV2": { "message": "Always show cards as Autofill suggestions on Vault view" @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "ขอให้ปรับปรุงการเข้าสู่ระบบที่มีอยู่" }, @@ -1342,7 +1351,7 @@ "message": "ลบไฟล์แนบแล้ว" }, "newAttachment": { - "message": "Add New Attachment" + "message": "เพิ่มไฟล์แนบใหม่" }, "noAttachments": { "message": "ไม่มีไฟล์แนบ" @@ -1544,7 +1553,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn compatible security key to access your account." + "message": "ใช้กุญแจความปลอดภัยที่รองรับ WebAuthn ใดก็ได้เพื่อเข้าถึงบัญชีของคุณ" }, "emailTitle": { "message": "อีเมล" @@ -1597,7 +1606,7 @@ "description": "Represents the message for allowing the user to enable the autofill overlay" }, "autofillSuggestionsSectionTitle": { - "message": "Autofill suggestions" + "message": "คำแนะนำการกรอกข้อมูลอัตโนมัติ" }, "autofillSpotlightTitle": { "message": "Easily find autofill suggestions" @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Security Code" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "ex." }, @@ -2148,16 +2160,16 @@ "message": "ปลดล็อกด้วย PIN" }, "setYourPinTitle": { - "message": "Set PIN" + "message": "ตั้ง PIN" }, "setYourPinButton": { - "message": "Set PIN" + "message": "ตั้ง PIN" }, "setYourPinCode": { "message": "ตั้ง PIN เพื่อใช้ปลดล็อก Bitwarden ทั้งนี้ หากคุณล็อกเอาต์ออกจากแอปโดยสมบูรณ์จะเป็นการลบการตั้งค่า PIN ของคุณด้วย" }, "setPinCode": { - "message": "You can use this PIN to unlock Bitwarden. Your PIN will be reset if you ever fully log out of the application." + "message": "ตั้ง PIN เพื่อใช้ปลดล็อก Bitwarden และหากคุณล็อกเอาต์ออกจากแอปโดยสมบูรณ์จะเป็นการลบการตั้งค่า PIN ของคุณ" }, "pinRequired": { "message": "ต้องระบุ PIN" @@ -2172,7 +2184,7 @@ "message": "ปลดล็อกด้วยไบโอเมตริก" }, "unlockWithMasterPassword": { - "message": "Unlock with master password" + "message": "เข้าสู่ระบบด้วยรหัสผ่านหลัก" }, "awaitDesktop": { "message": "Awaiting confirmation from desktop" @@ -2184,7 +2196,7 @@ "message": "ล็อคด้วยรหัสผ่านหลักเมื่อรีสตาร์ทเบราว์เซอร์" }, "lockWithMasterPassOnRestart1": { - "message": "Require master password on browser restart" + "message": "กำหนดให้ป้อนรหัสผ่านหลักเมื่อรีสตาร์ทเบราว์เซอร์" }, "selectOneCollection": { "message": "คุณต้องเลือกอย่างน้อยหนึ่งคอลเลกชัน" @@ -2902,7 +2914,7 @@ "message": "Hide your email address from viewers." }, "passwordPrompt": { - "message": "Master password re-prompt" + "message": "การยืนยันให้ป้อนรหัสผ่านหลักอีกครั้ง" }, "passwordConfirmation": { "message": "Master password confirmation" @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "Updated master password" }, @@ -3416,7 +3431,7 @@ "message": "Fingerprint phrase" }, "fingerprintMatchInfo": { - "message": "Please make sure your vault is unlocked and the Fingerprint phrase matches on the other device." + "message": "โปรดตรวจสอบให้แน่ใจว่าห้องนิรภัยของคุณปลดล็อกอยู่ และลายนิ้วมือตรงกันบนอุปกรณ์อื่น" }, "resendNotification": { "message": "Resend notification" @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Request sent" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "Exposed Master Password" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Remember this device to make future logins seamless" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Device approval required. Select an approval option below:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Request admin approval" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "Organization SSO identifier is required." }, @@ -3639,10 +3792,10 @@ "message": "Organization is not trusted" }, "emergencyAccessTrustWarning": { - "message": "For the security of your account, only confirm if you have granted emergency access to this user and their fingerprint matches what is displayed in their account" + "message": "เพื่อความปลอดภัยของบัญชีของคุณ โปรดยืนยันว่าคุณได้ให้สิทธิ์การเข้าถึงในกรณีฉุกเฉินแก่ผู้ใช้นี้ และลายนิ้วมือของผู้ใช้ตรงกับที่แสดงในบัญชีของพวกเขาเท่านั้น" }, "orgTrustWarning": { - "message": "For the security of your account, only proceed if you are a member of this organization, have account recovery enabled, and the fingerprint displayed below matches the organization's fingerprint." + "message": "เพื่อความปลอดภัยของบัญชีของคุณ ให้ดำเนินการต่อเมื่อคุณเป็นสมาชิกขององค์กรนี้, ได้เปิดใช้งานการกู้คืนบัญชี, และลายนิ้วมือที่แสดงด้านล่างตรงกับลายนิ้วมือขององค์กรเท่านั้น" }, "orgTrustWarning1": { "message": "This organization has an Enterprise policy that will enroll you in account recovery. Enrollment will allow organization administrators to change your password. Only proceed if you recognize this organization and the fingerprint phrase displayed below matches the organization's fingerprint." @@ -3920,7 +4073,7 @@ "message": "Verification required for this action. Set a PIN to continue." }, "setPin": { - "message": "Set PIN" + "message": "ตั้ง PIN" }, "verifyWithBiometrics": { "message": "Verify with biometrics" @@ -4017,10 +4170,10 @@ "message": "Select the import file" }, "chooseFile": { - "message": "Choose File" + "message": "เลือกไฟล์" }, "noFileChosen": { - "message": "No file chosen" + "message": "ไม่มีไฟล์ที่เลือก" }, "orCopyPasteFileContents": { "message": "or copy/paste the import file contents" @@ -4051,7 +4204,7 @@ "message": "Passkey" }, "accessing": { - "message": "Accessing" + "message": "กำลังเข้าถึง" }, "loggedInExclamation": { "message": "Logged in!" @@ -4205,7 +4358,7 @@ "message": "Available accounts" }, "accountLimitReached": { - "message": "Account limit reached. Log out of an account to add another." + "message": "ถึงขีดจำกัดของบัญชีแล้ว กรุณาออกจากระบบบัญชีอื่นเพื่อเพิ่มบัญชีใหม่" }, "active": { "message": "active" @@ -4244,6 +4397,26 @@ "message": "Common formats", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Continue to browser settings?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, @@ -4460,7 +4633,7 @@ "message": "Admin Console" }, "accountSecurity": { - "message": "Account security" + "message": "ความปลอดภัยของบัญชี" }, "notifications": { "message": "Notifications" @@ -4533,10 +4706,10 @@ "message": "Additional information" }, "itemHistory": { - "message": "Item history" + "message": "ประวัติการแก้ไขรายการ" }, "lastEdited": { - "message": "Last edited" + "message": "แก้ไขล่าสุดเมื่อ" }, "ownerYou": { "message": "Owner: You" @@ -4548,13 +4721,13 @@ "message": "Copy Successful" }, "upload": { - "message": "Upload" + "message": "อัปโหลด" }, "addAttachment": { - "message": "Add attachment" + "message": "เพิ่มไฟล์แนบ" }, "maxFileSizeSansPunctuation": { - "message": "Maximum file size is 500 MB" + "message": "ขนาดไฟล์สูงสุด คือ 500 MB" }, "deleteAttachmentName": { "message": "Delete attachment $NAME$", @@ -4657,7 +4830,7 @@ "message": "Authenticator key" }, "autofillOptions": { - "message": "Autofill options" + "message": "ตัวเลือกในการป้อนอัตโนมัติ" }, "websiteUri": { "message": "Website (URI)" @@ -4737,7 +4910,7 @@ "message": "Show animations" }, "addAccount": { - "message": "Add account" + "message": "เพิ่มบัญชี" }, "loading": { "message": "Loading" @@ -4779,7 +4952,7 @@ } }, "addField": { - "message": "Add field" + "message": "เพิ่มฟิลด์" }, "add": { "message": "Add" @@ -4791,7 +4964,7 @@ "message": "Field label" }, "textHelpText": { - "message": "Use text fields for data like security questions" + "message": "ใช้ช่องข้อความสำหรับเก็บข้อมูล เช่น คำถามเพื่อความปลอดภัย" }, "hiddenHelpText": { "message": "Use hidden fields for sensitive data like a password" @@ -4827,7 +5000,7 @@ } }, "fieldAdded": { - "message": "$LABEL$ added", + "message": "เพิ่ม $LABEL$ แล้ว", "placeholders": { "label": { "content": "$1", @@ -4958,7 +5131,7 @@ "message": "Text Sends" }, "accountActions": { - "message": "Account actions" + "message": "การจัดการบัญชี" }, "showNumberOfAutofillSuggestions": { "message": "Show number of login autofill suggestions on extension icon" @@ -5069,7 +5242,7 @@ "message": "You can customize your unlock and timeout settings to more quickly access your vault." }, "unlockPinSet": { - "message": "Unlock PIN set" + "message": "ตั้งค่า PIN สำหรับปลดล็อกแล้ว" }, "unlockWithBiometricSet": { "message": "Unlock with biometrics set" @@ -5309,7 +5482,7 @@ "message": "Quick and easy login" }, "quickLoginBody": { - "message": "Set up biometric unlock and autofill to log into your accounts without typing a single letter." + "message": "ตั้งค่าการปลดล็อกด้วยไบโอเมตริกซ์และการกรอกข้อมูลอัตโนมัติ เพื่อลงชื่อเข้าใช้บัญชีของคุณโดยไม่ต้องพิมพ์แม้แต่ตัวอักษรเดียว" }, "secureUser": { "message": "Level up your logins" diff --git a/apps/browser/src/_locales/tr/messages.json b/apps/browser/src/_locales/tr/messages.json index aae4fdd2486..2151d7385b7 100644 --- a/apps/browser/src/_locales/tr/messages.json +++ b/apps/browser/src/_locales/tr/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Kasada ara" }, + "resetSearch": { + "message": "Aramayı sıfırla" + }, "edit": { "message": "Düzenle" }, @@ -1173,6 +1176,12 @@ "message": "Bu hesabı kaydedemedik. Bilgileri elle girmeyi deneyin.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Parolanızı değiştirdikten sonra yeni parolanızyla tekrar giriş yapmanız gerekecektir. Diğer cihazlarınızdaki aktif oturumlar bir saat içinde kapatılacaktır." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Hesap kurtarmayı tamamlamak için ana parolanızı değiştirin." + }, "enableChangedPasswordNotification": { "message": "Mevcut hesapları güncellemeyi öner" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Güvenlik kodu" }, + "cardNumber": { + "message": "kart numarası" + }, "ex": { "message": "örn." }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Bu özelliği kullanmak için e-postanızı doğrulamanız gerekir. E-postanızı web kasasında doğrulayabilirsiniz." }, + "masterPasswordSuccessfullySet": { + "message": "Ana parola başarıyla ayarlandı" + }, "updatedMasterPassword": { "message": "Ana parola güncellendi" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "İstek gönderildi" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "$DEVICE$ cihazında $EMAIL$ girişi onaylandı", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Başka bir cihazdan giriş isteğini reddettiniz. Yanlışlıkla yaptıysanız aynı cihazdan yeniden giriş yapmayı deneyin." + }, + "device": { + "message": "Cihaz" + }, + "loginStatus": { + "message": "Oturum açma durumu" + }, + "masterPasswordChanged": { + "message": "Ana parola kaydedildi" + }, "exposedMasterPassword": { "message": "Açığa Çıkmış Ana Parola" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Sonraki girişleri kolaylaştırmak için bu cihazı hatırla" }, + "manageDevices": { + "message": "Cihazları yönet" + }, + "currentSession": { + "message": "Geçerli oturum" + }, + "mobile": { + "message": "Mobil", + "description": "Mobile app" + }, + "extension": { + "message": "Uzantı", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Masaüstü", + "description": "Desktop app" + }, + "webVault": { + "message": "Web kasası" + }, + "webApp": { + "message": "Web uygulaması" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "İstek bekliyor" + }, + "firstLogin": { + "message": "İlk giriş" + }, + "trusted": { + "message": "Güvenilen" + }, + "needsApproval": { + "message": "Onay gerekiyor" + }, + "devices": { + "message": "Cihazlar" + }, + "accessAttemptBy": { + "message": "$EMAIL$ erişim denemesi", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Erişimi onayla" + }, + "denyAccess": { + "message": "Erişimi reddet" + }, + "time": { + "message": "Tarih" + }, + "deviceType": { + "message": "Cihaz türü" + }, + "loginRequest": { + "message": "Giriş isteği" + }, + "thisRequestIsNoLongerValid": { + "message": "Bu istek artık geçerli değil." + }, + "areYouTryingToAccessYourAccount": { + "message": "Hesabınıza erişmeye mi çalışıyorsunuz?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "$DEVICE$ cihazında $EMAIL$ girişi onaylandı", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Başka bir cihazdan giriş isteğini reddettiniz. Yanlışlıkla yaptıysanız aynı cihazdan yeniden giriş yapmayı deneyin." + }, + "loginRequestHasAlreadyExpired": { + "message": "Giriş isteğinin süresi doldu." + }, + "justNow": { + "message": "Az önce" + }, + "requestedXMinutesAgo": { + "message": "$MINUTES$ dakika önce istendi", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Cihaz onayı gerekiyor. Lütfen onay yönteminizi seçin:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Yönetici onayı iste" }, + "unableToCompleteLogin": { + "message": "Oturum açma tamamlanamadı" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Güvenilen bir cihazdan oturum açmalı veya yöneticinizden size parola atamasını istemelisiniz." + }, "ssoIdentifierRequired": { "message": "Kuruluş SSO tanımlayıcısı gereklidir." }, @@ -4244,6 +4397,26 @@ "message": "Sık kullanılan biçimler", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Gelişmiş seçenekler", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Tarayıcı ayarlarına gidilsin mi?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Kopyala: $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Kopyala: $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/uk/messages.json b/apps/browser/src/_locales/uk/messages.json index ab4fe87a2be..16482b9f869 100644 --- a/apps/browser/src/_locales/uk/messages.json +++ b/apps/browser/src/_locales/uk/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "Пошук" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "Змінити" }, @@ -1173,6 +1176,12 @@ "message": "На жаль, не вдається зберегти. Введіть дані вручну.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Після зміни пароля потрібно буде ввійти в систему з новим паролем. Активні сеанси на інших пристроях буде завершено протягом години." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Змініть свій головний пароль, щоб завершити відновлення облікового запису." + }, "enableChangedPasswordNotification": { "message": "Запитувати про оновлення запису" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Код безпеки" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "зразок" }, @@ -2045,7 +2057,7 @@ "message": "Починається з" }, "regEx": { - "message": "Звичайний вираз", + "message": "Регулярний вираз", "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { @@ -2488,10 +2500,10 @@ "message": "Політика організації заблокувала імпортування записів до вашого особистого сховища." }, "restrictCardTypeImport": { - "message": "Cannot import card item types" + "message": "Не вдається імпортувати записи карток" }, "restrictCardTypeImportDesc": { - "message": "A policy set by 1 or more organizations prevents you from importing cards to your vaults." + "message": "Політика принаймні однієї організації не дозволяє вам імпортувати записи карток до сховища." }, "domainsTitle": { "message": "Домени", @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "Для використання цієї функції необхідно підтвердити електронну пошту. Ви можете виконати підтвердження у вебсховищі." }, + "masterPasswordSuccessfullySet": { + "message": "Головний пароль успішно встановлено" + }, "updatedMasterPassword": { "message": "Головний пароль оновлено" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "Запит надіслано" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Головний пароль збережено" + }, "exposedMasterPassword": { "message": "Головний пароль викрито" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "Запам'ятайте цей пристрій, щоб спростити майбутні входи в систему" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "Необхідне підтвердження пристрою. Виберіть варіант підтвердження нижче:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Запит підтвердження адміністратора" }, + "unableToCompleteLogin": { + "message": "Не вдалося завершити вхід" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Ви повинні ввійти до системи на довіреному пристрої або попросити адміністратора призначити вам пароль." + }, "ssoIdentifierRequired": { "message": "Потрібен SSO-ідентифікатор організації." }, @@ -4244,6 +4397,26 @@ "message": "Поширені формати", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "Виявлення збігів URI – це спосіб ідентифікації пропозицій автозаповнення Bitwarden.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "Регулярний вираз – це функція, що має підвищений ризик розкриття облікових даних, призначена для досвідчених користувачів.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Починається з\" – це функція, що має підвищений ризик розкриття облікових даних, призначена для досвідчених користувачів.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Докладніше про виявлення збігів", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Додаткові налаштування", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Відкрити налаштування браузера?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Копіювати $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, @@ -5072,7 +5245,7 @@ "message": "Розблокування PIN-кодом встановлено" }, "unlockWithBiometricSet": { - "message": "Unlock with biometrics set" + "message": "Біометричне розблокування налаштовано" }, "authenticating": { "message": "Аутентифікація" diff --git a/apps/browser/src/_locales/vi/messages.json b/apps/browser/src/_locales/vi/messages.json index d02658f9e26..02660dcb38b 100644 --- a/apps/browser/src/_locales/vi/messages.json +++ b/apps/browser/src/_locales/vi/messages.json @@ -10,35 +10,35 @@ "description": "Extension name, MUST be less than 40 characters (Safari restriction)" }, "extDesc": { - "message": "Ở nhà, ở cơ quan, hay trên đường đi, Bitwarden sẽ bảo mật tất cả mật khẩu, mã khoá, và thông tin cá nhân của bạn", + "message": "Ở nhà, ở cơ quan hay khi di chuyển, Bitwarden sẽ bảo vệ tất cả mật khẩu, mã khóa và thông tin cá nhân của bạn", "description": "Extension description, MUST be less than 112 characters (Safari restriction)" }, "loginOrCreateNewAccount": { "message": "Đăng nhập hoặc tạo tài khoản mới để truy cập kho lưu trữ của bạn." }, "inviteAccepted": { - "message": "Lời mời được chấp nhận" + "message": "Đã chấp nhận lời mời" }, "createAccount": { "message": "Tạo tài khoản" }, "newToBitwarden": { - "message": "New to Bitwarden?" + "message": "Bạn mới sử dụng Bitwarden?" }, "logInWithPasskey": { - "message": "Log in with passkey" + "message": "Đăng nhập bằng khóa truy cập" }, "useSingleSignOn": { - "message": "Use single sign-on" + "message": "Dùng đăng nhập một lần" }, "welcomeBack": { - "message": "Welcome back" + "message": "Chào mừng bạn trở lại" }, "setAStrongPassword": { - "message": "Đặt mật khẩu mạnh" + "message": "Đặt một mật khẩu mạnh" }, "finishCreatingYourAccountBySettingAPassword": { - "message": "Hoàn thành việc tạo tài khoản của bạn bằng cách đặt mật khẩu" + "message": "Hoàn tất việc tạo tài khoản bằng cách đặt mật khẩu" }, "enterpriseSingleSignOn": { "message": "Đăng nhập bằng tài khoản tổ chức" @@ -84,7 +84,7 @@ "message": "Gợi ý mật khẩu chính (tùy chọn)" }, "passwordStrengthScore": { - "message": "Password strength score $SCORE$", + "message": "Độ mạnh của mật khẩu $SCORE$", "placeholders": { "score": { "content": "$1", @@ -96,7 +96,7 @@ "message": "Tham gia tổ chức" }, "joinOrganizationName": { - "message": "Join $ORGANIZATIONNAME$", + "message": "Tham gia $ORGANIZATIONNAME$", "placeholders": { "organizationName": { "content": "$1", @@ -132,16 +132,16 @@ "message": "Sao chép mật khẩu" }, "copyPassphrase": { - "message": "Copy passphrase" + "message": "Sao chép cụm mật khẩu" }, "copyNote": { "message": "Sao chép ghi chú" }, "copyUri": { - "message": "Sao chép URI" + "message": "Sao chép đường dẫn" }, "copyUsername": { - "message": "Sao chép tên người dùng" + "message": "Sao chép tên đăng nhập" }, "copyNumber": { "message": "Sao chép số" @@ -153,10 +153,10 @@ "message": "Sao chép tên" }, "copyCompany": { - "message": "Copy company" + "message": "Sao chép công ty" }, "copySSN": { - "message": "Số bảo hiểm xã hội" + "message": "Sao chép số bảo hiểm xã hội" }, "copyPassportNumber": { "message": "Sao chép số hộ chiếu" @@ -165,16 +165,16 @@ "message": "Sao chép số giấy phép" }, "copyPrivateKey": { - "message": "Copy private key" + "message": "Sao chép khóa riêng tư" }, "copyPublicKey": { - "message": "Copy public key" + "message": "Sao chép khóa công khai" }, "copyFingerprint": { - "message": "Copy fingerprint" + "message": "Sao chép vân tay" }, "copyCustomField": { - "message": "Copy $FIELD$", + "message": "Sao chép $FIELD$", "placeholders": { "field": { "content": "$1", @@ -183,17 +183,17 @@ } }, "copyWebsite": { - "message": "Copy website" + "message": "Sao chép trang web" }, "copyNotes": { - "message": "Copy notes" + "message": "Sao chép ghi chú" }, "copy": { - "message": "Copy", + "message": "Sao chép", "description": "Copy to clipboard" }, "fill": { - "message": "Fill", + "message": "Điền", "description": "This string is used on the vault page to indicate autofilling. Horizontal space is limited in the interface here so try and keep translations as concise as possible." }, "autoFill": { @@ -209,10 +209,10 @@ "message": "Tự động điền danh tính" }, "fillVerificationCode": { - "message": "Fill verification code" + "message": "Điền mã xác minh" }, "fillVerificationCodeAria": { - "message": "Fill Verification Code", + "message": "Điền mã xác minh", "description": "Aria label for the heading displayed the inline menu for totp code autofill" }, "generatePasswordCopied": { @@ -222,7 +222,7 @@ "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." + "message": "Không có thông tin đăng nhập phù hợp" }, "noCards": { "message": "Không có thẻ" @@ -246,7 +246,7 @@ "message": "Đăng nhập vào kho lưu trữ của bạn" }, "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." + "message": "Hiện không có thông tin đăng nhập nào để tự động điền vào tab hiện tại." }, "addLogin": { "message": "Thêm một đăng nhập" @@ -255,16 +255,16 @@ "message": "Thêm mục" }, "accountEmail": { - "message": "Account email" + "message": "Email tài khoản" }, "requestHint": { - "message": "Request hint" + "message": "Yêu cầu gợi ý" }, "requestPasswordHint": { - "message": "Request password hint" + "message": "Yêu cầu gợi ý mật khẩu" }, "enterYourAccountEmailAddressAndYourPasswordHintWillBeSentToYou": { - "message": "Enter your account email address and your password hint will be sent to you" + "message": "Nhập địa chỉ email tài khoản của bạn và gợi ý mật khẩu sẽ được gửi đến bạn" }, "getMasterPasswordHint": { "message": "Nhận gợi ý mật khẩu chính" @@ -294,7 +294,7 @@ "message": "Tiếp tục tới ứng dụng web?" }, "continueToWebAppDesc": { - "message": "Khám phá thêm các tính năng của tài khoản Bitwarden của bạn trên bản web." + "message": "Khám phá thêm các tính năng tài khoản Bitwarden của bạn trên bản web." }, "continueToHelpCenter": { "message": "Tiếp tục tới Trung tâm trợ giúp?" @@ -306,17 +306,17 @@ "message": "Tiếp tục tới cửa hàng tiện ích mở rộng của trình duyệt?" }, "continueToBrowserExtensionStoreDesc": { - "message": "Giúp người khác tìm hiểu xem Bitwarden có phù hợp với họ không. Hãy truy cập cửa hàng tiện ích mở rộng trên trình duyệt của bạn và đánh giá ngay bây giờ." + "message": "Giúp người khác tìm hiểu xem Bitwarden có phù hợp với họ không. Truy cập cửa hàng tiện ích mở rộng của trình duyệt và đánh giá ngay bây giờ." }, "changeMasterPasswordOnWebConfirmation": { "message": "Bạn có thể thay đổi mật khẩu chính của mình trên Bitwarden bản web." }, "fingerprintPhrase": { - "message": "Cụm vân tay", + "message": "Cụm từ xác thực", "description": "A 'fingerprint phrase' is a unique 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 vân tay của tài khoản của bạn", + "message": "Cụm từ xác thực 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": { @@ -341,16 +341,16 @@ "message": "Bitwarden dành cho Doanh Nghiệp" }, "bitwardenAuthenticator": { - "message": "Bitwarden Authenticator" + "message": "Trình xác thực Bitwarden" }, "continueToAuthenticatorPageDesc": { - "message": "Ứng dụng Bitwarden Authenticator cho phép bạn lưu trữ khóa xác thực và tạo mã TOTP cho quy trình xác minh hai bước. Tìm hiểu thêm trên trang web bitwarden.com" + "message": "Trình xác thực Bitwarden cho phép bạn lưu trữ các khóa xác thực và tạo mã TOTP cho quy trình xác thực hai bước. Tìm hiểu thêm trên trang web bitwarden.com" }, "bitwardenSecretsManager": { - "message": "Bitwarden Secrets Manager" + "message": "Trình quản lý Bí mật Bitwarden" }, "continueToSecretsManagerPageDesc": { - "message": "Lưu trữ bảo mật, quản lý và chia sẻ bí mật của nhà phát triển với Bitwarden Secrets Manager. Truy cập bitwarden.com để biết thêm chi tiết." + "message": "Lưu trữ, quản lý và chia sẻ các thông tin bí mật của nhà phát triển một cách an toàn với Trình quản lý Bí mật Bitwarden. Tìm hiểu thêm trên trang web bitwarden.com." }, "passwordlessDotDev": { "message": "Passwordless.dev" @@ -359,10 +359,10 @@ "message": "Tạo trải nghiệm đăng nhập mượt mà và an toàn không cần mật khẩu truyền thống với Passwordless.dev. Tìm hiểu thêm trên trang web bitwarden.com." }, "freeBitwardenFamilies": { - "message": "Gói Gia đình Miễn phí của Bitwarden" + "message": "Gói Bitwarden cho Gia đình miễn phí" }, "freeBitwardenFamiliesPageDesc": { - "message": "Bạn đủ điều kiện cho Gói Gia đình Miễn phí của Bitwarden. Hãy nhận ưu đãi này ngay hôm nay trên ứng dụng web." + "message": "Bạn đủ điều kiện miễn phí Gói Bitwarden cho Gia đình. Hãy nhận ưu đãi này ngay hôm nay trên web." }, "version": { "message": "Phiên bản" @@ -383,7 +383,7 @@ "message": "Chỉnh sửa thư mục" }, "editFolderWithName": { - "message": "Edit folder: $FOLDERNAME$", + "message": "Sửa thư mục: $FOLDERNAME$", "placeholders": { "foldername": { "content": "$1", @@ -398,16 +398,16 @@ "message": "Tên thư mục" }, "folderHintText": { - "message": "Nest a folder by adding the parent folder's name followed by a “/”. Example: Social/Forums" + "message": "Tạo một thư mục con bằng cách thêm tên thư mục cha theo sau là dấu “/”. Ví dụ: Social/Forums" }, "noFoldersAdded": { - "message": "No folders added" + "message": "Không thêm thư mục nào" }, "createFoldersToOrganize": { - "message": "Create folders to organize your vault items" + "message": "Tạo thư mục để tổ chức các mục trong kho của bạn" }, "deleteFolderPermanently": { - "message": "Are you sure you want to permanently delete this folder?" + "message": "Bạn có chắc muốn xóa vĩnh viễn thư mục này?" }, "deleteFolder": { "message": "Xóa thư mục" @@ -450,7 +450,7 @@ "message": "Tự động tạo mật khẩu mạnh mẽ, độc nhất cho đăng nhập của bạn." }, "bitWebVaultApp": { - "message": "Ứng dụng Bitwarden bản web" + "message": "Ứng dụng web Bitwarden" }, "importItems": { "message": "Nhập mục" @@ -462,19 +462,19 @@ "message": "Tạo mật khẩu" }, "generatePassphrase": { - "message": "Generate passphrase" + "message": "Tạo cụm mật khẩu" }, "passwordGenerated": { - "message": "Password generated" + "message": "Đã tạo mật khẩu" }, "passphraseGenerated": { - "message": "Passphrase generated" + "message": "Đã tạo cụm mật khẩu" }, "usernameGenerated": { - "message": "Username generated" + "message": "Tên đăng nhập được tạo tự động" }, "emailGenerated": { - "message": "Email generated" + "message": "Email được tạo ra" }, "regeneratePassword": { "message": "Tạo lại mật khẩu" @@ -490,7 +490,7 @@ "description": "Card header for password generator include block" }, "uppercaseDescription": { - "message": "Include uppercase characters", + "message": "Bao gồm các ký tự viết hoa", "description": "Tooltip for the password generator uppercase character checkbox" }, "uppercaseLabel": { @@ -498,7 +498,7 @@ "description": "Label for the password generator uppercase character checkbox" }, "lowercaseDescription": { - "message": "Include lowercase characters", + "message": "Bao gồm các ký tự viết thường", "description": "Full description for the password generator lowercase character checkbox" }, "lowercaseLabel": { @@ -521,7 +521,7 @@ "message": "Số từ" }, "wordSeparator": { - "message": "Word Separator" + "message": "Dấu phân cách từ" }, "capitalize": { "message": "Viết hoa", @@ -534,19 +534,22 @@ "message": "Số kí tự tối thiểu" }, "minSpecial": { - "message": "Số kí tự đặc biệt tối thiểu" + "message": "Kí tự đặc biệt tối thiểu" }, "avoidAmbiguous": { - "message": "Avoid ambiguous characters", + "message": "Tránh các ký tự dễ nhầm lẫn", "description": "Label for the avoid ambiguous characters checkbox." }, "generatorPolicyInEffect": { - "message": "Enterprise policy requirements have been applied to your generator options.", + "message": "Các yêu cầu chính sách của doanh nghiệp đã được áp dụng cho các tùy chọn trình tạo của bạn.", "description": "Indicates that a policy limits the credential generator screen." }, "searchVault": { "message": "Tìm kiếm trong kho lưu trữ" }, + "resetSearch": { + "message": "Đặt lại tìm kiếm" + }, "edit": { "message": "Sửa" }, @@ -557,19 +560,19 @@ "message": "Không có mục nào để liệt kê." }, "itemInformation": { - "message": "Mục thông tin" + "message": "Thông tin mục" }, "username": { - "message": "Tên người dùng" + "message": "Tên đăng nhập" }, "password": { "message": "Mật khẩu" }, "totp": { - "message": "Khóa xác thực" + "message": "Mã xác thực bí mật" }, "passphrase": { - "message": "Cụm từ mật khẩu" + "message": "Cụm mật khẩu" }, "favorite": { "message": "Yêu thích" @@ -578,16 +581,16 @@ "message": "Bỏ thích" }, "itemAddedToFavorites": { - "message": "Đã thêm vào yêu thích" + "message": "Đã thêm mục vào yêu thích" }, "itemRemovedFromFavorites": { - "message": "Đã xóa khỏi yêu thích" + "message": "Đã xóa mục khỏi yêu thích" }, "notes": { "message": "Ghi chú" }, "privateNote": { - "message": "Private note" + "message": "Ghi chú riêng tư" }, "note": { "message": "Ghi chú" @@ -611,7 +614,7 @@ "message": "Mở trang web" }, "launchWebsiteName": { - "message": "Launch website $ITEMNAME$", + "message": "Khởi chạy trang web $ITEMNAME$", "placeholders": { "itemname": { "content": "$1", @@ -635,16 +638,16 @@ "message": "Tùy chọn mở khóa" }, "unlockMethodNeededToChangeTimeoutActionDesc": { - "message": "Thiết lập phương thức mở khóa để thay đổi hành động hết thời gian chờ của vault." + "message": "Thiết lập phương thức mở khóa để thay đổi hành động sau khi đóng kho." }, "unlockMethodNeeded": { "message": "Thiết lập phương pháp mở khóa trong Cài đặt" }, "sessionTimeoutHeader": { - "message": "Thời gian chờ của phiên" + "message": "Thời gian hết phiên" }, "vaultTimeoutHeader": { - "message": "Vault timeout" + "message": "Thời gian mở kho" }, "otherOptions": { "message": "Tùy chọn khác" @@ -653,28 +656,28 @@ "message": "Đánh giá tiện ích mở rộng" }, "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ế." + "message": "Trình duyệt web của bạn không hỗ trợ sao chép vào bảng nhớ tạm một cách dễ dàng. Vui lòng sao chép thủ công." }, "verifyYourIdentity": { - "message": "Verify your identity" + "message": "Xác minh danh tính của bạn" }, "weDontRecognizeThisDevice": { - "message": "We don't recognize this device. Enter the code sent to your email to verify your identity." + "message": "Chúng tôi không nhận diện được thiết bị này. Nhập mã được gửi đến email để xác minh danh tính của bạn." }, "continueLoggingIn": { - "message": "Continue logging in" + "message": "Tiếp tục đăng nhập" }, "yourVaultIsLocked": { "message": "Kho của bạn đã bị khóa. Xác minh danh tính của bạn để mở khoá." }, "yourVaultIsLockedV2": { - "message": "Your vault is locked" + "message": "Kho của bạn đã khóa" }, "yourAccountIsLocked": { - "message": "Your account is locked" + "message": "Tài khoản của bạn đã bị khóa" }, "or": { - "message": "or" + "message": "hoặc" }, "unlock": { "message": "Mở khóa" @@ -696,10 +699,10 @@ "message": "Mật khẩu chính không hợp lệ" }, "vaultTimeout": { - "message": "Thời gian chờ của kho" + "message": "Đóng kho sau" }, "vaultTimeout1": { - "message": "Timeout" + "message": "Quá hạn" }, "lockNow": { "message": "Khóa ngay" @@ -741,7 +744,7 @@ "message": "4 giờ" }, "onLocked": { - "message": "Mỗi khi khóa" + "message": "Mỗi khi khóa máy" }, "onRestart": { "message": "Mỗi khi khởi động lại trình duyệt" @@ -759,7 +762,7 @@ "message": "Mật khẩu chính" }, "masterPassImportant": { - "message": "Mật khẩu chính của bạn không thể phục hồi nếu bạn quên nó!" + "message": "Mật khẩu chính của bạn không thể khôi phục nếu bạn quên nó!" }, "masterPassHintLabel": { "message": "Gợi ý mật khẩu chính" @@ -768,7 +771,7 @@ "message": "Đã xảy ra lỗi" }, "emailRequired": { - "message": "Yêu cầu địa chỉ email." + "message": "Cần điền địa chỉ email." }, "invalidEmail": { "message": "Địa chỉ email không hợp lệ." @@ -777,7 +780,7 @@ "message": "Yêu cầu mật khẩu chính." }, "confirmMasterPasswordRequired": { - "message": "Yêu cầu nhập lại mật khẩu chính." + "message": "Cần nhập lại mật khẩu chính." }, "masterPasswordMinlength": { "message": "Mật khẩu chính phải có ít nhất $VALUE$ kí tự.", @@ -830,7 +833,7 @@ } }, "autofillError": { - "message": "Không thể tự động điền mục đã chọn trên trang này. Hãy thực hiện sao chép và dán thông tin một cách thủ công." + "message": "Không thể tự động điền mục đã chọn trên trang này. Vui lòng sao chép và dán thông tin thủ công." }, "totpCaptureError": { "message": "Không thể quét mã QR từ trang web hiện tại" @@ -842,19 +845,19 @@ "message": "Quét mã QR xác thực từ trang web hiện tại" }, "totpHelperTitle": { - "message": "Thực hiện xác minh hai bước liền mạch" + "message": "Giúp quá trình xác minh 2 bước diễn ra liền mạch" }, "totpHelper": { - "message": "Bitwarden có thể lưu trữ và điền mã xác minh 2 bước. Sao chép và dán khóa vào trường này." + "message": "Bitwarden có thể lưu trữ và điền mã xác thực 2 bước. Sao chép và dán khóa vào ô này." }, "totpHelperWithCapture": { - "message": "Bitwarden có thể lưu trữ và điền mã xác minh 2 bước. Hãy chọn biểu tượng máy ảnh để chụp mã QR xác thực của trang web, hoặc sao chép và dán khoá vào ô này." + "message": "Bitwarden có thể lưu trữ và điền mã xác minh 2 bước. Hãy chọn biểu tượng máy ảnh để quét mã QR xác thực của trang web, hoặc sao chép và dán khoá vào ô này." }, "learnMoreAboutAuthenticators": { - "message": "Learn more about authenticators" + "message": "Tìm hiểu thêm về các công cụ xác thực" }, "copyTOTP": { - "message": "Sao chép khóa Authenticator (TOTP)" + "message": "Sao chép khóa xác thực (TOTP)" }, "loggedOut": { "message": "Đã đăng xuất" @@ -869,25 +872,25 @@ "message": "Đăng nhập" }, "logInToBitwarden": { - "message": "Log in to Bitwarden" + "message": "Đăng nhập Bitwarden" }, "enterTheCodeSentToYourEmail": { - "message": "Enter the code sent to your email" + "message": "Nhập mã được gửi về email của bạn" }, "enterTheCodeFromYourAuthenticatorApp": { - "message": "Enter the code from your authenticator app" + "message": "Nhập mã từ ứng dụng xác thực của bạn" }, "pressYourYubiKeyToAuthenticate": { - "message": "Press your YubiKey to authenticate" + "message": "Nhấn YubiKey của bạn để xác thực" }, "duoTwoFactorRequiredPageSubtitle": { - "message": "Duo two-step login is required for your account. Follow the steps below to finish logging in." + "message": "Đăng nhập hai bước là bắt buộc cho tài khoản của bạn. Hãy làm theo các bước dưới đây để hoàn tất quá trình đăng nhập." }, "followTheStepsBelowToFinishLoggingIn": { - "message": "Follow the steps below to finish logging in." + "message": "Thực hiện các bước sau để hoàn tất đăng nhập." }, "followTheStepsBelowToFinishLoggingInWithSecurityKey": { - "message": "Follow the steps below to finish logging in with your security key." + "message": "Thực hiện các bước sau để hoàn tất đăng nhập bằng khóa bảo mật của bạn." }, "restartRegistration": { "message": "Tiến hành đăng ký lại" @@ -911,7 +914,7 @@ "message": "Không" }, "location": { - "message": "Location" + "message": "Vị trí" }, "unexpectedError": { "message": "Một lỗi bất ngờ đã xảy ra." @@ -923,13 +926,13 @@ "message": "Đã thêm thư mục" }, "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ờ?" + "message": "Đăng nhập hai bước giúp 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 việc đăng nhập 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. Đăng nhập hai bước có thể được thiết lập trên bitwarden.com. Bạn có muốn truy cập trang web bây giờ không?" }, "twoStepLoginConfirmationContent": { - "message": "Make your account more secure by setting up two-step login in the Bitwarden web app." + "message": "Tăng cường bảo mật tài khoản của bạn bằng cách thiết lập đăng nhập hai bước trên trang web Bitwarden." }, "twoStepLoginConfirmationTitle": { - "message": "Continue to web app?" + "message": "Tiếp tục tới ứng dụng web?" }, "editedFolder": { "message": "Đã lưu thư mục" @@ -941,7 +944,7 @@ "message": "Đã xóa thư mục" }, "gettingStartedTutorial": { - "message": "Hướng dẫn Bắt đầu" + "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." @@ -969,7 +972,7 @@ } }, "newUri": { - "message": "URI mới" + "message": "Đường dẫn mới" }, "addDomain": { "message": "Thêm tên miền", @@ -979,13 +982,13 @@ "message": "Đã thêm mục" }, "editedItem": { - "message": "Mục được chỉnh sửa" + "message": "Đã lưu mục" }, "deleteItemConfirmation": { - "message": "Bạn có chắc bạn muốn xóa mục này?" + "message": "Bạn có chắc muốn cho nó vào thùng rác?" }, "deletedItem": { - "message": "Đã xóa mục" + "message": "Mục đã được cho vào thùng rác" }, "overwritePassword": { "message": "Ghi đè mật khẩu" @@ -994,10 +997,10 @@ "message": "Bạn có chắc chắn muốn ghi đè mật khẩu hiện tại không?" }, "overwriteUsername": { - "message": "Ghi đè tên người dùng" + "message": "Ghi đè tên đăng nhập" }, "overwriteUsernameConfirmation": { - "message": "Bạn có chắc chắn muốn ghi đè tên người dùng hiện tại không?" + "message": "Bạn có chắc chắn muốn ghi đè tên đăng nhập hiện tại không?" }, "searchFolder": { "message": "Tìm kiếm thư mục" @@ -1006,7 +1009,7 @@ "message": "Tìm kiếm bộ sưu tập" }, "searchType": { - "message": "Tìm loại" + "message": "Tìm theo thể loại" }, "noneFolder": { "message": "Không có thư mục", @@ -1016,16 +1019,16 @@ "message": "Hỏi để thêm đăng nhập" }, "vaultSaveOptionsTitle": { - "message": "Lưu vào các tùy chọn kho" + "message": "Tùy chọn lưu vào kho" }, "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." + "message": "Nếu không tìm thấy mục nào trong kho của bạn, hãy yêu cầu thêm mục đó." }, "addLoginNotificationDescAlt": { - "message": "Đưa ra lựa chọn để thêm một mục nếu không tìm thấy mục đó trong hòm của bạn. Áp dụng với mọi tài khoản đăng nhập trên thiết bị." + "message": "Nếu không tìm thấy mục nào trong kho của bạn, hãy yêu cầu thêm mục đó. Áp dụng cho tất cả tài khoản đã đăng nhập." }, "showCardsInVaultViewV2": { - "message": "Always show cards as Autofill suggestions on Vault view" + "message": "Luôn hiển thị thẻ như đề xuất tự động điền trên giao diện kho" }, "showCardsCurrentTab": { "message": "Hiển thị thẻ trên trang Tab" @@ -1034,26 +1037,26 @@ "message": "Liệt kê các mục thẻ trên trang Tab để dễ dàng tự động điền." }, "showIdentitiesInVaultViewV2": { - "message": "Always show identities as Autofill suggestions on Vault view" + "message": "Luôn hiển thị danh tính như đề xuất tự động điền trên giao diện kho" }, "showIdentitiesCurrentTab": { "message": "Hiển thị danh tính trên trang Tab" }, "showIdentitiesCurrentTabDesc": { - "message": "Liệt kê các mục danh tính trên trang Tab để dễ dàng tự động điền." + "message": "Liệt kê các danh tính trên trang Tab để dễ dàng tự động điền." }, "clickToAutofillOnVault": { - "message": "Click items to autofill on Vault view" + "message": "Nhấp vào mục để tự động điền trong giao diện kho" }, "clickToAutofill": { - "message": "Click items in autofill suggestion to fill" + "message": "Nhấp vào mục trong đề xuất tự động điền để điền thông tin" }, "clearClipboard": { - "message": "Dọn dẹp khay nhớ tạm", + "message": "Dọn dẹp bảng 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.", + "message": "Tự động xóa mọi thứ đã sao chép khỏi bảng nhớ tạm.", "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "notificationAddDesc": { @@ -1063,7 +1066,7 @@ "message": "Lưu" }, "notificationViewAria": { - "message": "View $ITEMNAME$, opens in new window", + "message": "Xem $ITEMNAME$, mở trong cửa sổ mới", "placeholders": { "itemName": { "content": "$1" @@ -1072,18 +1075,18 @@ "description": "Aria label for the view button in notification bar confirmation message" }, "notificationNewItemAria": { - "message": "New Item, opens in new window", + "message": "Mục mới, mở trong cửa sổ mới", "description": "Aria label for the new item button in notification bar confirmation message when error is prompted" }, "notificationEditTooltip": { - "message": "Edit before saving", + "message": "Chỉnh sửa trước khi lưu", "description": "Tooltip and Aria label for edit button on cipher item" }, "newNotification": { - "message": "New notification" + "message": "Thông báo mới" }, "labelWithNotification": { - "message": "$LABEL$: New notification", + "message": "$LABEL$: Thông báo mới", "description": "Label for the notification with a new login suggestion.", "placeholders": { "label": { @@ -1093,15 +1096,15 @@ } }, "notificationLoginSaveConfirmation": { - "message": "saved to Bitwarden.", + "message": "đã lưu vào Bitwarden.", "description": "Shown to user after item is saved." }, "notificationLoginUpdatedConfirmation": { - "message": "updated in Bitwarden.", + "message": "đã cập nhật trong Bitwarden.", "description": "Shown to user after item is updated." }, "selectItemAriaLabel": { - "message": "Select $ITEMTYPE$, $ITEMNAME$", + "message": "Chọn $ITEMTYPE$, $ITEMNAME$", "description": "Used by screen readers. $1 is the item type (like vault or folder), $2 is the selected item name.", "placeholders": { "itemType": { @@ -1113,35 +1116,35 @@ } }, "saveAsNewLoginAction": { - "message": "Save as new login", + "message": "Lưu như đăng nhập mới", "description": "Button text for saving login details as a new entry." }, "updateLoginAction": { - "message": "Update login", + "message": "Cập nhật đăng nhập", "description": "Button text for updating an existing login entry." }, "unlockToSave": { - "message": "Unlock to save this login", + "message": "Mở khóa để lưu thông tin đăng nhập này", "description": "User prompt to take action in order to save the login they just entered." }, "saveLogin": { - "message": "Save login", + "message": "Lưu đăng nhập", "description": "Prompt asking the user if they want to save their login details." }, "updateLogin": { - "message": "Update existing login", + "message": "Cập nhật thông tin đăng nhập hiện có", "description": "Prompt asking the user if they want to update an existing login entry." }, "loginSaveSuccess": { - "message": "Login saved", + "message": "Đã lưu đăng nhập", "description": "Message displayed when login details are successfully saved." }, "loginUpdateSuccess": { - "message": "Login updated", + "message": "Đã cập nhật đăng nhập", "description": "Message displayed when login details are successfully updated." }, "loginUpdateTaskSuccess": { - "message": "Great job! You took the steps to make you and $ORGANIZATION$ more secure.", + "message": "Làm tốt lắm! Bạn đã thực hiện các bước để tăng cường bảo mật cho bản thân và $ORGANIZATION$.", "placeholders": { "organization": { "content": "$1" @@ -1150,7 +1153,7 @@ "description": "Shown to user after login is updated." }, "loginUpdateTaskSuccessAdditional": { - "message": "Thank you for making $ORGANIZATION$ more secure. You have $TASK_COUNT$ more passwords to update.", + "message": "Cảm ơn bạn đã giúp $ORGANIZATION$ an toàn hơn. Bạn còn $TASK_COUNT$ mật khẩu cần cập nhật nữa.", "placeholders": { "organization": { "content": "$1" @@ -1162,17 +1165,23 @@ "description": "Shown to user after login is updated." }, "nextSecurityTaskAction": { - "message": "Change next password", + "message": "Thay đổi mật khẩu tiếp theo", "description": "Message prompting user to undertake completion of another security task." }, "saveFailure": { - "message": "Error saving", + "message": "Lỗi khi lưu", "description": "Error message shown when the system fails to save login details." }, "saveFailureDetails": { - "message": "Oh no! We couldn't save this. Try entering the details manually.", + "message": "Ôi không! Chúng tôi không thể lưu lại được. Hãy thử nhập thông tin thủ công.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "Sau khi thay đổi mật khẩu, bạn cần đăng nhập lại bằng mật khẩu mới. Các phiên đăng nhập đang hoạt động trên các thiết bị khác sẽ bị đăng xuất trong vòng một giờ." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Thay đổi mật khẩu chính của bạn để hoàn tất quá trình khôi phục tài khoản." + }, "enableChangedPasswordNotification": { "message": "Hỏi để cập nhật đăng nhập hiện có" }, @@ -1180,22 +1189,22 @@ "message": "Yêu cầu cập nhật mật khẩu đăng nhập khi phát hiện thay đổi trên trang web." }, "changedPasswordNotificationDescAlt": { - "message": "Đưa ra lựa chọn để cập nhật mật khẩu khi phát hiện có sự thay đổi trên trang web. Áp dụng với mọi tài khoản đăng nhập trên thiết bị." + "message": "Yêu cầu cập nhật mật khẩu đăng nhập khi phát hiện thay đổi trên trang web. Áp dụng cho tất cả tài khoản đã đăng nhập." }, "enableUsePasskeys": { - "message": "Đưa ra lựa chọn để lưu và sử dụng mã khoá" + "message": "Yêu cầu lưu và sử dụng mã khóa" }, "usePasskeysDesc": { - "message": "Đưa ra lựa chọn để lưu mã khoá mới hoặc đăng nhập bằng mã khoá đã lưu trong kho. Áp dụng với mọi tài khoản đăng nhập trên thiết bị." + "message": "Yêu cầu lưu các mã khóa mới hoặc đăng nhập bằng các mã khóa đã lưu trong kho của bạn. Áp dụng cho tất cả các tài khoản đã đăng nhập." }, "notificationChangeDesc": { - "message": "Bạn có muốn cập nhật mật khẩu này trên Bitwarden không?" + "message": "Bạn có muốn cập nhật mật khẩu này trong Bitwarden không?" }, "notificationChangeSave": { "message": "Cập nhật" }, "notificationUnlockDesc": { - "message": "Vui lòng mở khóa Kho Bitwarden của bạn để hoàn thành quá trình tự động điền." + "message": "Mở khóa kho Bitwarden của bạn để hoàn tất quá trình tự động điền." }, "notificationUnlock": { "message": "Mở khóa" @@ -1207,17 +1216,17 @@ "message": "Hiển thị tuỳ chọn menu ngữ cảnh" }, "contextMenuItemDesc": { - "message": "Sử dụng một đúp chuột để truy cập vào việc tạo mật khẩu và thông tin đăng nhập phù hợp cho trang web. " + "message": "Dùng cú nhấp chuột phụ để truy cập trình tạo mật khẩu và đăng nhập tương ứng cho trang web." }, "contextMenuItemDescAlt": { - "message": "Truy cập trình khởi tạo mật khẩu và các mục đăng nhập đã lưu của trang web bằng cách nhấn đúp chuột. Áp dụng với mọi tài khoản đăng nhập trên thiết bị." + "message": "Nhấp chuột phải để truy cập tính năng tạo mật khẩu và xem các thông tin đăng nhập phù hợp cho trang web này. Áp dụng với mọi tài khoản đã đăng nhập." }, "defaultUriMatchDetection": { - "message": "Phương thức kiểm tra URI mặc định", + "message": "Phát hiện khớp URI mặc định", "description": "Default URI match detection for autofill." }, "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." + "message": "Chọn cách thức mặc định hệ thống so khớp đường dẫn (URI) để xử lý đăng nhập khi thực hiện các thao tác như tự động điền." }, "theme": { "message": "Chủ đề" @@ -1226,7 +1235,7 @@ "message": "Thay đổi màu sắc ứng dụng." }, "themeDescAlt": { - "message": "Thay đổi tông màu giao diện của ứng dụng. Áp dụng với mọi tài khoản đăng nhập trên thiết bị." + "message": "Thay đổi chủ đề màu sắc của ứng dụng. Áp dụng cho tất cả các tài khoản đã đăng nhập." }, "dark": { "message": "Tối", @@ -1246,7 +1255,7 @@ "message": "Định dạng tập tin" }, "fileEncryptedExportWarningDesc": { - "message": "Tập tin xuất này sẽ được bảo vệ bằng mật khẩu và yêu cầu mật khẩu để giải mã." + "message": "Tệp tin này sẽ được bảo vệ bằng mật khẩu và yêu cầu mật khẩu tệp tin để giải mã." }, "filePassword": { "message": "Mật khẩu tập tin" @@ -1255,13 +1264,13 @@ "message": "Mật khẩu này sẽ được sử dụng để xuất và nhập tập tin này" }, "accountRestrictedOptionDescription": { - "message": "Sử dụng khóa mã hóa tài khoản của bạn, được tạo từ tên người dùng và mật khẩu chính của bạn để mã hóa tệp xuất và giới hạn việc nhập chỉ cho tài khoản Bitwarden hiện tại." + "message": "Sử dụng khóa mã hóa tài khoản của bạn, được tạo từ tên đăng nhập và mật khẩu chính của bạn để mã hóa tệp xuất và giới hạn việc nhập chỉ cho tài khoản Bitwarden hiện tại." }, "passwordProtectedOptionDescription": { "message": "Thiết lập mật khẩu cho tệp để mã hóa dữ liệu xuất và nhập nó vào bất kỳ tài khoản Bitwarden nào bằng cách sử dụng mật khẩu đó để giải mã." }, "exportTypeHeading": { - "message": "Loại xuất" + "message": "Xuất kiểu" }, "accountRestricted": { "message": "Tài khoản bị hạn chế" @@ -1274,7 +1283,7 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "warningCapitalized": { - "message": "Warning", + "message": "Cảnh báo", "description": "Warning (should maintain locale-relevant capitalization)" }, "confirmVaultExport": { @@ -1284,7 +1293,7 @@ "message": "Bản 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 đã xuất thông qua phương thức rủi ro (như email). Vui lòng xóa nó ngay lập tức khi bạn đã sử dụng xong." }, "encExportKeyWarningDesc": { - "message": "Quá trình xuất này sẽ mã hóa dữ liệu của bạn bằng khóa mã hóa của tài khoản. Nếu bạn từng xoay khóa mã hóa tài khoản của mình, bạn nên xuất lại vì bạn sẽ không thể giải mã tập tin xuất này." + "message": "Quá trình xuất này sẽ mã hóa dữ liệu của bạn bằng khóa mã hóa của tài khoản. Nếu bạn từng thay đổi mã hóa tài khoản của mình, bạn nên xuất lại vì bạn sẽ không thể giải mã tập tin xuất này." }, "encExportAccountWarningDesc": { "message": "Khóa mã hóa tài khoản là duy nhất cho mỗi tài khoản Bitwarden, vì vậy bạn không thể nhập tệp xuất được mã hóa vào một tài khoản khác." @@ -1327,7 +1336,7 @@ "message": "Mã xác thực (TOTP)" }, "copyVerificationCode": { - "message": "Sao chép Mã xác thực" + "message": "Sao chép mã xác thực" }, "attachments": { "message": "Tệp đính kèm" @@ -1348,13 +1357,13 @@ "message": "Không có tệp đính kèm." }, "attachmentSaved": { - "message": "Tệp đính kèm đã được lưu." + "message": "Đã lưu tệp đính kèm" }, "file": { "message": "Tập tin" }, "fileToShare": { - "message": "File to share" + "message": "Tệp để chia sẻ" }, "selectFile": { "message": "Chọn tập tin" @@ -1366,13 +1375,13 @@ "message": "Tính năng không có sẵn" }, "legacyEncryptionUnsupported": { - "message": "Legacy encryption is no longer supported. Please contact support to recover your account." + "message": "Mã hóa cổ điển không còn được hỗ trợ. Vui lòng liên hệ bộ phận hỗ trợ để khôi phục tài khoản của bạn." }, "premiumMembership": { "message": "Thành viên Cao Cấp" }, "premiumManage": { - "message": "Quản lý Thành viên" + "message": "Quản lý thành viên" }, "premiumManageAlert": { "message": "Bạn có thể quản lí tư cách thành viên của mình trên trang web kho lưu trữ bitwarden.com. Bạn có muốn truy cập trang web ngay bây giờ không?" @@ -1381,22 +1390,22 @@ "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." + "message": "Bạn hiện không phải là thành viên Cao cấp." }, "premiumSignUpAndGet": { - "message": "Đăng ký làm thành viên cao cấp và nhận được:" + "message": "Đăng ký làm thành viên Cao cấp và nhận được:" }, "ppremiumSignUpStorage": { "message": "1GB bộ nhớ lưu trữ được mã hóa cho các tệp đính kèm." }, "premiumSignUpEmergency": { - "message": "Emergency access." + "message": "Truy cập khẩn cấp." }, "premiumSignUpTwoStepOptions": { "message": "Các tùy chọn xác minh hai bước như YubiKey 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." + "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 để bảo vệ kho dữ liệu của bạn." }, "ppremiumSignUpTotp": { "message": "Trình tạo mã xác nhận TOTP (2FA) để đăng nhập vào kho lưu trữ của bạn." @@ -1405,22 +1414,22 @@ "message": "Ưu tiên hỗ trợ khách hàng." }, "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!" + "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" }, "premiumPurchaseAlertV2": { - "message": "Bạn có thể mua gói Premium từ cài đặt tài khoản trên trang Bitwarden." + "message": "Bạn có thể mua gói Cao cấp từ cài đặt tài khoản trên kho web Bitwarden." }, "premiumCurrentMember": { - "message": "Bạn là một thành viên cao cấp!" + "message": "Bạn là một thành viên Cao cấp!" }, "premiumCurrentMemberThanks": { "message": "Cảm ơn bạn vì đã hỗ trợ Bitwarden." }, "premiumFeatures": { - "message": "Upgrade to Premium and receive:" + "message": "Nâng cấp lên Premium và nhận được:" }, "premiumPrice": { "message": "Tất cả chỉ với $PRICE$/năm!", @@ -1432,7 +1441,7 @@ } }, "premiumPriceV2": { - "message": "Tất cả chỉ với $PRICE$ /năm!", + "message": "Tất cả chỉ với $PRICE$/năm!", "placeholders": { "price": { "content": "$1", @@ -1447,22 +1456,22 @@ "message": "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." + "message": "Nếu tài khoản đăng nhập có khóa xác thực, mã xác minh TOTP sẽ được sao chép vào bộ nhớ tạm khi bạn tự động điền thông tin đăng nhập." }, "enableAutoBiometricsPrompt": { "message": "Yêu cầu sinh trắc học khi khởi chạy" }, "premiumRequired": { - "message": "Cần có tài khoản cao cấp" + "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." + "message": "Cần là thành viên Cao cấp để sử dụng tính năng này." }, "authenticationTimeout": { - "message": "Authentication timeout" + "message": "Thời gian chờ xác thực" }, "authenticationSessionTimedOut": { - "message": "The authentication session timed out. Please restart the login process." + "message": "Phiên xác thực đã hết thời gian chờ. Vui lòng đăng nhập lại từ đầu." }, "verificationCodeEmailSent": { "message": "Email xác minh đã được gửi tới $EMAIL$.", @@ -1474,53 +1483,53 @@ } }, "dontAskAgainOnThisDeviceFor30Days": { - "message": "Don't ask again on this device for 30 days" + "message": "Không yêu cầu lại trên thiết bị này trong vòng 30 ngày" }, "selectAnotherMethod": { - "message": "Select another method", + "message": "Chọn phương pháp khác", "description": "Select another two-step login method" }, "useYourRecoveryCode": { - "message": "Use your recovery code" + "message": "Sử dụng mã khôi phục của bạn" }, "insertU2f": { "message": "Lắp khóa bảo mật vào cổng USB máy tính của bạn. Nếu nó có một nút, hãy nhấn vào nó." }, "openInNewTab": { - "message": "Open in new tab" + "message": "Mở trong tab mới" }, "webAuthnAuthenticate": { "message": "Xác thực WebAuthn" }, "readSecurityKey": { - "message": "Read security key" + "message": "Đọc khóa bảo mật" }, "awaitingSecurityKeyInteraction": { - "message": "Awaiting security key interaction..." + "message": "Đang chờ tương tác với khóa bảo mật..." }, "loginUnavailable": { "message": "Đăng nhập không có sẵn" }, "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." + "message": "Tài khoản này đã kích hoạt đăng nhập 2 bước, tuy nhiên, trình duyệt này không hỗ trợ dịch vụ xác thực hai lớp đang sử dụng." }, "noTwoStepProviders2": { "message": "Hãy 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" + "message": "Tùy chọn đăng nhập 2 bước" }, "selectTwoStepLoginMethod": { - "message": "Select two-step login method" + "message": "Chọn phương pháp đăng nhập hai bước" }, "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." + "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ã khôi phục để tắt tất cả các phương pháp xác thực hai lớp trong tài khoản của bạn." }, "recoveryCodeTitle": { - "message": "Mã phục hồi" + "message": "Mã khôi phục" }, "authenticatorAppTitle": { - "message": "Ứng dụng Authenticator" + "message": "Ứng dụng xác thực" }, "authenticatorAppDescV2": { "message": "Nhập mã được tạo bởi ứng dụng xác thực như Bitwarden Authenticator.", @@ -1537,7 +1546,7 @@ "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.", + "message": "Xác minh với Duo Security cho tổ chức của bạn bằng ứng dụng Duo Mobile, tin nhắn SMS, cuộc gọi điện thoại hoặc khóa bảo mật U2F.", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "webAuthnTitle": { @@ -1556,13 +1565,13 @@ "message": "Môi trường tự lưu trữ" }, "selfHostedBaseUrlHint": { - "message": "Nhập địa chỉ cơ sở của bản cài đặt Bitwarden được lưu trữ tại máy chủ của bạn. Ví dụ: https://bitwarden.company.com" + "message": "Nhập URL cơ sở của cài đặt Bitwarden được lưu trữ trên máy chủ nội bộ của bạn. Ví dụ: https://bitwarden.company.com" }, "selfHostedCustomEnvHeader": { "message": "Đối với cấu hình nâng cao. Bạn có thể chỉ định địa chỉ cơ sở của mỗi dịch vụ một cách độc lập." }, "selfHostedEnvFormInvalid": { - "message": "Bạn phải thêm địa chỉ máy chủ cơ sở hoặc ít nhất một môi trường tùy chỉnh." + "message": "Bạn phải thêm URL máy chủ cơ sở hoặc ít nhất một môi trường tùy chỉnh." }, "customEnvironment": { "message": "Môi trường tùy chỉnh" @@ -1571,11 +1580,11 @@ "message": "URL máy chủ" }, "selfHostBaseUrl": { - "message": "Self-host server URL", + "message": "URL máy chủ tự lưu trữ", "description": "Label for field requesting a self-hosted integration service URL" }, "apiUrl": { - "message": "Địa chỉ API máy chủ" + "message": "Địa chỉ máy chủ API" }, "webVaultUrl": { "message": "URL máy chủ của trang web kho lưu trữ" @@ -1584,29 +1593,29 @@ "message": "URL máy chủ nhận dạng" }, "notificationsUrl": { - "message": "Notifications Server URL" + "message": "URL máy chủ thông báo" }, "iconsUrl": { - "message": "Biểu tượng địa chỉ máy chủ" + "message": "URL máy chủ biểu tượng" }, "environmentSaved": { - "message": "Địa chỉ môi trường đã được lưu." + "message": "Các URL môi trường đã được lưu" }, "showAutoFillMenuOnFormFields": { "message": "Hiển thị menu tự động điền trên các trường biểu mẫu", "description": "Represents the message for allowing the user to enable the autofill overlay" }, "autofillSuggestionsSectionTitle": { - "message": "Các gợi ý điền tự động" + "message": "Các gợi ý tự động điền" }, "autofillSpotlightTitle": { - "message": "Easily find autofill suggestions" + "message": "Dễ dàng tìm các gợi ý tự động điền" }, "autofillSpotlightDesc": { - "message": "Turn off your browser's autofill settings, so they don't conflict with Bitwarden." + "message": "Tắt cài đặt tự động điền của trình duyệt để tránh xung đột với Bitwarden." }, "turnOffBrowserAutofill": { - "message": "Turn off $BROWSER$ autofill", + "message": "Tắt tính năng tự động điền của $BROWSER$", "placeholders": { "browser": { "content": "$1", @@ -1615,16 +1624,16 @@ } }, "turnOffAutofill": { - "message": "Turn off autofill" + "message": "Tắt tự động điền" }, "showInlineMenuLabel": { "message": "Hiển thị các gợi ý tự động điền trên các trường biểu mẫu" }, "showInlineMenuIdentitiesLabel": { - "message": "Display identities as suggestions" + "message": "Hiển thị danh tính dưới dạng gợi ý" }, "showInlineMenuCardsLabel": { - "message": "Display cards as suggestions" + "message": "Hiển thị thẻ dưới dạng gợi ý" }, "showInlineMenuOnIconSelectionLabel": { "message": "Hiện gợi ý khi nhấp vào biểu tượng" @@ -1687,22 +1696,22 @@ "message": "Không tự động điền khi tải trang" }, "commandOpenPopup": { - "message": "Mở popup kho" + "message": "Mở cửa sổ popup kho" }, "commandOpenSidebar": { - "message": "Mở kho ở thanh bên" + "message": "Mở kho trong thanh bên" }, "commandAutofillLoginDesc": { - "message": "Autofill the last used login for the current website" + "message": "Tự động điền thông tin đăng nhập gần đây nhất cho trang web hiện tại" }, "commandAutofillCardDesc": { - "message": "Autofill the last used card for the current website" + "message": "Tự động điền thẻ đã sử dụng gần đây cho trang web hiện tại" }, "commandAutofillIdentityDesc": { - "message": "Autofill the last used identity for the current website" + "message": "Điền tự động danh tính đã sử dụng lần cuối 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 khay nhớ tạm" + "message": "Tạo và sao chép một mật khẩu ngẫu nhiên mới vào bảng nhớ tạm" }, "commandLockVaultDesc": { "message": "Khoá kho" @@ -1723,7 +1732,7 @@ "message": "Kéo để sắp xếp" }, "dragToReorder": { - "message": "Drag to reorder" + "message": "Kéo để sắp xếp lại" }, "cfTypeText": { "message": "Văn bản" @@ -1735,7 +1744,7 @@ "message": "Đúng/Sai" }, "cfTypeCheckbox": { - "message": "Ô tích chọn" + "message": "Hộp chọn" }, "cfTypeLinked": { "message": "Đã liên kết", @@ -1823,6 +1832,9 @@ "securityCode": { "message": "Mã bảo mật" }, + "cardNumber": { + "message": "số thẻ" + }, "ex": { "message": "Ví dụ:" }, @@ -1869,7 +1881,7 @@ "message": "Số hộ chiếu" }, "licenseNumber": { - "message": "Số giấy phép" + "message": "Số giấy phép lái xe" }, "email": { "message": "Email" @@ -1890,7 +1902,7 @@ "message": "Địa chỉ 3" }, "cityTown": { - "message": "Quận/Huyện/Thị trấn" + "message": "Xã / Phường" }, "stateProvince": { "message": "Tỉnh/Thành Phố" @@ -1920,10 +1932,10 @@ "message": "Danh tính" }, "typeSshKey": { - "message": "SSH key" + "message": "Khóa SSH" }, "typeNote": { - "message": "Note" + "message": "Ghi chú" }, "newItemHeader": { "message": "$TYPE$ mới", @@ -1956,13 +1968,13 @@ "message": "Lịch sử mật khẩu" }, "generatorHistory": { - "message": "Generator history" + "message": "Lịch sử trình tạo" }, "clearGeneratorHistoryTitle": { - "message": "Clear generator history" + "message": "Dọn dẹp lịch sử trình tạo" }, "cleargGeneratorHistoryDescription": { - "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?" + "message": "Nếu bạn tiếp tục, tất cả các mục sẽ bị xóa vĩnh viễn khỏi lịch sử của trình tạo. Bạn có chắc chắn muốn tiếp tục không?" }, "back": { "message": "Quay lại" @@ -2001,7 +2013,7 @@ "message": "Ghi chú bảo mật" }, "sshKeys": { - "message": "SSH Keys" + "message": "Khóa SSH" }, "clear": { "message": "Xoá", @@ -2020,14 +2032,14 @@ } }, "passwordSafe": { - "message": "Mật khẩu này không được tìm thấy trong bất kỳ báo cáo lộ lọt dữ liệu nào được biết đến. Bạn có thể tiếp tục sử dụng nó." + "message": "Không tìm thấy mật khẩu này trong các vụ rò rỉ dữ liệu trước đây. Nó an toàn để sử dụng." }, "baseDomain": { "message": "Tên miền cơ sở", "description": "Domain name. Ex. website.com" }, "baseDomainOptionRecommended": { - "message": "Base domain (recommended)", + "message": "Tên miền gốc (được khuyến nghị)", "description": "Domain name. Ex. website.com" }, "domainName": { @@ -2060,11 +2072,11 @@ "message": "Bật/tắt tùy chọn" }, "toggleCurrentUris": { - "message": "Bật/tắt URI hiện tại", + "message": "Bật/tắt đường dẫn 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", + "message": "Đường dẫn hiện tại", "description": "The URI of one of the current open tabs in the browser." }, "organization": { @@ -2084,10 +2096,10 @@ "message": "Xóa lịch sử" }, "nothingToShow": { - "message": "Nothing to show" + "message": "Không có gì để hiển thị" }, "nothingGeneratedRecently": { - "message": "You haven't generated anything recently" + "message": "Bạn chưa tạo gì gần đây" }, "remove": { "message": "Xoá" @@ -2104,17 +2116,17 @@ "description": "ex. Date this item was created" }, "datePasswordUpdated": { - "message": "Đã cập nhật mật khẩu", + "message": "Mật khẩu được cập nhật lần cuối", "description": "ex. Date this password was updated" }, "neverLockWarning": { "message": "Bạn có chắc chắn muốn chọn \"Không bao giờ\" không? Lựa chọn này sẽ lưu khóa mã hóa kho của bạn trực tiếp trên thiết bị. Hãy nhớ bảo vệ thiết bị của bạn thật cẩn thận nếu bạn chọn tùy chọn này." }, "noOrganizationsList": { - "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + "message": "Bạn chưa thuộc tổ chức nào. Tổ chức sẽ cho phép bạn chia sẻ các mục với người dùng khác một cách bảo mật." }, "noCollectionsInList": { - "message": "Không có bộ sưu tập nào để liệt kê." + "message": "Không có bộ sưu tập nào." }, "ownership": { "message": "Quyền sở hữu" @@ -2138,7 +2150,7 @@ "message": "Mật khẩu chính yếu" }, "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?" + "message": "Mật khẩu chính bạn vừa chọn hơi yếu. Bạn nên chọn mật khẩu chính mạnh(hoặc một cụm mật khẩu) để bảo vệ tài khoản Bitwarden của mình một cách an toàn. Bạn có thực sự muốn dùng mật khẩu chính này không?" }, "pin": { "message": "Mã PIN", @@ -2148,34 +2160,34 @@ "message": "Mở khóa bằng mã PIN" }, "setYourPinTitle": { - "message": "Set PIN" + "message": "Thiết lập mã PIN" }, "setYourPinButton": { - "message": "Set PIN" + "message": "Thiết lập 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." + "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 đăng xuất hoàn toàn khỏi ứng dụng." }, "setPinCode": { - "message": "You can use this PIN to unlock Bitwarden. Your PIN will be reset if you ever fully log out of the application." + "message": "Bạn có thể sử dụng mã PIN này để mở khóa Bitwarden. Mã PIN của bạn sẽ được đặt lại nếu bạn đăng xuất hoàn toàn khỏi ứng dụng." }, "pinRequired": { "message": "Mã PIN là bắt buộc." }, "invalidPin": { - "message": "Mã PIN không hợp lệ." + "message": "Mã PIN không chính xác." }, "tooManyInvalidPinEntryAttemptsLoggingOut": { - "message": "Mã PIN bị gõ sai quá nhiều lần. Đang đăng xuất." + "message": "Gõ sai mã PIN quá nhiều lần. Đang đăng xuất." }, "unlockWithBiometrics": { "message": "Mở khóa bằng sinh trắc học" }, "unlockWithMasterPassword": { - "message": "Unlock with master password" + "message": "Mở khóa bằng mật khẩu chính" }, "awaitDesktop": { - "message": "Đợi xác nhận từ máy tính" + "message": "Đang chờ 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." @@ -2184,7 +2196,7 @@ "message": "Khóa với mật khẩu chính khi trình duyệt khởi động lại" }, "lockWithMasterPassOnRestart1": { - "message": "Require master password on browser restart" + "message": "Yêu cầu nhập mật khẩu chính khi khởi động lại trình duyệt" }, "selectOneCollection": { "message": "Bạn phải chọn ít nhất một bộ sưu tập." @@ -2199,39 +2211,39 @@ "message": "Trình tạo mật khẩu" }, "usernameGenerator": { - "message": "Bộ tạo tên người dùng" + "message": "Trình tạo tên đăng nhập" }, "useThisEmail": { - "message": "Use this email" + "message": "Dùng email này" }, "useThisPassword": { - "message": "Use this password" + "message": "Dùng mật khẩu này" }, "useThisPassphrase": { - "message": "Use this passphrase" + "message": "Dùng cụm mật khẩu này" }, "useThisUsername": { - "message": "Use this username" + "message": "Dùng tên đăng nhập này" }, "securePasswordGenerated": { - "message": "Secure password generated! Don't forget to also update your password on the website." + "message": "Mật khẩu an toàn đã được tạo! Đừng quên cập nhật mật khẩu của bạn trên trang web." }, "useGeneratorHelpTextPartOne": { - "message": "Use the generator", + "message": "Sử dụng trình tạo", "description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'" }, "useGeneratorHelpTextPartTwo": { - "message": "to create a strong unique password", + "message": "để tạo một mật khẩu mạnh và duy nhất", "description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'" }, "vaultCustomization": { - "message": "Vault customization" + "message": "Tùy chỉnh kho" }, "vaultTimeoutAction": { - "message": "Hành động khi hết thời gian chờ của kho lưu trữ" + "message": "Hành động sau khi đóng kho" }, "vaultTimeoutAction1": { - "message": "Timeout action" + "message": "Hành động sau khi đóng kho" }, "lock": { "message": "Khóa", @@ -2242,7 +2254,7 @@ "description": "Noun: a special folder to hold deleted items" }, "searchTrash": { - "message": "Tìm kiếm thùng rác" + "message": "Tìm kiếm trong thùng rác" }, "permanentlyDeleteItem": { "message": "Xoá vĩnh viễn mục" @@ -2263,34 +2275,34 @@ "message": "Bạn đã có tài khoản?" }, "vaultTimeoutLogOutConfirmation": { - "message": "Đăng xuất sẽ xóa tất cả quyền truy cập vào kho của bạn và yêu cầu xác minh trực tuyến sau khi hết thời gian chờ. Bạn có chắc chắn muốn sử dụng cài đặt này không?" + "message": "Đăng xuất sẽ xóa toàn bộ quyền truy cập vào kho của bạn và yêu cầu xác minh lại sau khi đóng kho. Bạn có chắc chắn muốn sử dụng cài đặt này không?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Xác nhận hành động khi hết thời gian chờ" + "message": "Xác nhận hành động sau khi đóng kho" }, "autoFillAndSave": { - "message": "Tự động điền và Lưu" + "message": "Tự động điền và lưu" }, "fillAndSave": { "message": "Điền và lưu" }, "autoFillSuccessAndSavedUri": { - "message": "Đã tự động điền mục và lưu URI" + "message": "Đã tự động điền mục và lưu đường dẫn" }, "autoFillSuccess": { "message": "Đã tự động điền mục " }, "insecurePageWarning": { - "message": "Cảnh báo: Đây là một trang HTTP không an toàn, và mọi thông tin bạn nhập ở đây có khả năng được xem & thay đổi bởi người khác. Thông tin Đăng nhập này ban đầu được lưu ở một trang an toàn (HTTPS)." + "message": "Cảnh báo: Đây là một trang HTTP không an toàn, và mọi thông tin bạn nhập ở đây có thể bị người khác xem và thay đổi. Thông tin Đăng nhập này ban đầu được lưu ở một trang an toàn (HTTPS)." }, "insecurePageWarningFillPrompt": { "message": "Bạn vẫn muốn điền thông tin đăng nhập?" }, "autofillIframeWarning": { - "message": "Mẫu điền thông tin này được lưu tại một tên miền khác với URI lưu tại thông tin đăng nhập của bạn. Hãy chọn OK để tiếp tục tự động điền, hoặc Hủy bỏ để dừng lại." + "message": "Biểu mẫu này được lưu trữ trên một tên miền khác với đường dẫn của thông tin đăng nhập đã lưu của bạn. Chọn OK để tự động điền thông tin, hoặc Hủy bỏ để hủy." }, "autofillIframeWarningTip": { - "message": "Để chặn cảnh báo này trong tương lai, hãy lưu URI này, $HOSTNAME$, vào thông tin đăng nhập của bạn cho trang này ở Kho Bitwarden.", + "message": "Để tránh cảnh báo này trong tương lai, hãy lưu đường dẫn này, $HOSTNAME$, vào mục đăng nhập Bitwarden cho trang web này.", "placeholders": { "hostname": { "content": "$1", @@ -2332,16 +2344,16 @@ } }, "policyInEffectUppercase": { - "message": "Chứa chữ cái in hoa" + "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" + "message": "Có chứa một hay nhiều ký tự thường" }, "policyInEffectNumbers": { - "message": "Chứa một hoặc nhiều chữ số" + "message": "Có chứa một hay nhiều chữ số" }, "policyInEffectSpecial": { - "message": "Chứa ký tự đặc biệt $CHARS$", + "message": "Có chứa một hay nhiều ký tự đặc biệt sau $CHARS$", "placeholders": { "chars": { "content": "$1", @@ -2362,7 +2374,7 @@ "message": "bất cứ lúc nào." }, "byContinuingYouAgreeToThe": { - "message": "Nếu tiếp tục, bạn đồng ý" + "message": "Bằng cách tiếp tục, bạn đồng ý với" }, "and": { "message": "và" @@ -2371,25 +2383,25 @@ "message": "Bạn đồng ý với những điều sau khi nhấn chọn ô này:" }, "acceptPoliciesRequired": { - "message": "Điều khoản sử dụng và Chính sách quyền riêng tư chưa được đồng ý." + "message": "Bạn chưa đồng ý với Điều khoản Dịch vụ và Chính sách Bảo mật." }, "termsOfService": { - "message": "Điều khoản sử dụng" + "message": "Điều khoản dịch vụ" }, "privacyPolicy": { - "message": "Chính sách quyền riêng tư" + "message": "Chính sách bảo mật" }, "yourNewPasswordCannotBeTheSameAsYourCurrentPassword": { - "message": "Your new password cannot be the same as your current password." + "message": "Mật khẩu mới của bạn không thể giống với mật khẩu cũ." }, "hintEqualsPassword": { - "message": "Lời nhắc mật khẩu không được giống mật khẩu của bạn" + "message": "Gợi ý mật khẩu không được trùng với mật khẩu của bạn." }, "ok": { "message": "Ok" }, "errorRefreshingAccessToken": { - "message": "Lỗi làm mới khoá truy cập" + "message": "Lỗi cập nhật token truy cập" }, "errorRefreshingAccessTokenDesc": { "message": "Bạn có thể đã bị đăng xuất. Vui lòng đăng xuất và đăng nhập lại." @@ -2398,43 +2410,43 @@ "message": "Xác minh đồng bộ máy tính" }, "desktopIntegrationVerificationText": { - "message": "Vui lòng xác minh ứng dụng trên máy tính hiển thị cụm vân tay này: " + "message": "Vui lòng xác minh ứng dụng trên máy tính hiển thị cụm từ xác thực này: " }, "desktopIntegrationDisabledTitle": { - "message": "Tích hợp trình duyệt chưa được kích hoạt" + "message": "Tích hợp trình duyệt chưa được thiết lập" }, "desktopIntegrationDisabledDesc": { - "message": "Tích hợp trình duyệt không được thiết lập trong ứng dụng máy tính để bàn Bitwarden. Vui lòng thiết lập nó trong cài đặt trong ứng dụng máy tính để bàn." + "message": "Tính năng tích hợp trình duyệt chưa được thiết lập trong ứng dụng Bitwarden trên máy tính. Vui lòng thiết lập tính năng này trong phần cài đặt của ứng dụng trên máy tính." }, "startDesktopTitle": { "message": "Mở ứng dụng Bitwarden trên máy tính" }, "startDesktopDesc": { - "message": "Ứng dụng máy tính để bàn Bitwarden cần được khởi động trước khi có thể sử dụng tính năng mở khóa bằng sinh trắc học." + "message": "Ứng dụng Bitwarden trên máy tính cần được khởi động trước khi có thể sử dụng tính năng mở khóa bằng sinh trắc học." }, "errorEnableBiometricTitle": { - "message": "Không thể bật nhận dạng sinh trắc học" + "message": "Không thể thiết lập nhận dạng sinh trắc học" }, "errorEnableBiometricDesc": { - "message": "Hành động đã bị hủy bởi ứng dụng máy tính để bàn" + "message": "Hành động đã bị hủy bởi ứng dụng trên máy tính" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Ứng dụng máy tính để bàn đã vô hiệu hóa kênh liên lạc an toàn. Vui lòng thử lại thao tác này" + "message": "Ứng dụng trên máy tính đã vô hiệu hóa kênh liên lạc an toàn. Vui lòng thử lại thao tác này" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Giao tiếp máy tính để bàn bị gián đoạn" + "message": "Giao tiếp với ứng dụng trên máy tính bị gián đoạn" }, "nativeMessagingWrongUserDesc": { - "message": "Ứng dụng máy tính để bàn được đăng nhập vào một tài khoản khác. Hãy đảm bảo cả hai ứng dụng được đăng nhập vào cùng một tài khoản." + "message": "Ứng dụng trên máy tính đang đăng nhập vào một tài khoản khác. Hãy đảm bảo cả hai ứng dụng được đăng nhập vào cùng một tài khoản." }, "nativeMessagingWrongUserTitle": { - "message": "Tài khoản không đúng" + "message": "Không khớp tài khoản" }, "nativeMessagingWrongUserKeyTitle": { - "message": "Biometric key missmatch" + "message": "Khóa sinh trắc học không khớp" }, "nativeMessagingWrongUserKeyDesc": { - "message": "Biometric unlock failed. The biometric secret key failed to unlock the vault. Please try to set up biometrics again." + "message": "Mở khóa bằng sinh trắc học thất bại. Khóa sinh trắc học không thể mở khóa kho. Vui lòng thử thiết lập lại sinh trắc học." }, "biometricsNotEnabledTitle": { "message": "Sinh trắc học chưa được cài đặt" @@ -2455,31 +2467,31 @@ "message": "Vui lòng mở khóa người dùng này trong ứng dụng máy tính và thử lại." }, "biometricsNotAvailableTitle": { - "message": "Biometric unlock unavailable" + "message": "Mở khóa bằng sinh trắc học không khả dụng" }, "biometricsNotAvailableDesc": { - "message": "Biometric unlock is currently unavailable. Please try again later." + "message": "Mở khóa bằng sinh trắc học hiện không khả dụng. Vui lòng thử lại sau." }, "biometricsFailedTitle": { - "message": "Sinh trắc học không thành công" + "message": "Xác thực sinh trắc học thất bại" }, "biometricsFailedDesc": { - "message": "Không thể hoàn thành sinh trắc học, hãy cân nhắc sử dụng mật khẩu chính hoặc đăng xuất. Nếu sự cố vẫn tiếp diễn, vui lòng liên hệ bộ phận hỗ trợ của Bitwarden." + "message": "Không thể xác thực sinh trắc học, hãy cân nhắc sử dụng mật khẩu chính hoặc đăng xuất. Nếu sự cố vẫn tiếp diễn, vui lòng liên hệ bộ phận hỗ trợ của Bitwarden." }, "nativeMessaginPermissionErrorTitle": { - "message": "Quyền chưa được cấp" + "message": "Chưa được cấp quyền" }, "nativeMessaginPermissionErrorDesc": { - "message": "Nếu không được phép giao tiếp với Ứng dụng máy tính để bàn Bitwarden, chúng tôi không thể cung cấp sinh trắc học trong tiện ích mở rộng trình duyệt. Vui lòng thử lại." + "message": "Nếu không được phép giao tiếp với Ứng dụng Bitwarden trên máy tính, chúng tôi không thể cung cấp tính năng sinh trắc học trong tiện ích mở rộng trình duyệt. Vui lòng thử lại." }, "nativeMessaginPermissionSidebarTitle": { - "message": "Lỗi yêu cầu quyền" + "message": "Lỗi yêu cầu quyền truy cập" }, "nativeMessaginPermissionSidebarDesc": { "message": "Không thể thực hiện hành động này trong thanh bên, vui lòng thử lại hành động trong cửa sổ bật lên hoặc cửa sổ bật ra." }, "personalOwnershipSubmitError": { - "message": "Do Chính sách doanh nghiệp, bạn bị hạn chế lưu các mục vào kho tiền cá nhân của mình. Thay đổi tùy chọn Quyền sở hữu thành một tổ chức và chọn từ các bộ sưu tập có sẵn." + "message": "Do chính sách của doanh nghiệp, bạn không thể lưu trữ các mục vào kho cá nhân của mình. Hãy thay đổi tùy chọn Quyền sở hữu thành tổ chức và chọn từ các bộ sưu tập có sẵn." }, "personalOwnershipPolicyInEffect": { "message": "Chính sách của tổ chức đang ảnh hưởng đến các tùy chọn quyền sở hữu của bạn." @@ -2488,20 +2500,20 @@ "message": "Chính sách của tổ chức đã chặn việc nhập các mục vào kho cá nhân của bạn." }, "restrictCardTypeImport": { - "message": "Cannot import card item types" + "message": "Không thể nhập mục thẻ" }, "restrictCardTypeImportDesc": { - "message": "A policy set by 1 or more organizations prevents you from importing cards to your vaults." + "message": "Một chính sách được thiết lập bởi 1 hoặc nhiều tổ chức ngăn bạn nhập thẻ vào kho của mình." }, "domainsTitle": { "message": "Các tên miền", "description": "A category title describing the concept of web domains" }, "blockedDomains": { - "message": "Blocked domains" + "message": "Tên miền đã chặn" }, "learnMoreAboutBlockedDomains": { - "message": "Learn more about blocked domains" + "message": "Tìm hiểu thêm về các tên miền bị chặn" }, "excludedDomains": { "message": "Tên miền đã loại trừ" @@ -2510,26 +2522,26 @@ "message": "Bitwarden sẽ không yêu cầu lưu thông tin đăng nhập cho các miền này. Bạn phải làm mới trang để các thay đổi có hiệu lực." }, "excludedDomainsDescAlt": { - "message": "Bitwarden sẽ không yêu cầu lưu thông tin đăng nhập cho các miền này. Bạn phải làm mới trang để các thay đổi có hiệu lực." + "message": "Bitwarden sẽ không yêu cầu lưu thông tin đăng nhập cho các tên miền này đối với tất cả tài khoản đã đăng nhập. Bạn phải làm mới trang để các thay đổi có hiệu lực." }, "blockedDomainsDesc": { - "message": "Autofill and other related features will not be offered for these websites. You must refresh the page for changes to take effect." + "message": "Tự động điền và các tính năng liên quan khác sẽ không được cung cấp cho các trang web này. Bạn phải làm mới trang để các thay đổi có hiệu lực." }, "autofillBlockedNoticeV2": { - "message": "Autofill is blocked for this website." + "message": "Tự động điền bị chặn cho trang web này." }, "autofillBlockedNoticeGuidance": { - "message": "Change this in settings" + "message": "Thay đổi điều này trong cài đặt" }, "change": { - "message": "Change" + "message": "Thay đổi" }, "changePassword": { - "message": "Change password", + "message": "Thay đổi mật khẩu", "description": "Change password button for browser at risk notification on login." }, "changeButtonTitle": { - "message": "Change password - $ITEMNAME$", + "message": "Thay đổi mật khẩu - $ITEMNAME$", "placeholders": { "itemname": { "content": "$1", @@ -2538,13 +2550,13 @@ } }, "atRiskPassword": { - "message": "At-risk password" + "message": "Mật khẩu có rủi ro cao" }, "atRiskPasswords": { - "message": "At-risk passwords" + "message": "Mật khẩu có rủi ro cao" }, "atRiskPasswordDescSingleOrg": { - "message": "$ORGANIZATION$ is requesting you change one password because it is at-risk.", + "message": "$ORGANIZATION$ yêu cầu bạn thay đổi mật khẩu vì mật khẩu hiện tại đang gặp rủi ro.", "placeholders": { "organization": { "content": "$1", @@ -2553,7 +2565,7 @@ } }, "atRiskPasswordsDescSingleOrgPlural": { - "message": "$ORGANIZATION$ is requesting you change the $COUNT$ passwords because they are at-risk.", + "message": "$ORGANIZATION$ yêu cầu bạn thay đổi $COUNT$ mật khẩu vì chúng đang có rủi ro.", "placeholders": { "organization": { "content": "$1", @@ -2566,7 +2578,7 @@ } }, "atRiskPasswordsDescMultiOrgPlural": { - "message": "Your organizations are requesting you change the $COUNT$ passwords because they are at-risk.", + "message": "Các tổ chức của bạn đang yêu cầu bạn thay đổi $COUNT$ mật khẩu vì chúng đang có rủi ro.", "placeholders": { "count": { "content": "$1", @@ -2575,7 +2587,7 @@ } }, "atRiskChangePrompt": { - "message": "Your password for this site is at-risk. $ORGANIZATION$ has requested that you change it.", + "message": "Mật khẩu của bạn cho trang web này đang gặp rủi ro. $ORGANIZATION$ đã yêu cầu bạn thay đổi mật khẩu.", "placeholders": { "organization": { "content": "$1", @@ -2585,7 +2597,7 @@ "description": "Notification body when a login triggers an at-risk password change request and the change password domain is known." }, "atRiskNavigatePrompt": { - "message": "$ORGANIZATION$ wants you to change this password because it is at-risk. Navigate to your account settings to change the password.", + "message": "$ORGANIZATION$ yêu cầu bạn thay đổi mật khẩu này vì nó đang gặp rủi ro. Vui lòng truy cập vào cài đặt tài khoản của bạn để thay đổi mật khẩu.", "placeholders": { "organization": { "content": "$1", @@ -2595,10 +2607,10 @@ "description": "Notification body when a login triggers an at-risk password change request and no change password domain is provided." }, "reviewAndChangeAtRiskPassword": { - "message": "Review and change one at-risk password" + "message": "Kiểm tra và thay đổi một mật khẩu có rủi ro cao" }, "reviewAndChangeAtRiskPasswordsPlural": { - "message": "Review and change $COUNT$ at-risk passwords", + "message": "Kiểm tra và thay đổi $COUNT$ mật khẩu có rủi ro cao", "placeholders": { "count": { "content": "$1", @@ -2607,52 +2619,52 @@ } }, "changeAtRiskPasswordsFaster": { - "message": "Change at-risk passwords faster" + "message": "Thay đổi mật khẩu có rủi ro bị lộ nhanh hơn" }, "changeAtRiskPasswordsFasterDesc": { - "message": "Update your settings so you can quickly autofill your passwords and generate new ones" + "message": "Cập nhật cài đặt của bạn để bạn có thể tự động điền và tạo mật khẩu mới nhanh chóng" }, "reviewAtRiskLogins": { - "message": "Review at-risk logins" + "message": "Xem lại các lần đăng nhập có nguy cơ cao" }, "reviewAtRiskPasswords": { - "message": "Review at-risk passwords" + "message": "Xem lại các mật khẩu có rủi ro cao" }, "reviewAtRiskLoginsSlideDesc": { - "message": "Your organization passwords are at-risk because they are weak, reused, and/or exposed.", + "message": "Mật khẩu của tổ chức bạn đang gặp rủi ro vì độ mạnh yếu, được sử dụng lại và/hoặc bị lộ.", "description": "Description of the review at-risk login slide on the at-risk password page carousel" }, "reviewAtRiskLoginSlideImgAltPeriod": { - "message": "Illustration of a list of logins that are at-risk." + "message": "Minh họa danh sách các tài khoản đăng nhập có rủi ro." }, "generatePasswordSlideDesc": { - "message": "Quickly generate a strong, unique password with the Bitwarden autofill menu on the at-risk site.", + "message": "Tạo nhanh một mật khẩu mạnh, duy nhất bằng menu tự động điền của Bitwarden trên trang web có nguy cơ.", "description": "Description of the generate password slide on the at-risk password page carousel" }, "generatePasswordSlideImgAltPeriod": { - "message": "Illustration of the Bitwarden autofill menu displaying a generated password." + "message": "Minh họa menu tự điền mật khẩu của Bitwarden hiển thị một mật khẩu được tạo ra." }, "updateInBitwarden": { - "message": "Update in Bitwarden" + "message": "Cập nhật trong Bitwarden" }, "updateInBitwardenSlideDesc": { - "message": "Bitwarden will then prompt you to update the password in the password manager.", + "message": "Bitwarden sau đó sẽ yêu cầu bạn cập nhật mật khẩu trong trình quản lý mật khẩu.", "description": "Description of the update in Bitwarden slide on the at-risk password page carousel" }, "updateInBitwardenSlideImgAltPeriod": { - "message": "Illustration of a Bitwarden’s notification prompting the user to update the login." + "message": "Minh họa thông báo của Bitwarden yêu cầu người dùng cập nhật thông tin đăng nhập." }, "turnOnAutofill": { - "message": "Turn on autofill" + "message": "Bật tự động điền" }, "turnedOnAutofill": { - "message": "Turned on autofill" + "message": "Đã bật tự động điền" }, "dismiss": { - "message": "Dismiss" + "message": "Bỏ qua" }, "websiteItemLabel": { - "message": "Trang Web $number$ (URI)", + "message": "Trang web $number$ (URI)", "placeholders": { "number": { "content": "$1", @@ -2670,20 +2682,20 @@ } }, "blockedDomainsSavedSuccess": { - "message": "Blocked domain changes saved" + "message": "Đã lưu thay đổi tên miền bị chặn" }, "excludedDomainsSavedSuccess": { - "message": "Các thay đổi tên miền loại trừ đã được lưu" + "message": "Thay đổi tên miền bị loại trừ đã được lưu" }, "limitSendViews": { - "message": "Limit views" + "message": "Giới hạn số lượt xem" }, "limitSendViewsHint": { - "message": "No one can view this Send after the limit is reached.", + "message": "Không ai có thể xem mục Gửi này sau khi đạt đến giới hạn.", "description": "Displayed under the limit views field on Send" }, "limitSendViewsCount": { - "message": "$ACCESSCOUNT$ views left", + "message": "$ACCESSCOUNT$ lượt xem còn lại", "description": "Displayed under the limit views field on Send", "placeholders": { "accessCount": { @@ -2693,32 +2705,32 @@ } }, "send": { - "message": "Gửi", + "message": "Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDetails": { - "message": "Send details", + "message": "Chi tiết 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" }, "sendTypeTextToShare": { - "message": "Text to share" + "message": "Nội dung chia sẻ" }, "sendTypeFile": { "message": "Tập tin" }, "allSends": { - "message": "Tất cả mục Gửi", + "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", + "message": "Đã vượt số lần truy cập tối đa", "description": "This text will be displayed after a Send has been accessed the maximum amount of times." }, "hideTextByDefault": { - "message": "Hide text by default" + "message": "Mặc định ẩn văn bản" }, "expired": { "message": "Đã hết hạn" @@ -2730,7 +2742,7 @@ "message": "Sao chép liên kết" }, "copySendLink": { - "message": "Sao chép liên kết mục Gửi", + "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": { @@ -2743,11 +2755,11 @@ "message": "Đã xóa mật khẩu" }, "deletedSend": { - "message": "Đã xóa mục Gửi", + "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": "Liên kết Gửi", + "message": "Liên kết Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disabled": { @@ -2757,26 +2769,26 @@ "message": "Bạn có chắc chắn muốn xóa mật khẩu này không?" }, "deleteSend": { - "message": "Xóa mục Gửi", + "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 muốn mục Gửi này?", + "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." }, "deleteSendPermanentConfirmation": { - "message": "Are you sure you want to permanently delete this Send?", + "message": "Bạn có chắc chắn muốn xóa vĩnh viễn Send này không?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { - "message": "Sửa mục Gửi", + "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." }, "deletionDate": { "message": "Ngày xóa" }, "deletionDateDescV2": { - "message": "The Send will be permanently deleted on this date.", + "message": "Send sẽ được xóa vĩnh viễn vào ngày này.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { @@ -2798,11 +2810,11 @@ "message": "Tùy chỉnh" }, "sendPasswordDescV3": { - "message": "Add an optional password for recipients to access this Send.", + "message": "Thêm mật khẩu tùy chọn cho người nhận để có thể truy cập vào Send này.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createSend": { - "message": "Send mới", + "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." }, "newPassword": { @@ -2813,23 +2825,23 @@ "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 mục Gửi hiện có.", + "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 mục Gửi", + "message": "Đã tạo Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSendSuccessfully": { - "message": "Send created successfully!", + "message": "Đã tạo Send thành công!", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInHoursSingle": { - "message": "The Send will be available to anyone with the link for the next 1 hour.", + "message": "Send này sẽ được cung cấp cho bất kỳ ai có liên kết trong 1 giờ tới.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInHours": { - "message": "The Send will be available to anyone with the link for the next $HOURS$ hours.", + "message": "Send này sẽ được cung cấp cho bất kỳ ai có liên kết trong $HOURS$ giờ tới.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.", "placeholders": { "hours": { @@ -2839,11 +2851,11 @@ } }, "sendExpiresInDaysSingle": { - "message": "The Send will be available to anyone with the link for the next 1 day.", + "message": "Send này sẽ được cung cấp cho bất kỳ ai có liên kết trong 1 ngày tới.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendExpiresInDays": { - "message": "The Send will be available to anyone with the link for the next $DAYS$ days.", + "message": "Send này sẽ được cung cấp cho bất kỳ ai có liên kết trong $DAYS$ ngày tới.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.", "placeholders": { "days": { @@ -2853,32 +2865,32 @@ } }, "sendLinkCopied": { - "message": "Send link copied", + "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." }, "editedSend": { - "message": "Đã lưu mục Gửi", + "message": "Đã lưu Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendFilePopoutDialogText": { - "message": "Pop out extension?", + "message": "Mở rộng tiện ích ra cửa sổ mới?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendFilePopoutDialogDesc": { - "message": "To create a file Send, you need to pop out the extension to a new window.", + "message": "Để tạo Send tập tin, bạn cần mở phần mở rộng trong cửa sổ mới.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { - "message": "Để chọn tập tin, mở tiện ích mở rộng trong thanh bên (nếu có thể) hoặc mở ra cửa sổ mới bằng cách nhấp vào biểu ngữ này." + "message": "Để chọn tập tin, mở tiện ích mở rộng trong thanh bên (nếu có thể) hoặc mở cửa sổ mới bằng cách nhấp vào biểu ngữ này." }, "sendFirefoxFileWarning": { - "message": "Để chọn tập tin bằng Firefox, mở tiện ích mở rộng trong thanh bên hoặc mở ra cửa sổ mới bằng cách nhấp vào biểu ngữ này." + "message": "Để chọn tập tin bằng Firefox, mở tiện ích mở rộng trong thanh bên hoặc mở cửa sổ mới bằng cách nhấp vào biểu ngữ này." }, "sendSafariFileWarning": { - "message": "Để chọn tập tin bằng Safari, mở ra cửa sổ mới bằng cách nhấp vào biểu ngữ này." + "message": "Để chọn tập tin bằng Safari, mở cửa sổ mới bằng cách nhấp vào biểu ngữ này." }, "popOut": { - "message": "Pop out" + "message": "Mở rộng" }, "sendFileCalloutHeader": { "message": "Trước khi bạn bắt đầu" @@ -2899,10 +2911,10 @@ "message": "Đã xảy ra lỗi khi lưu ngày xoá và ngày hết hạn của bạn." }, "hideYourEmail": { - "message": "Hide your email address from viewers." + "message": "Ẩn địa chỉ email của bạn với người xem." }, "passwordPrompt": { - "message": "Nhắc lại mật khẩu chính" + "message": "Nhập lại mật khẩu chính" }, "passwordConfirmation": { "message": "Xác nhận mật khẩu chính" @@ -2911,13 +2923,16 @@ "message": "Hành động này được bảo vệ. Để tiếp tục, hãy nhập lại mật khẩu chính của bạn để xác minh danh tính." }, "emailVerificationRequired": { - "message": "Yêu cầu xác nhận danh tính qua email" + "message": "Yêu cầu xác minh danh tính qua email" }, "emailVerifiedV2": { "message": "Email đã xác minh" }, "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." + "message": "Bạn phải xác minh email để sử dụng tính năng này. Bạn có thể xác minh email trên web." + }, + "masterPasswordSuccessfullySet": { + "message": "Mật khẩu chính được thiết lập thành công" }, "updatedMasterPassword": { "message": "Đã cập nhật mật khẩu chính" @@ -2926,13 +2941,13 @@ "message": "Cập nhật mật khẩu chính" }, "updateMasterPasswordWarning": { - "message": "Mật khẩu chính của bạn gần đây đã được thay đổi bởi người quản trị trong tổ chức của bạn. Để truy cập kho, bạn phải cập nhật nó ngay bây giờ. Việc tiếp tục sẽ đăng xuất khỏi kho và bạn sẽ cần đăng nhập lại. Ứng dụng Bitwaden trên các thiết bị khác có thể tiếp tục hoạt động trong tối đa một giờ sau đó sẽ bị đăng xuất." + "message": "Mật khẩu chính của bạn gần đây đã được thay đổi bởi người quản trị trong tổ chức của bạn. Để truy cập kho, bạn phải cập nhật mật khẩu chính của mình ngay bây giờ. Việc tiếp tục sẽ đăng xuất khỏi kho và bạn sẽ cần đăng nhập lại. Ứng dụng Bitwaden trên các thiết bị khác có thể tiếp tục hoạt động trong tối đa một giờ sau đó sẽ bị đăng xuất." }, "updateWeakMasterPasswordWarning": { "message": "Mật khẩu chính của bạn không đáp ứng chính sách tổ chức của bạn. Để truy cập kho, bạn phải cập nhật mật khẩu chính của mình ngay bây giờ. Việc tiếp tục sẽ đăng xuất bạn khỏi phiên hiện tại và bắt buộc đăng nhập lại. Các phiên hoạt động trên các thiết bị khác có thể tiếp tục duy trì hoạt động trong tối đa một giờ." }, "tdeDisabledMasterPasswordRequired": { - "message": "Tổ chức của bạn đã vô hiệu hóa mã hóa bằng thiết bị đáng tin cậy. Vui lòng đặt mật khẩu chính để truy cập Kho của bạn." + "message": "Tổ chức của bạn đã vô hiệu hóa tính năng mã hóa thiết bị tin cậy. Vui lòng đặt mật khẩu chính để truy cập kho của bạn." }, "resetPasswordPolicyAutoEnroll": { "message": "Đăng ký tự động" @@ -2948,15 +2963,15 @@ "description": "Used as a message within the notification bar when no folders are found" }, "orgPermissionsUpdatedMustSetPassword": { - "message": "Quyền tổ chức của bạn đã được cập nhật, yêu cầu bạn đặt mật khẩu chính.", + "message": "Quyền truy cập của tổ chức bạn đã được cập nhật, yêu cầu bạn phải thiết lập mật khẩu chính.", "description": "Used as a card title description on the set password page to explain why the user is there" }, "orgRequiresYouToSetPassword": { - "message": "Tổ chức của bạn yêu cầu bạn đặt mật khẩu chính.", + "message": "Tổ chức của bạn yêu cầu bạn thiết lập mật khẩu chính.", "description": "Used as a card title description on the set password page to explain why the user is there" }, "cardMetrics": { - "message": "out of $TOTAL$", + "message": "trong tổng số $TOTAL$", "placeholders": { "total": { "content": "$1", @@ -2975,7 +2990,7 @@ "message": "Phút" }, "vaultTimeoutPolicyAffectingOptions": { - "message": "Enterprise policy requirements have been applied to your timeout options" + "message": "Các yêu cầu chính sách của doanh nghiệp đã được áp dụng cho các tùy chọn thời gian mở kho của bạn" }, "vaultTimeoutPolicyInEffect": { "message": "Tổ chức của bạn đã đặt thời gian mở kho tối đa là $HOURS$ giờ và $MINUTES$ phút.", @@ -2991,7 +3006,7 @@ } }, "vaultTimeoutPolicyInEffect1": { - "message": "$HOURS$ hour(s) and $MINUTES$ minute(s) maximum.", + "message": "Tối đa $HOURS$ giờ và $MINUTES$ phút.", "placeholders": { "hours": { "content": "$1", @@ -3004,7 +3019,7 @@ } }, "vaultTimeoutPolicyMaximumError": { - "message": "Timeout exceeds the restriction set by your organization: $HOURS$ hour(s) and $MINUTES$ minute(s) maximum", + "message": "Thời gian mở kho đã vượt quá giới hạn do tổ chức của bạn đặt ra: Tối đa $HOURS$ giờ và $MINUTES$ phút", "placeholders": { "hours": { "content": "$1", @@ -3017,7 +3032,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "Tổ chức của bạn đang ảnh hưởng đến thời gian mở kho. Thời gian mở kho tối đa là $HOURS$ giờ và $MINUTES$ phút. Kho sẽ $ACTION$ sau khi hết thời gian mở kho.", + "message": "Các chính sách của tổ chức bạn đang ảnh hưởng đến thời gian mở kho. Thời gian mở kho tối đa được phép là $HOURS$ giờ và $MINUTES$ phút. Kho sẽ $ACTION$ sau khi đóng kho.", "placeholders": { "hours": { "content": "$1", @@ -3034,7 +3049,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "Tổ chức của bạn sẽ $ACTION$ sau khi hết thời gian mở kho.", + "message": "Tổ chức bạn đã thiết lập hành động sau khi đóng kho là $ACTION$.", "placeholders": { "action": { "content": "$1", @@ -3046,25 +3061,25 @@ "message": "Thời gian mở kho vượt quá giới hạn do tổ chức của bạn đặt ra." }, "vaultExportDisabled": { - "message": "Xuất kho không có sẵn" + "message": "Chức năng xuất kho không khả dụng" }, "personalVaultExportPolicyInEffect": { "message": "Các chính sách của tổ chức ngăn cản bạn xuất kho lưu trữ cá nhân của mình." }, "copyCustomFieldNameInvalidElement": { - "message": "Không thể xác định được phần tử biểu mẫu hợp lệ. Thay vào đó hãy thử kiểm tra trong HTML." + "message": "Không thể xác định được phần tử biểu mẫu hợp lệ. Thay vào đó hãy thử kiểm tra mã HTML." }, "copyCustomFieldNameNotUnique": { "message": "Không tìm thấy danh tính duy nhất." }, "removeMasterPasswordForOrganizationUserKeyConnector": { - "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator." + "message": "Mật khẩu chính không còn được yêu cầu đối với các thành viên của tổ chức sau đây. Vui lòng xác nhận tên miền bên dưới với quản trị viên của tổ chức." }, "organizationName": { - "message": "Organization name" + "message": "Tên tổ chức" }, "keyConnectorDomain": { - "message": "Key Connector domain" + "message": "Tên miền Key Connector" }, "leaveOrganization": { "message": "Rời tổ chức" @@ -3091,7 +3106,7 @@ "message": "Đang xuất dữ liệu kho cá nhân" }, "exportingIndividualVaultDescription": { - "message": "Chỉ dữ liệu trong kho cá nhân liên kết với $EMAIL$ mới được xuất. Không bao gồm \ncác dữ liệu trong kho tổ chức. Chỉ thông tin mục kho mới được xuất, sẽ không có các tệp đính kèm.", + "message": "Chỉ dữ liệu trong kho cá nhân liên kết với $EMAIL$ mới được xuất. Không bao gồm các dữ liệu trong kho tổ chức. Chỉ thông tin về các mục trong kho mới được xuất, sẽ không có các tệp đính kèm.", "placeholders": { "email": { "content": "$1", @@ -3100,7 +3115,7 @@ } }, "exportingIndividualVaultWithAttachmentsDescription": { - "message": "Only the individual vault items including attachments associated with $EMAIL$ will be exported. Organization vault items will not be included", + "message": "Chỉ các mục kho lưu trữ cá nhân bao gồm các tệp đính kèm liên quan đến $EMAIL$ sẽ được xuất. Các mục trong kho lưu trữ của tổ chức sẽ không được bao gồm", "placeholders": { "email": { "content": "$1", @@ -3124,27 +3139,27 @@ "message": "Lỗi" }, "decryptionError": { - "message": "Decryption error" + "message": "Lỗi giải mã" }, "couldNotDecryptVaultItemsBelow": { - "message": "Bitwarden could not decrypt the vault item(s) listed below." + "message": "Bitwarden không thể giải mã các mục trong kho lưu trữ được liệt kê bên dưới." }, "contactCSToAvoidDataLossPart1": { - "message": "Contact customer success", + "message": "Liên hệ hỗ trợ khách hàng thành công", "description": "This is part of a larger sentence. The full sentence will read 'Contact customer success to avoid additional data loss.'" }, "contactCSToAvoidDataLossPart2": { - "message": "to avoid additional data loss.", + "message": "để tránh mất mát thêm dữ liệu.", "description": "This is part of a larger sentence. The full sentence will read 'Contact customer success to avoid additional data loss.'" }, "generateUsername": { - "message": "Tạo tên người dùng" + "message": "Tạo tên đăng nhập" }, "generateEmail": { - "message": "Generate email" + "message": "Tạo email" }, "spinboxBoundariesHint": { - "message": "Value must be between $MIN$ and $MAX$.", + "message": "Giá trị phải nằm trong khoảng từ $MIN$ đến $MAX$.", "description": "Explains spin box minimum and maximum values to the user", "placeholders": { "min": { @@ -3158,7 +3173,7 @@ } }, "passwordLengthRecommendationHint": { - "message": " Use $RECOMMENDED$ characters or more to generate a strong password.", + "message": " Sử dụng ít nhất $RECOMMENDED$ ký tự để tạo một mật khẩu mạnh.", "description": "Appended to `spinboxBoundariesHint` to recommend a length to the user. This must include any language-specific 'sentence' separator characters (e.g. a space in english).", "placeholders": { "recommended": { @@ -3168,7 +3183,7 @@ } }, "passphraseNumWordsRecommendationHint": { - "message": " Use $RECOMMENDED$ words or more to generate a strong passphrase.", + "message": " Sử dụng ít nhất $RECOMMENDED$ từ để tạo cụm mật khẩu mạnh.", "description": "Appended to `spinboxBoundariesHint` to recommend a number of words to the user. This must include any language-specific 'sentence' separator characters (e.g. a space in english).", "placeholders": { "recommended": { @@ -3182,10 +3197,10 @@ "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { - "message": "Sử dụng khả năng địa chỉ phụ của nhà cung cấp dịch vụ mail của bạn." + "message": "Sử dụng tính năng địa chỉ phụ của nhà cung cấp dịch vụ email của bạn." }, "catchallEmail": { - "message": "Email Catch-all" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Sử dụng hộp thư bạn đã thiết lập để nhận tất cả email gửi đến tên miền của bạn." @@ -3203,17 +3218,17 @@ "message": "Dịch vụ" }, "forwardedEmail": { - "message": "Đã chuyển tiếp bí danh email" + "message": "Địa chỉ email thay thế" }, "forwardedEmailDesc": { - "message": "Tạo bí danh email với dịch vụ chuyển tiếp bên ngoài." + "message": "Tạo một địa chỉ email ảo bằng dịch vụ chuyển tiếp email bên ngoài." }, "forwarderDomainName": { - "message": "Email domain", + "message": "Tên miền email", "description": "Labels the domain name email forwarder service option" }, "forwarderDomainNameHint": { - "message": "Choose a domain that is supported by the selected service", + "message": "Chọn một tên miền được hỗ trợ bởi dịch vụ đã chọn", "description": "Guidance provided for email forwarding services that support multiple email domains." }, "forwarderError": { @@ -3255,7 +3270,7 @@ } }, "forwaderInvalidTokenWithMessage": { - "message": "Khoá API $SERVICENAME$ không hợp lệ: $ERRORMESSAGE$", + "message": "Token API $SERVICENAME$ không hợp lệ: $ERRORMESSAGE$", "description": "Displayed when the user's API token is rejected by the forwarding service with an error message.", "placeholders": { "servicename": { @@ -3269,7 +3284,7 @@ } }, "forwaderInvalidOperation": { - "message": "$SERVICENAME$ refused your request. Please contact your service provider for assistance.", + "message": "$SERVICENAME$ đã từ chối yêu cầu của bạn. Vui lòng liên hệ với nhà cung cấp dịch vụ của bạn để được hỗ trợ.", "description": "Displayed when the user is forbidden from using the API by the forwarding service.", "placeholders": { "servicename": { @@ -3279,7 +3294,7 @@ } }, "forwaderInvalidOperationWithMessage": { - "message": "$SERVICENAME$ refused your request: $ERRORMESSAGE$", + "message": "$SERVICENAME$ đã từ chối yêu cầu của bạn: $ERRORMESSAGE$", "description": "Displayed when the user is forbidden from using the API by the forwarding service with an error message.", "placeholders": { "servicename": { @@ -3293,7 +3308,7 @@ } }, "forwarderNoAccountId": { - "message": "Không thể lấy ID tài khoản email ẩn từ $SERVICENAME$.", + "message": "Không thể lấy ID tài khoản email ẩn danh của $SERVICENAME$.", "description": "Displayed when the forwarding service fails to return an account ID.", "placeholders": { "servicename": { @@ -3353,10 +3368,10 @@ "message": "Khóa API" }, "ssoKeyConnectorError": { - "message": "Lỗi kết nối khóa: hãy đảm bảo kết nối khóa khả dụng và hoạt động chính xác." + "message": "Lỗi kết nối khóa: hãy đảm bảo kết nối khóa khả dụng và hoạt động bình thường." }, "premiumSubcriptionRequired": { - "message": "Yêu cầu đăng ký gói Premium" + "message": "Yêu cầu đăng ký gói Cao cấp" }, "organizationIsDisabled": { "message": "Tổ chức đã ngưng hoạt động." @@ -3383,7 +3398,7 @@ "message": "Bên thứ ba" }, "thirdPartyServerMessage": { - "message": "Bạn đang kết nối đến máy chủ $SERVERNAME$ của bên thứ ba. Vui lòng kiểm tra lỗi bằng cách sử dụng máy chủ chính thức hoặc báo lỗi cho bên thứ ba.", + "message": "Kết nối với máy chủ của bên thứ ba, $SERVERNAME$. Vui lòng kiểm tra lỗi trên máy chủ chính thức hoặc báo cáo lỗi cho máy chủ của bên thứ ba.", "placeholders": { "servername": { "content": "$1", @@ -3413,43 +3428,68 @@ "message": "Đăng nhập bằng thiết bị" }, "fingerprintPhraseHeader": { - "message": "Cụm vân tay" + "message": "Cụm từ xác thực" }, "fingerprintMatchInfo": { - "message": "Vui lòng đảm bảo rằng bạn đã mở khoá kho và cụm vân tay khớp trên thiết bị khác." + "message": "Vui lòng đảm bảo rằng bạn đã mở khoá kho và cụm từ xác thực khớp với thiết bị khác." }, "resendNotification": { "message": "Gửi lại thông báo" }, "viewAllLogInOptions": { - "message": "View all log in options" + "message": "Xem tất cả tùy chọn đăng nhập" }, "notificationSentDevice": { "message": "Một thông báo đã được gửi đến thiết bị của bạn." }, "notificationSentDevicePart1": { - "message": "Unlock Bitwarden on your device or on the" + "message": "Mở khóa Bitwarden trên thiết bị của bạn hoặc trên" }, "notificationSentDeviceAnchor": { - "message": "web app" + "message": "ứng dụng web" }, "notificationSentDevicePart2": { - "message": "Make sure the Fingerprint phrase matches the one below before approving." + "message": "Hãy đảm bảo rằng cụm từ xác thực khớp với cụm từ bên dưới trước khi phê duyệt." }, "aNotificationWasSentToYourDevice": { - "message": "A notification was sent to your device" + "message": "Một thông báo đã được gửi đến thiết bị của bạn" }, "youWillBeNotifiedOnceTheRequestIsApproved": { - "message": "You will be notified once the request is approved" + "message": "Bạn sẽ nhận được thông báo ngay sau khi yêu cầu được phê duyệt" }, "needAnotherOptionV1": { - "message": "Need another option?" + "message": "Cần một tùy chọn khác?" }, "loginInitiated": { "message": "Bắt đầu đăng nhập" }, "logInRequestSent": { - "message": "Request sent" + "message": "Đã gửi yêu cầu" + }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Đã phê duyệt yêu cầu đăng nhập cho $EMAIL$ trên $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "Bạn đã từ chối một lần đăng nhập từ thiết bị khác. Nếu đó là bạn, hãy thử đăng nhập lại bằng thiết bị đó." + }, + "device": { + "message": "Thiết bị" + }, + "loginStatus": { + "message": "Trạng thái đăng nhập" + }, + "masterPasswordChanged": { + "message": "Đã lưu mật khẩu chính" }, "exposedMasterPassword": { "message": "Mật khẩu chính bị lộ" @@ -3458,19 +3498,19 @@ "message": "Mật khẩu này đã bị rò rỉ trong một vụ tấn công dữ liệu. Dùng mật khẩu mới và an toàn để bảo vệ tài khoản bạn. Bạn có chắc muốn sử dụng mật khẩu đã bị rò rỉ?" }, "weakAndExposedMasterPassword": { - "message": "Mật khẩu chính yếu và bị lộ" + "message": "Mật khẩu chính yếu và đã bị lộ" }, "weakAndBreachedMasterPasswordDesc": { - "message": "Mật khẩu yếu này đã bị rò rỉ trong một vụ tấn công dữ liệu. Dùng mật khẩu mới và an toàn để bảo vệ tài khoản bạn. Bạn có chắc muốn sử dụng mật khẩu đã bị rò rỉ?" + "message": "Mật khẩu yếu này đã bị rò rỉ trong một vụ tấn công dữ liệu. Hãy dùng mật khẩu mạnh và duy nhất để bảo vệ tài khoản của bạn. Bạn có chắc muốn sử dụng mật khẩu đã bị rò rỉ?" }, "checkForBreaches": { - "message": "Kiểm tra mật khẩu có lộ trong các vụ rò rỉ dữ liệu hay không" + "message": "Kiểm tra mật khẩu có bị lộ trong các vụ rò rỉ dữ liệu hay không" }, "important": { "message": "Quan trọng:" }, "masterPasswordHint": { - "message": "Mật khẩu chính của bạn không thể phục hồi nếu bạn quên nó!" + "message": "Mật khẩu chính của bạn không thể khôi phục nếu bạn quên nó!" }, "characterMinimum": { "message": "$LENGTH$ ký tự tối thiểu", @@ -3482,7 +3522,7 @@ } }, "autofillPageLoadPolicyActivated": { - "message": "Chính sách quản lí của bạn đã bật chức năng tự động điền khi tải trang." + "message": "Chính sách của tổ chức bạn đã kích hoạt tính năng tự động điền khi tải trang." }, "howToAutofill": { "message": "Cách tự đồng điền" @@ -3512,16 +3552,16 @@ "message": "Thay đổi phím tắt" }, "autofillKeyboardManagerShortcutsLabel": { - "message": "Quản lý các lối tắt" + "message": "Quản lý các phím tắt" }, "autofillShortcut": { "message": "Phím tắt tự động điền" }, "autofillLoginShortcutNotSet": { - "message": "The autofill login shortcut is not set. Change this in the browser's settings." + "message": "Chưa cài đặt phím tắt cho chức năng tự động điền. Vui lòng thay đổi trong cài đặt của trình duyệt." }, "autofillLoginShortcutText": { - "message": "The autofill login shortcut is $COMMAND$. Manage all shortcuts in the browser's settings.", + "message": "Phím tắt đăng nhập tự động là $COMMAND$. Quản lý các phím tắt trong cài đặt của trình duyệt.", "placeholders": { "command": { "content": "$1", @@ -3542,16 +3582,123 @@ "message": "Mở trong cửa sổ mới" }, "rememberThisDeviceToMakeFutureLoginsSeamless": { - "message": "Remember this device to make future logins seamless" + "message": "Nhớ thiết bị này để đăng nhập dễ dàng trong tương lai" + }, + "manageDevices": { + "message": "Quản lý thiết bị" + }, + "currentSession": { + "message": "Phiên hiện tại" + }, + "mobile": { + "message": "Di động", + "description": "Mobile app" + }, + "extension": { + "message": "Tiện ích mở rộng", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Máy tính", + "description": "Desktop app" + }, + "webVault": { + "message": "Kho web" + }, + "webApp": { + "message": "Ứng dụng web" + }, + "cli": { + "message": "Giao diện dòng lệnh (CLI)" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Yêu cầu đang chờ xử lý" + }, + "firstLogin": { + "message": "Đăng nhập lần đầu" + }, + "trusted": { + "message": "Tin tưởng" + }, + "needsApproval": { + "message": "Cần phê duyệt" + }, + "devices": { + "message": "Thiết bị" + }, + "accessAttemptBy": { + "message": "Cố gắng truy cập bởi $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Xác nhận truy cập" + }, + "denyAccess": { + "message": "Từ chối truy cập" + }, + "time": { + "message": "Thời gian" + }, + "deviceType": { + "message": "Loại thiết bị" + }, + "loginRequest": { + "message": "Yêu cầu đăng nhập" + }, + "thisRequestIsNoLongerValid": { + "message": "Yêu cầu này không còn hiệu lực." + }, + "areYouTryingToAccessYourAccount": { + "message": "Bạn đang cố gắng truy cập tài khoản của mình?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Đã xác nhận đăng nhập cho $EMAIL$ trên $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "Bạn đã từ chối một lần đăng nhập từ thiết bị khác. Nếu thực sự là bạn, hãy thử đăng nhập lại bằng thiết bị đó." + }, + "loginRequestHasAlreadyExpired": { + "message": "Yêu cầu đăng nhập đã hết hạn." + }, + "justNow": { + "message": "Vừa xong" + }, + "requestedXMinutesAgo": { + "message": "Đã yêu cầu $MINUTES$ phút trước", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } }, "deviceApprovalRequired": { "message": "Yêu cầu phê duyệt thiết bị. Chọn một tuỳ chọn phê duyệt bên dưới:" }, "deviceApprovalRequiredV2": { - "message": "Device approval required" + "message": "Yêu cầu phê duyệt trên thiết bị" }, "selectAnApprovalOptionBelow": { - "message": "Select an approval option below" + "message": "Chọn một tùy chọn phê duyệt dưới đây" }, "rememberThisDevice": { "message": "Lưu thiết bị này" @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "Yêu cầu quản trị viên phê duyệt" }, + "unableToCompleteLogin": { + "message": "Không thể hoàn tất quá trình đăng nhập" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "Bạn cần đăng nhập trên một thiết bị đáng tin cậy hoặc yêu cầu quản trị viên cấp cho bạn mật khẩu." + }, "ssoIdentifierRequired": { "message": "Cần có mã định danh SSO của tổ chức." }, @@ -3575,13 +3728,13 @@ "message": "Kiểm tra email của bạn" }, "followTheLinkInTheEmailSentTo": { - "message": "Nhấp vào liên kết trong email được gửi đến" + "message": "Nhấp vào liên kết được gửi đến trong email" }, "andContinueCreatingYourAccount": { "message": "và tiếp tục tạo tài khoản của bạn." }, "noEmail": { - "message": "Không có email?" + "message": "Không nhận được email?" }, "goBack": { "message": "Quay lại" @@ -3615,47 +3768,47 @@ "message": "Không thể đăng nhập?" }, "loginApproved": { - "message": "Lượt đăng nhập đã duyệt" + "message": "Lượt đăng nhập đã phê duyệt" }, "userEmailMissing": { "message": "Thiếu email người dùng" }, "activeUserEmailNotFoundLoggingYouOut": { - "message": "Active user email not found. Logging you out." + "message": "Email người dùng đang hoạt động không được tìm thấy. Bạn đang bị đăng xuất." }, "deviceTrusted": { "message": "Thiết bị tin cậy" }, "trustOrganization": { - "message": "Trust organization" + "message": "Tin tưởng tổ chức" }, "trust": { - "message": "Trust" + "message": "Tin tưởng" }, "doNotTrust": { - "message": "Do not trust" + "message": "Không tin tưởng" }, "organizationNotTrusted": { - "message": "Organization is not trusted" + "message": "Tổ chức không được tin cậy" }, "emergencyAccessTrustWarning": { - "message": "For the security of your account, only confirm if you have granted emergency access to this user and their fingerprint matches what is displayed in their account" + "message": "Để đảm bảo an toàn tài khoản của bạn, chỉ xác nhận nếu bạn đã cấp quyền truy cập khẩn cấp cho người dùng này và cụm từ nhận dạng của họ khớp với những gì hiển thị trong tài khoản của họ" }, "orgTrustWarning": { - "message": "For the security of your account, only proceed if you are a member of this organization, have account recovery enabled, and the fingerprint displayed below matches the organization's fingerprint." + "message": "Để đảm bảo an toàn cho tài khoản của bạn, vui lòng chỉ tiếp tục nếu bạn là thành viên của tổ chức này, đã kích hoạt tính năng khôi phục tài khoản và cụm từ nhận dạng hiển thị bên dưới trùng khớp với cụm từ nhận dạng của tổ chức." }, "orgTrustWarning1": { - "message": "This organization has an Enterprise policy that will enroll you in account recovery. Enrollment will allow organization administrators to change your password. Only proceed if you recognize this organization and the fingerprint phrase displayed below matches the organization's fingerprint." + "message": "Tổ chức này có chính sách doanh nghiệp sẽ đăng ký bạn vào quy trình khôi phục tài khoản. Việc đăng ký sẽ cho phép các quản trị viên của tổ chức thay đổi mật khẩu của bạn. Chỉ tiếp tục nếu bạn nhận ra tổ chức này và cụm từ xác thực hiển thị bên dưới khớp với cụm từ xác thực của tổ chức." }, "trustUser": { - "message": "Trust user" + "message": "Người dùng tin cậy" }, "sendsTitleNoItems": { - "message": "Send sensitive information safely", + "message": "Gửi thông tin nhạy cảm một cách an toàn", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendsBodyNoItems": { - "message": "Share files and data securely with anyone, on any platform. Your information will remain end-to-end encrypted while limiting exposure.", + "message": "Chia sẻ tệp tin và dữ liệu một cách an toàn với bất kỳ ai, trên bất kỳ nền tảng nào. Thông tin của bạn sẽ được mã hóa đầu cuối để hạn chế rủi ro bị lộ.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "inputRequired": { @@ -3668,7 +3821,7 @@ "message": "Tìm kiếm" }, "inputMinLength": { - "message": "Giá trị nhập vào phải ít nhất $COUNT$ ký tự.", + "message": "Dữ liệu nhập vào phải có độ dài ít nhất $COUNT$ ký tự.", "placeholders": { "count": { "content": "$1", @@ -3677,7 +3830,7 @@ } }, "inputMaxLength": { - "message": "Giá trị nhập vào không được vượt quá $COUNT$ ký tự.", + "message": "Độ dài của dữ liệu nhập vào không được vượt quá $COUNT$ ký tự.", "placeholders": { "count": { "content": "$1", @@ -3695,7 +3848,7 @@ } }, "inputMinValue": { - "message": "Giá trị nhập vào phải ít nhất $MIN$.", + "message": "Dữ liệu nhập vào phải ít nhất là $MIN$.", "placeholders": { "min": { "content": "$1", @@ -3704,7 +3857,7 @@ } }, "inputMaxValue": { - "message": "Giá trị nhập vào không được vượt quá $MAX$.", + "message": "Dữ liệu nhập vào không được vượt quá $MAX$.", "placeholders": { "max": { "content": "$1", @@ -3716,14 +3869,14 @@ "message": "Có ít nhất 1 địa chỉ email không hợp lệ" }, "inputTrimValidator": { - "message": "Giá trị nhập vào không được chỉ có khoảng trắng.", + "message": "Dữ liệu nhập vào không được chỉ chứa khoảng trắng.", "description": "Notification to inform the user that a form's input can't contain only whitespace." }, "inputEmail": { - "message": "Giá trị nhập vào không phải là địa chỉ email." + "message": "Dữ liệu nhập vào không phải là địa chỉ email." }, "fieldsNeedAttention": { - "message": "Có $COUNT$ trường cần bạn xem xét ở trên.", + "message": "$COUNT$ trường ở trên cần bạn chú ý.", "placeholders": { "count": { "content": "$1", @@ -3732,10 +3885,10 @@ } }, "singleFieldNeedsAttention": { - "message": "1 field needs your attention." + "message": "1 trường cần bạn chú ý." }, "multipleFieldsNeedAttention": { - "message": "$COUNT$ fields need your attention.", + "message": "$COUNT$ trường bạn cần chú ý.", "placeholders": { "count": { "content": "$1", @@ -3747,7 +3900,7 @@ "message": "-- Chọn --" }, "multiSelectPlaceholder": { - "message": "-- Nhập để lọc --" + "message": "-- Nhập từ khóa để lọc --" }, "multiSelectLoading": { "message": "Đang tải các tuỳ chọn..." @@ -3778,7 +3931,7 @@ "message": "Tên miền thay thế" }, "passwordRepromptDisabledAutofillOnPageLoad": { - "message": "Các mục yêu cầu nhập lại mật khẩu chính không thể tự động điền khi tải trang. Tự động điền khi tải trang đã tắt.", + "message": "Các mục yêu cầu nhập lại mật khẩu chính không thể được tự động điền khi tải trang. Tự động điền khi tải trang đã bị tắt.", "description": "Toast message for describing that master password re-prompt cannot be autofilled on page load." }, "autofillOnPageLoadSetToDefault": { @@ -3793,7 +3946,7 @@ "message": "Ẩn/hiện thanh điều hướng bên" }, "skipToContent": { - "message": "Chuyển đến nội dung" + "message": "Bỏ qua nội dung" }, "bitwardenOverlayButton": { "message": "Nút menu tự động điền Bitwarden", @@ -3812,7 +3965,7 @@ "description": "Text to display in overlay when the account is locked." }, "unlockYourAccountToViewAutofillSuggestions": { - "message": "Unlock your account to view autofill suggestions", + "message": "Mở khóa tài khoản của bạn để xem các đề xuất tự động điền", "description": "Text to display in overlay when the account is locked." }, "unlockAccount": { @@ -3820,15 +3973,15 @@ "description": "Button text to display in overlay when the account is locked." }, "unlockAccountAria": { - "message": "Unlock your account, opens in a new window", + "message": "Mở khóa tài khoản của bạn, mở trong cửa sổ mới", "description": "Screen reader text (aria-label) for unlock account button in overlay" }, "totpCodeAria": { - "message": "Time-based One-Time Password Verification Code", + "message": "Mã xác minh mật khẩu một lần dựa trên thời gian", "description": "Aria label for the totp code displayed in the inline menu for autofill" }, "totpSecondsSpanAria": { - "message": "Time remaining before current TOTP expires", + "message": "Thời gian còn lại trước khi TOTP hiện tại hết hạn", "description": "Aria label for the totp seconds displayed in the inline menu for autofill" }, "fillCredentialsFor": { @@ -3836,7 +3989,7 @@ "description": "Screen reader text for when overlay item is in focused" }, "partialUsername": { - "message": "Tên người dùng từng phần", + "message": "Tên đăng nhập một phần", "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" }, "noItemsToShow": { @@ -3852,31 +4005,31 @@ "description": "Screen reader text (aria-label) for new item button in overlay" }, "newLogin": { - "message": "New login", + "message": "Đăng nhập mới", "description": "Button text to display within inline menu when there are no matching items on a login field" }, "addNewLoginItemAria": { - "message": "Add new vault login item, opens in a new window", + "message": "Thêm mục đăng nhập mới, mở trong cửa sổ mới", "description": "Screen reader text (aria-label) for new login button within inline menu" }, "newCard": { - "message": "New card", + "message": "Thêm thẻ", "description": "Button text to display within inline menu when there are no matching items on a credit card field" }, "addNewCardItemAria": { - "message": "Add new vault card item, opens in a new window", + "message": "Thêm một thẻ mới, mở trong cửa sổ mới", "description": "Screen reader text (aria-label) for new card button within inline menu" }, "newIdentity": { - "message": "New identity", + "message": "Danh tính mới", "description": "Button text to display within inline menu when there are no matching items on an identity field" }, "addNewIdentityItemAria": { - "message": "Add new vault identity item, opens in a new window", + "message": "Thêm danh tính mới, mở trong cửa sổ mới", "description": "Screen reader text (aria-label) for new identity button within inline menu" }, "bitwardenOverlayMenuAvailable": { - "message": "Danh sách tự động điền của Bitwarden sẵn sàng. Sử dụng phím mũi tên xuống để chọn.", + "message": "Menu tự động điền của Bitwarden có sẵn. Nhấn phím mũi tên xuống để chọn.", "description": "Screen reader text for announcing when the overlay opens on the page" }, "turnOn": { @@ -3890,10 +4043,10 @@ "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" }, "importError": { - "message": "Lỗi nhập" + "message": "Lỗi khi nhập" }, "importErrorDesc": { - "message": "Có vấn đề với dữ liệu bạn cố gắng nhập. Vui lòng khắc phục các lỗi được liệt kê bên dưới trong tập tin nguồn của bạn và thử lại." + "message": "Có vấn đề với dữ liệu bạn đang cố gắng nhập. Vui lòng khắc phục các lỗi được liệt kê bên dưới trong tệp nguồn của bạn và thử lại." }, "resolveTheErrorsBelowAndTryAgain": { "message": "Giải quyết các lỗi bên dưới và thử lại." @@ -3929,7 +4082,7 @@ "message": "Đang chờ xác nhận" }, "couldNotCompleteBiometrics": { - "message": "Không thể hoàn tất sinh trắc học." + "message": "Không thể hoàn tất quá trình xác thực sinh trắc học." }, "needADifferentMethod": { "message": "Cần một phương pháp khác?" @@ -3968,7 +4121,7 @@ "message": "Tài khoản của bạn yêu cầu xác minh hai bước với Duo." }, "popoutExtension": { - "message": "Tiện ích mở rộng dạng cửa sổ bật lên" + "message": "Mở tiện ích ra cửa sổ mới" }, "launchDuo": { "message": "Khởi chạy Dou" @@ -3998,7 +4151,7 @@ "message": "Chọn bộ sưu tập" }, "importTargetHint": { - "message": "Chọn tùy chọn này để di chuyển nội dung tập tin đã được nhập đến $DESTINATION$", + "message": "Chọn tùy chọn này nếu bạn muốn nội dung của tệp đã nhập được di chuyển đến $DESTINATION$", "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", "placeholders": { "destination": { @@ -4026,7 +4179,7 @@ "message": "hoặc sao chép/dán nội dung của tập tin nhập" }, "instructionsFor": { - "message": "Hướng dẫn dùng $NAME$", + "message": "Hướng dẫn cho $NAME$", "description": "The title for the import tool instructions.", "placeholders": { "name": { @@ -4051,22 +4204,22 @@ "message": "Mã khoá" }, "accessing": { - "message": "Accessing" + "message": "Đang truy cập" }, "loggedInExclamation": { - "message": "Logged in!" + "message": "Đã đăng nhập!" }, "passkeyNotCopied": { "message": "Không thể sao chép mã khoá" }, "passkeyNotCopiedAlert": { - "message": "Bản sao sẽ không bao gồm mã khoá. Bạn có muốn tiếp tục tạo bản sao mục này?" + "message": "Bản sao sẽ không bao gồm mã khoá. Bạn có muốn tiếp tục tạo bản sao cho mục này?" }, "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { "message": "Trang web yêu cầu xác minh. Tính năng này hiện chưa được hỗ trợ cho tài khoản không có mật khẩu chính." }, "logInWithPasskeyQuestion": { - "message": "Log in with passkey?" + "message": "Đăng nhập bằng mã khóa?" }, "passkeyAlreadyExists": { "message": "Ứng dụng này đã có mã khoá." @@ -4078,10 +4231,10 @@ "message": "Bạn không có thông tin đăng nhập phù hợp cho trang web này." }, "noMatchingLoginsForSite": { - "message": "No matching logins for this site" + "message": "Không có đăng nhập khớp với trang web này" }, "searchSavePasskeyNewLogin": { - "message": "Search or save passkey as new login" + "message": "Tìm kiếm hoặc lưu mã khóa làm đăng nhập mới" }, "confirm": { "message": "Xác nhận" @@ -4093,10 +4246,10 @@ "message": "Lưu mã khoá như đăng nhập mới" }, "chooseCipherForPasskeySave": { - "message": "Choose a login to save this passkey to" + "message": "Chọn một đăng nhập để lưu mã khóa này" }, "chooseCipherForPasskeyAuth": { - "message": "Choose a passkey to log in with" + "message": "Chọn một mã khóa để đăng nhập" }, "passkeyItem": { "message": "Mục mã khoá" @@ -4108,7 +4261,7 @@ "message": "Mục này đã chứa mã khoá. Bạn có chắc muốn ghi đè mã khoá hiện tại không?" }, "featureNotSupported": { - "message": "Chưa hỗ trợ tính năng này" + "message": "Tính năng này hiện chưa được hỗ trợ" }, "yourPasskeyIsLocked": { "message": "Yêu cầu xác thực để sử dụng mã khoá. Xác minh danh tính của bạn để tiếp tục." @@ -4120,7 +4273,7 @@ "message": "Không tìm thấy dữ liệu LastPass" }, "incorrectUsernameOrPassword": { - "message": "Tên người dùng hoặc mật khẩu không đúng" + "message": "Tên đăng nhập hoặc mật khẩu không đúng" }, "incorrectPassword": { "message": "Mật khẩu không đúng" @@ -4178,10 +4331,10 @@ "message": "Nhập từ CSV" }, "lastPassTryAgainCheckEmail": { - "message": "Thử lại hoặc tìm email từ LastPass để xác minh đó là bạn." + "message": "Hãy thử lại hoặc kiểm tra email từ LastPass để xác minh rằng đó là bạn." }, "collection": { - "message": "Bộ Sưu Tập" + "message": "Bộ sưu tập" }, "lastPassYubikeyDesc": { "message": "Cắm khóa YubiKey được liên kết với tài khoản LastPass của bạn vào cổng USB của máy tính, sau đó nhấn nút trên YubiKey." @@ -4199,7 +4352,7 @@ "message": "Tài khoản đang hoạt động" }, "bitwardenAccount": { - "message": "Bitwarden account" + "message": "Tài khoản Bitwarden" }, "availableAccounts": { "message": "Các tài khoản khả dụng" @@ -4229,10 +4382,10 @@ "message": "Chỉ một lần" }, "alwaysForThisSite": { - "message": "Luôn cho trang này" + "message": "Luôn luôn cho trang này" }, "domainAddedToExcludedDomains": { - "message": "$DOMAIN$ đã được thêm vào danh sách các tên miền loại trừ.", + "message": "$DOMAIN$ đã được thêm vào danh sách các tên miền bị loại trừ.", "placeholders": { "domain": { "content": "$1", @@ -4244,6 +4397,26 @@ "message": "Định dạng chung", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "Bitwarden phát hiện khớp đường dẫn (URI) để xác định các đề xuất tự động điền.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Biểu thức chính quy\" là tùy chọn nâng cao với nguy cơ cao hơn trong việc lộ thông tin đăng nhập.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Bắt đầu với\" là tùy chọn nâng cao với nguy cơ cao hơn trong việc lộ thông tin đăng nhập.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "Thông tin thêm về độ phù hợp", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Tùy chọn nâng cao", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "Tiếp tục tới Cài đặt trình duyệt?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4253,7 +4426,7 @@ "description": "Title for dialog which asks if the user wants to proceed to a relevant Help Center page" }, "confirmContinueToHelpCenterPasswordManagementContent": { - "message": "Thay đổi cài đặt tự động điền và quản lý mật khẩu của trình duyệt của bạn.", + "message": "Thay đổi cài đặt tự động điền và quản lý mật khẩu của trình duyệt.", "description": "Body content for dialog which asks if the user wants to proceed to the Help Center's page about browser password management settings" }, "confirmContinueToHelpCenterKeyboardShortcutsContent": { @@ -4261,7 +4434,7 @@ "description": "Body content for dialog which asks if the user wants to proceed to the Help Center's page about browser keyboard shortcut settings" }, "confirmContinueToBrowserPasswordManagementSettingsContent": { - "message": "Thay đổi cài đặt tự động điền và quản lý mật khẩu của trình duyệt của bạn.", + "message": "Thay đổi cài đặt tự động điền và quản lý mật khẩu của trình duyệt.", "description": "Body content for dialog which asks if the user wants to proceed to the browser's password management settings page" }, "confirmContinueToBrowserKeyboardShortcutSettingsContent": { @@ -4277,7 +4450,7 @@ "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" }, "overrideDefaultBrowserAutoFillSettings": { - "message": "Bitwarden làm trình quản lý mật khẩu mặc định", + "message": "Đặt Bitwarden làm trình quản lý mật khẩu mặc định của bạn", "description": "Label for the setting that allows overriding the default browser autofill settings" }, "privacyPermissionAdditionNotGrantedTitle": { @@ -4285,7 +4458,7 @@ "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" }, "privacyPermissionAdditionNotGrantedDescription": { - "message": "Bạn phải cấp quyền riêng tư của trình duyệt cho Bitwarden để đặt nó làm trình quản lý mật khẩu mặc định.", + "message": "Bạn phải cấp quyền riêng tư của trình duyệt cho Bitwarden để đặt làm trình quản lý mật khẩu mặc định.", "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" }, "makeDefault": { @@ -4297,7 +4470,7 @@ "description": "Notification message for when saving credentials has succeeded." }, "passwordSaved": { - "message": "Password saved!", + "message": "Đã lưu mật khẩu!", "description": "Notification message for when saving credentials has succeeded." }, "updateCipherAttemptSuccess": { @@ -4305,7 +4478,7 @@ "description": "Notification message for when updating credentials has succeeded." }, "passwordUpdated": { - "message": "Password updated!", + "message": "Đã cập nhật mật khẩu!", "description": "Notification message for when updating credentials has succeeded." }, "saveCipherAttemptFailed": { @@ -4322,10 +4495,10 @@ "message": "Đã xóa mã khoá" }, "autofillSuggestions": { - "message": "Autofill suggestions" + "message": "Các gợi ý tự động điền" }, "itemSuggestions": { - "message": "Suggested items" + "message": "Các mục đề xuất" }, "autofillSuggestionsTip": { "message": "Lưu thông tin đăng nhập cho trang này để tự động điền" @@ -4390,7 +4563,7 @@ } }, "viewItemTitleWithField": { - "message": "View item - $ITEMNAME$ - $FIELD$", + "message": "Xem mục - $ITEMNAME$ - $FIELD$", "description": "Title for a link that opens a view for an item.", "placeholders": { "itemname": { @@ -4414,7 +4587,7 @@ } }, "autofillTitleWithField": { - "message": "Autofill - $ITEMNAME$ - $FIELD$", + "message": "Tự động điền - $ITEMNAME$ - $FIELD$", "description": "Title for a button that autofills a login item.", "placeholders": { "itemname": { @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Sao chép $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, @@ -4469,10 +4642,10 @@ "message": "Giao diện" }, "errorAssigningTargetCollection": { - "message": "Lỗi khi gán vào bộ sưu tập chỉ định." + "message": "Lỗi khi gán vào bộ sưu tập đã chọn." }, "errorAssigningTargetFolder": { - "message": "Lỗi khi gán vào thư mục chỉ định." + "message": "Lỗi khi gán vào thư mục đã chọn." }, "viewItemsIn": { "message": "Xem các mục trong $NAME$", @@ -4575,31 +4748,31 @@ } }, "downloadBitwarden": { - "message": "Download Bitwarden" + "message": "Tải xuống Bitwarden" }, "downloadBitwardenOnAllDevices": { - "message": "Download Bitwarden on all devices" + "message": "Tải xuống Bitwarden trên tất cả các thiết bị" }, "getTheMobileApp": { - "message": "Get the mobile app" + "message": "Tải ứng dụng di động" }, "getTheMobileAppDesc": { - "message": "Access your passwords on the go with the Bitwarden mobile app." + "message": "Truy cập mật khẩu của bạn mọi lúc mọi nơi với ứng dụng di động Bitwarden." }, "getTheDesktopApp": { - "message": "Get the desktop app" + "message": "Tải ứng dụng cho máy tính" }, "getTheDesktopAppDesc": { - "message": "Access your vault without a browser, then set up unlock with biometrics to expedite unlocking in both the desktop app and browser extension." + "message": "Truy cập kho lưu trữ của bạn mà không cần trình duyệt, sau đó thiết lập mở khóa bằng sinh trắc học để mở khóa dễ dàng trong cả ứng dụng trên máy tính và tiện ích mở rộng trình duyệt." }, "downloadFromBitwardenNow": { - "message": "Download from bitwarden.com now" + "message": "Tải xuống từ bitwarden.com ngay bây giờ" }, "getItOnGooglePlay": { - "message": "Get it on Google Play" + "message": "Tải về từ Google Play" }, "downloadOnTheAppStore": { - "message": "Download on the App Store" + "message": "Tải về từ App Store" }, "permanentlyDeleteAttachmentConfirmation": { "message": "Bạn có chắc chắn muốn xóa vĩnh viễn tệp đính kèm này không?" @@ -4614,13 +4787,13 @@ "message": "Bộ lọc" }, "filterVault": { - "message": "Filter vault" + "message": "Lọc kho" }, "filterApplied": { - "message": "One filter applied" + "message": "Một bộ lọc đã được áp dụng" }, "filterAppliedPlural": { - "message": "$COUNT$ filters applied", + "message": "$COUNT$ bộ lọc đã được áp dụng", "placeholders": { "count": { "content": "$1", @@ -4632,7 +4805,7 @@ "message": "Thông tin cá nhân" }, "identification": { - "message": "ID" + "message": "Định danh" }, "contactInfo": { "message": "Thông tin liên hệ" @@ -4647,7 +4820,7 @@ } }, "cardNumberEndsWith": { - "message": "card number ends with", + "message": "số thẻ kết thúc bằng", "description": "Used within the inline menu to provide an aria description when users are attempting to fill a card cipher." }, "loginCredentials": { @@ -4657,13 +4830,13 @@ "message": "Khóa xác thực" }, "autofillOptions": { - "message": "Autofill options" + "message": "Tùy chọn tự động điền" }, "websiteUri": { - "message": "Website (URI)" + "message": "Trang web (URI)" }, "websiteUriCount": { - "message": "Website (URI) $COUNT$", + "message": "Trang web (URI) $COUNT$", "description": "Label for an input field that contains a website URI. The input field is part of a list of fields, and the count indicates the position of the field in the list.", "placeholders": { "count": { @@ -4673,16 +4846,16 @@ } }, "websiteAdded": { - "message": "Website added" + "message": "Đã thêm trang web" }, "addWebsite": { - "message": "Add website" + "message": "Thêm trang web" }, "deleteWebsite": { - "message": "Delete website" + "message": "Xóa trang web" }, "defaultLabel": { - "message": "Default ($VALUE$)", + "message": "Mặc định ($VALUE$)", "description": "A label that indicates the default value for a field with the current default value in parentheses.", "placeholders": { "value": { @@ -4692,7 +4865,7 @@ } }, "showMatchDetection": { - "message": "Show match detection $WEBSITE$", + "message": "Hiện phát hiện trùng khớp $WEBSITE$", "placeholders": { "website": { "content": "$1", @@ -4701,7 +4874,7 @@ } }, "hideMatchDetection": { - "message": "Hide match detection $WEBSITE$", + "message": "Ẩn phát hiện trùng khớp $WEBSITE$", "placeholders": { "website": { "content": "$1", @@ -4710,13 +4883,13 @@ } }, "autoFillOnPageLoad": { - "message": "Autofill on page load?" + "message": "Tự động điền khi tải trang?" }, "cardExpiredTitle": { - "message": "Expired card" + "message": "Thẻ hết hạn" }, "cardExpiredMessage": { - "message": "If you've renewed it, update the card's information" + "message": "Nếu bạn đã gia hạn, hãy cập nhật thông tin thẻ" }, "cardDetails": { "message": "Thông tin thẻ" @@ -4731,10 +4904,10 @@ } }, "enableAnimations": { - "message": "Enable animations" + "message": "Bật hiệu ứng động" }, "showAnimations": { - "message": "Show animations" + "message": "Hiện hiệu ứng động" }, "addAccount": { "message": "Thêm tài khoản" @@ -4746,15 +4919,15 @@ "message": "Dữ liệu" }, "passkeys": { - "message": "Passkeys", + "message": "Các mã khoá", "description": "A section header for a list of passkeys." }, "passwords": { - "message": "Passwords", + "message": "Mật khẩu", "description": "A section header for a list of passwords." }, "logInWithPasskeyAriaLabel": { - "message": "Log in with passkey", + "message": "Đăng nhập bằng mã khoá", "description": "ARIA label for the inline menu button that logs in with a passkey." }, "assign": { @@ -4791,19 +4964,19 @@ "message": "Tiêu đề trường" }, "textHelpText": { - "message": "Sử dụng các trường nhập liệu văn bản cho dữ liệu như câu hỏi bảo mật" + "message": "Sử dụng các trường văn bản cho dữ liệu như câu hỏi bảo mật" }, "hiddenHelpText": { - "message": "Sử dụng các trường nhập liệu ẩn cho thông tin nhạy cảm như mật khẩu" + "message": "Sử dụng các trường ẩn để lưu dữ liệu nhạy cảm như mật khẩu" }, "checkBoxHelpText": { "message": "Dùng các ô tích chọn nếu bạn muốn tự động điền vào ô tích chọn của biểu mẫu, chẳng hạn như ghi nhớ email" }, "linkedHelpText": { - "message": "Sử dụng trường nhập liệu đã liên kết khi bạn gặp vấn đề với việc tự động điền trên một trang web cụ thể." + "message": "Sử dụng trường liên kết khi bạn gặp vấn đề với tính năng tự động điền trên một trang web cụ thể." }, "linkedLabelHelpText": { - "message": "Nhập thông tin định danh của trường như id, name, aria-label hoặc placeholder." + "message": "Nhập html id, name, aria-label hoặc placeholder của các trường." }, "editField": { "message": "Chỉnh sửa trường" @@ -4845,10 +5018,10 @@ } }, "reorderWebsiteUriButton": { - "message": "Reorder website URI. Use arrow key to move item up or down." + "message": "Sắp xếp lại đường dẫn trang web. Sử dụng phím mũi tên để di chuyển mục lên hoặc xuống." }, "reorderFieldUp": { - "message": "$LABEL$ đã di chuyển lên vị trí $INDEX$ / $LENGTH$", + "message": "$LABEL$ đã được di chuyển lên, vị trí $INDEX$ trong $LENGTH$", "placeholders": { "label": { "content": "$1", @@ -4926,7 +5099,7 @@ } }, "reorderFieldDown": { - "message": "$LABEL$ đã di chuyển xuống vị trí $INDEX$ / $LENGTH$", + "message": "$LABEL$ đã được di chuyển xuống, vị trí $INDEX$ trong $LENGTH$", "placeholders": { "label": { "content": "$1", @@ -4946,43 +5119,43 @@ "message": "Vị trí mục" }, "fileSend": { - "message": "File Send" + "message": "Gửi tệp" }, "fileSends": { - "message": "File Sends" + "message": "Gửi tệp" }, "textSend": { - "message": "Text Send" + "message": "Gửi văn bản" }, "textSends": { - "message": "Text Sends" + "message": "Gửi văn bản" }, "accountActions": { - "message": "Account actions" + "message": "Thao tác trên tài khoản" }, "showNumberOfAutofillSuggestions": { - "message": "Show number of login autofill suggestions on extension icon" + "message": "Hiển thị số lượng đề xuất tự động điền đăng nhập trên biểu tượng tiện ích mở rộng" }, "showQuickCopyActions": { - "message": "Show quick copy actions on Vault" + "message": "Hiển thị các hành động sao chép nhanh trên Kho" }, "systemDefault": { - "message": "System default" + "message": "Mặc định hệ thống" }, "enterprisePolicyRequirementsApplied": { - "message": "Enterprise policy requirements have been applied to this setting" + "message": "Các yêu cầu chính sách của doanh nghiệp đã được áp dụng cho cài đặt này" }, "sshPrivateKey": { - "message": "Private key" + "message": "Khóa riêng tư" }, "sshPublicKey": { - "message": "Public key" + "message": "Khóa công khai" }, "sshFingerprint": { - "message": "Fingerprint" + "message": "Vân tay" }, "sshKeyAlgorithm": { - "message": "Key type" + "message": "Kiểu khoá" }, "sshKeyAlgorithmED25519": { "message": "ED25519" @@ -4997,61 +5170,61 @@ "message": "RSA 4096-Bit" }, "retry": { - "message": "Retry" + "message": "Thử lại" }, "vaultCustomTimeoutMinimum": { - "message": "Minimum custom timeout is 1 minute." + "message": "Thời gian đóng kho tùy chỉnh tối thiểu là 1 phút." }, "additionalContentAvailable": { - "message": "Additional content is available" + "message": "Nội dung bổ sung có sẵn" }, "fileSavedToDevice": { - "message": "File saved to device. Manage from your device downloads." + "message": "Tệp đã được lưu vào thiết bị. Quản lý từ phần Tải về trên thiết bị của bạn." }, "showCharacterCount": { - "message": "Show character count" + "message": "Hiển thị số lượng ký tự" }, "hideCharacterCount": { - "message": "Hide character count" + "message": "Ẩn số lượng ký tự" }, "itemsInTrash": { - "message": "Items in trash" + "message": "Các mục trong thùng rác" }, "noItemsInTrash": { - "message": "No items in trash" + "message": "Không có mục nào trong thùng rác" }, "noItemsInTrashDesc": { - "message": "Items you delete will appear here and be permanently deleted after 30 days" + "message": "Các mục bạn xóa sẽ xuất hiện ở đây và sẽ bị xóa vĩnh vĩnh sau 30 ngày" }, "trashWarning": { - "message": "Items that have been in trash more than 30 days will automatically be deleted" + "message": "Các mục đã ở trong thùng rác hơn 30 ngày sẽ tự động bị xóa" }, "restore": { - "message": "Restore" + "message": "Khôi phục" }, "deleteForever": { - "message": "Delete forever" + "message": "Xóa vĩnh viễn" }, "noEditPermissions": { - "message": "You don't have permission to edit this item" + "message": "Bạn không có quyền chỉnh sửa mục này" }, "biometricsStatusHelptextUnlockNeeded": { - "message": "Biometric unlock is unavailable because PIN or password unlock is required first." + "message": "Mở khóa bằng sinh trắc học không khả dụng vì cần phải mở khóa bằng mã PIN hoặc mật khẩu trước." }, "biometricsStatusHelptextHardwareUnavailable": { - "message": "Biometric unlock is currently unavailable." + "message": "Mở khóa bằng sinh trắc học hiện không khả dụng." }, "biometricsStatusHelptextAutoSetupNeeded": { - "message": "Biometric unlock is unavailable due to misconfigured system files." + "message": "Mở khóa bằng sinh trắc học không khả dụng do các tệp hệ thống bị cấu hình sai." }, "biometricsStatusHelptextManualSetupNeeded": { - "message": "Biometric unlock is unavailable due to misconfigured system files." + "message": "Mở khóa bằng sinh trắc học không khả dụng do các tệp hệ thống bị cấu hình sai." }, "biometricsStatusHelptextDesktopDisconnected": { - "message": "Biometric unlock is unavailable because the Bitwarden desktop app is closed." + "message": "Mở khóa bằng sinh trắc học không khả dụng vì ứng dụng Bitwarden trên máy tính đang bị đóng." }, "biometricsStatusHelptextNotEnabledInDesktop": { - "message": "Biometric unlock is unavailable because it is not enabled for $EMAIL$ in the Bitwarden desktop app.", + "message": "Mở khóa bằng sinh trắc học không khả dụng vì nó chưa được kích hoạt cho $EMAIL$ trong ứng dụng Bitwarden trên máy tính.", "placeholders": { "email": { "content": "$1", @@ -5060,217 +5233,217 @@ } }, "biometricsStatusHelptextUnavailableReasonUnknown": { - "message": "Biometric unlock is currently unavailable for an unknown reason." + "message": "Mở khóa bằng sinh trắc học hiện không khả dụng vì lý do chưa rõ." }, "unlockVault": { - "message": "Unlock your vault in seconds" + "message": "Mở kho của bạn trong vài giây" }, "unlockVaultDesc": { - "message": "You can customize your unlock and timeout settings to more quickly access your vault." + "message": "Bạn có thể tùy chỉnh cài đặt mở khóa và thời gian mở kho để truy cập kho lưu trữ của mình nhanh hơn." }, "unlockPinSet": { - "message": "Unlock PIN set" + "message": "Đã thiết lập mở khóa bằng mã PIN" }, "unlockWithBiometricSet": { - "message": "Unlock with biometrics set" + "message": "Đã thiết lập mở khóa bằng sinh trắc học" }, "authenticating": { - "message": "Authenticating" + "message": "Đang xác thực" }, "fillGeneratedPassword": { - "message": "Fill generated password", + "message": "Điền mật khẩu được tạo tự động", "description": "Heading for the password generator within the inline menu" }, "passwordRegenerated": { - "message": "Password regenerated", + "message": "Mật khẩu đã được tạo lại", "description": "Notification message for when a password has been regenerated" }, "saveToBitwarden": { - "message": "Save to Bitwarden", + "message": "Lưu vào Bitwarden", "description": "Confirmation message for saving a login to Bitwarden" }, "spaceCharacterDescriptor": { - "message": "Space", + "message": "Phím cách", "description": "Represents the space key in screen reader content as a readable word" }, "tildeCharacterDescriptor": { - "message": "Tilde", + "message": "Dấu ngã", "description": "Represents the ~ key in screen reader content as a readable word" }, "backtickCharacterDescriptor": { - "message": "Backtick", + "message": "Dấu nháy ngược", "description": "Represents the ` key in screen reader content as a readable word" }, "exclamationCharacterDescriptor": { - "message": "Exclamation mark", + "message": "Dấu chấm than", "description": "Represents the ! key in screen reader content as a readable word" }, "atSignCharacterDescriptor": { - "message": "At sign", + "message": "Dấu @", "description": "Represents the @ key in screen reader content as a readable word" }, "hashSignCharacterDescriptor": { - "message": "Hash sign", + "message": "Dấu thăng", "description": "Represents the # key in screen reader content as a readable word" }, "dollarSignCharacterDescriptor": { - "message": "Dollar sign", + "message": "Dấu đô la", "description": "Represents the $ key in screen reader content as a readable word" }, "percentSignCharacterDescriptor": { - "message": "Percent sign", + "message": "Dấu phần trăm", "description": "Represents the % key in screen reader content as a readable word" }, "caretCharacterDescriptor": { - "message": "Caret", + "message": "Dấu mũ", "description": "Represents the ^ key in screen reader content as a readable word" }, "ampersandCharacterDescriptor": { - "message": "Ampersand", + "message": "Dấu và", "description": "Represents the & key in screen reader content as a readable word" }, "asteriskCharacterDescriptor": { - "message": "Asterisk", + "message": "Dấu sao", "description": "Represents the * key in screen reader content as a readable word" }, "parenLeftCharacterDescriptor": { - "message": "Left parenthesis", + "message": "Dấu ngoặc trái", "description": "Represents the ( key in screen reader content as a readable word" }, "parenRightCharacterDescriptor": { - "message": "Right parenthesis", + "message": "Dấu ngoặc phải", "description": "Represents the ) key in screen reader content as a readable word" }, "hyphenCharacterDescriptor": { - "message": "Underscore", + "message": "Gạch dưới", "description": "Represents the _ key in screen reader content as a readable word" }, "underscoreCharacterDescriptor": { - "message": "Hyphen", + "message": "Dấu gạch nối", "description": "Represents the - key in screen reader content as a readable word" }, "plusCharacterDescriptor": { - "message": "Plus", + "message": "Dấu cộng", "description": "Represents the + key in screen reader content as a readable word" }, "equalsCharacterDescriptor": { - "message": "Equals", + "message": "Dấu bằng", "description": "Represents the = key in screen reader content as a readable word" }, "braceLeftCharacterDescriptor": { - "message": "Left brace", + "message": "Dấu ngoặc nhọn trái", "description": "Represents the { key in screen reader content as a readable word" }, "braceRightCharacterDescriptor": { - "message": "Right brace", + "message": "Dấu ngoặc nhọn phải", "description": "Represents the } key in screen reader content as a readable word" }, "bracketLeftCharacterDescriptor": { - "message": "Left bracket", + "message": "Dấu ngoặc vuông trái", "description": "Represents the [ key in screen reader content as a readable word" }, "bracketRightCharacterDescriptor": { - "message": "Right bracket", + "message": "Dấu ngoặc vuông phải", "description": "Represents the ] key in screen reader content as a readable word" }, "pipeCharacterDescriptor": { - "message": "Pipe", + "message": "Dấu gạch", "description": "Represents the | key in screen reader content as a readable word" }, "backSlashCharacterDescriptor": { - "message": "Back slash", + "message": "Dấu gạch chéo ngược", "description": "Represents the back slash key in screen reader content as a readable word" }, "colonCharacterDescriptor": { - "message": "Colon", + "message": "Dấu hai chấm", "description": "Represents the : key in screen reader content as a readable word" }, "semicolonCharacterDescriptor": { - "message": "Semicolon", + "message": "Dấu chấm phẩy", "description": "Represents the ; key in screen reader content as a readable word" }, "doubleQuoteCharacterDescriptor": { - "message": "Double quote", + "message": "Nháy kép", "description": "Represents the double quote key in screen reader content as a readable word" }, "singleQuoteCharacterDescriptor": { - "message": "Single quote", + "message": "Dấu nháy đơn", "description": "Represents the ' key in screen reader content as a readable word" }, "lessThanCharacterDescriptor": { - "message": "Less than", + "message": "Dấu nhỏ hơn", "description": "Represents the < key in screen reader content as a readable word" }, "greaterThanCharacterDescriptor": { - "message": "Greater than", + "message": "Dấu lớn hơn", "description": "Represents the > key in screen reader content as a readable word" }, "commaCharacterDescriptor": { - "message": "Comma", + "message": "Dấu phẩy", "description": "Represents the , key in screen reader content as a readable word" }, "periodCharacterDescriptor": { - "message": "Period", + "message": "Dấu chấm", "description": "Represents the . key in screen reader content as a readable word" }, "questionCharacterDescriptor": { - "message": "Question mark", + "message": "Dấu hỏi chấm", "description": "Represents the ? key in screen reader content as a readable word" }, "forwardSlashCharacterDescriptor": { - "message": "Forward slash", + "message": "Dấu gạch chéo", "description": "Represents the / key in screen reader content as a readable word" }, "lowercaseAriaLabel": { - "message": "Lowercase" + "message": "Chữ thường" }, "uppercaseAriaLabel": { - "message": "Uppercase" + "message": "Chữ in hoa" }, "generatedPassword": { - "message": "Generated password" + "message": "Mật khẩu được tạo" }, "compactMode": { - "message": "Compact mode" + "message": "Chế độ nhỏ gọn" }, "beta": { "message": "Beta" }, "extensionWidth": { - "message": "Extension width" + "message": "Chiều rộng phần mở rộng" }, "wide": { - "message": "Wide" + "message": "Rộng" }, "extraWide": { - "message": "Extra wide" + "message": "Rộng hơn" }, "sshKeyWrongPassword": { - "message": "The password you entered is incorrect." + "message": "Mật khẩu bạn đã nhập không đúng." }, "importSshKey": { - "message": "Import" + "message": "Nhập" }, "confirmSshKeyPassword": { - "message": "Confirm password" + "message": "Xác nhận mật khẩu" }, "enterSshKeyPasswordDesc": { - "message": "Enter the password for the SSH key." + "message": "Nhập mật khẩu cho khóa SSH." }, "enterSshKeyPassword": { - "message": "Enter password" + "message": "Nhập mật khẩu" }, "invalidSshKey": { - "message": "The SSH key is invalid" + "message": "Khóa SSH không hợp lệ" }, "sshKeyTypeUnsupported": { - "message": "The SSH key type is not supported" + "message": "Loại khóa SSH không được hỗ trợ" }, "importSshKeyFromClipboard": { - "message": "Import key from clipboard" + "message": "Nhập khóa từ bảng nhớ tạm" }, "sshKeyImported": { - "message": "SSH key imported successfully" + "message": "Khóa SSH được nhập thành công" }, "cannotRemoveViewOnlyCollections": { "message": "Bạn không thể xóa các bộ sưu tập với quyền chỉ xem: $COLLECTIONS$", @@ -5282,142 +5455,142 @@ } }, "updateDesktopAppOrDisableFingerprintDialogTitle": { - "message": "Please update your desktop application" + "message": "Vui lòng cập nhật ứng dụng trên máy tính của bạn" }, "updateDesktopAppOrDisableFingerprintDialogMessage": { - "message": "To use biometric unlock, please update your desktop application, or disable fingerprint unlock in the desktop settings." + "message": "Để sử dụng mở khóa bằng sinh trắc học, vui lòng cập nhật ứng dụng trên máy tính của bạn, hoặc tắt mở khóa vân tay trong cài đặt máy tính." }, "changeAtRiskPassword": { - "message": "Change at-risk password" + "message": "Thay đổi mật khẩu có rủi ro" }, "settingsVaultOptions": { - "message": "Vault options" + "message": "Tùy chọn kho" }, "emptyVaultDescription": { - "message": "The vault protects more than just your passwords. Store secure logins, IDs, cards and notes securely here." + "message": "Kho lưu trữ không chỉ bảo vệ mật khẩu của bạn. Bạn có thể lưu trữ an toàn các thông tin đăng nhập, ID, thẻ và ghi chú tại đây." }, "introCarouselLabel": { - "message": "Welcome to Bitwarden" + "message": "Chào mừng bạn đến với Bitwarden" }, "securityPrioritized": { - "message": "Security, prioritized" + "message": "Bảo mật, ưu tiên hàng đầu" }, "securityPrioritizedBody": { - "message": "Save logins, cards, and identities to your secure vault. Bitwarden uses zero-knowledge, end-to-end encryption to protect what’s important to you." + "message": "Lưu trữ thông tin đăng nhập, thẻ tín dụng và thông tin cá nhân vào kho lưu trữ an toàn của bạn. Bitwarden sử dụng mã hóa đầu cuối không tiết lộ thông tin (zero-knowledge) để bảo vệ những gì quan trọng đối với bạn." }, "quickLogin": { - "message": "Quick and easy login" + "message": "Đăng nhập nhanh chóng và dễ dàng" }, "quickLoginBody": { - "message": "Set up biometric unlock and autofill to log into your accounts without typing a single letter." + "message": "Cài đặt tính năng mở khóa bằng sinh trắc học và tự động điền thông tin để đăng nhập vào các tài khoản của bạn mà không cần nhập bất kỳ ký tự nào." }, "secureUser": { - "message": "Level up your logins" + "message": "Nâng cấp đăng nhập của bạn" }, "secureUserBody": { - "message": "Use the generator to create and save strong, unique passwords for all your accounts." + "message": "Sử dụng trình tạo mật khẩu để tạo và lưu trữ các mật khẩu mạnh, duy nhất cho tất cả các tài khoản của bạn." }, "secureDevices": { - "message": "Your data, when and where you need it" + "message": "Dữ liệu của bạn, mọi lúc, mọi nơi bạn cần" }, "secureDevicesBody": { - "message": "Save unlimited passwords across unlimited devices with Bitwarden mobile, browser, and desktop apps." + "message": "Lưu trữ mật khẩu không giới hạn trên tất cả các thiết bị với ứng dụng di động, trình duyệt và máy tính của Bitwarden." }, "nudgeBadgeAria": { - "message": "1 notification" + "message": "1 thông báo" }, "emptyVaultNudgeTitle": { - "message": "Import existing passwords" + "message": "Nhập mật khẩu hiện có" }, "emptyVaultNudgeBody": { - "message": "Use the importer to quickly transfer logins to Bitwarden without manually adding them." + "message": "Sử dụng công cụ nhập để nhanh chóng chuyển các tài khoản đăng nhập sang Bitwarden mà không cần thêm thủ công." }, "emptyVaultNudgeButton": { - "message": "Import now" + "message": "Nhập ngay" }, "hasItemsVaultNudgeTitle": { - "message": "Welcome to your vault!" + "message": "Chào mừng đến với kho lưu trữ của bạn!" }, "hasItemsVaultNudgeBodyOne": { - "message": "Autofill items for the current page" + "message": "Tự động điền các mục cho trang hiện tại" }, "hasItemsVaultNudgeBodyTwo": { - "message": "Favorite items for easy access" + "message": "Các mục yêu thích để truy cập nhanh chóng" }, "hasItemsVaultNudgeBodyThree": { - "message": "Search your vault for something else" + "message": "Tìm kiếm thông tin khác trong kho của bạn" }, "newLoginNudgeTitle": { - "message": "Save time with autofill" + "message": "Tiết kiệm thời gian với tính năng tự động điền" }, "newLoginNudgeBodyOne": { - "message": "Include a", + "message": "Bao gồm một", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newLoginNudgeBodyBold": { - "message": "Website", + "message": "Trang web", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newLoginNudgeBodyTwo": { - "message": "so this login appears as an autofill suggestion.", + "message": "vì vậy, thông tin đăng nhập này sẽ xuất hiện như đề xuất tự động điền.", "description": "This is in multiple parts to allow for bold text in the middle of the sentence.", "example": "Include a Website so this login appears as an autofill suggestion." }, "newCardNudgeTitle": { - "message": "Seamless online checkout" + "message": "Thanh toán trực tuyến không gián đoạn" }, "newCardNudgeBody": { - "message": "With cards, easily autofill payment forms securely and accurately." + "message": "Với thẻ, dễ dàng tự động điền các biểu mẫu thanh toán an toàn và chính xác." }, "newIdentityNudgeTitle": { - "message": "Simplify creating accounts" + "message": "Đơn giản hóa việc tạo tài khoản" }, "newIdentityNudgeBody": { - "message": "With identities, quickly autofill long registration or contact forms." + "message": "Với danh tính, nhanh chóng tự động điền các biểu mẫu đăng ký hoặc liên hệ dài." }, "newNoteNudgeTitle": { - "message": "Keep your sensitive data safe" + "message": "Giữ dữ liệu nhạy cảm của bạn an toàn" }, "newNoteNudgeBody": { - "message": "With notes, securely store sensitive data like banking or insurance details." + "message": "Với ghi chú, lưu trữ an toàn dữ liệu nhạy cảm như thông tin ngân hàng hoặc bảo hiểm." }, "newSshNudgeTitle": { - "message": "Developer-friendly SSH access" + "message": "Truy cập SSH thân thiện với nhà phát triển" }, "newSshNudgeBodyOne": { - "message": "Store your keys and connect with the SSH agent for fast, encrypted authentication.", + "message": "Lưu trữ khóa của bạn và kết nối với trình quản lý khóa SSH để xác thực nhanh chóng và được mã hóa.", "description": "Two part message", "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, "newSshNudgeBodyTwo": { - "message": "Learn more about SSH agent", + "message": "Tìm hiểu thêm về SSH agent", "description": "Two part message", "example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent" }, "generatorNudgeTitle": { - "message": "Quickly create passwords" + "message": "Tạo mật khẩu nhanh chóng" }, "generatorNudgeBodyOne": { - "message": "Easily create strong and unique passwords by clicking on", + "message": "Dễ dàng tạo mật khẩu mạnh và duy nhất chỉ trong một cú nhấp chuột", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyTwo": { - "message": "to help you keep your logins secure.", + "message": "để giúp bạn bảo vệ thông tin đăng nhập của mình.", "description": "Two part message", "example": "Easily create strong and unique passwords by clicking on {icon} to help you keep your logins secure." }, "generatorNudgeBodyAria": { - "message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.", + "message": "Dễ dàng tạo mật khẩu mạnh và duy nhất bằng cách nhấp vào Trình tạo mật khẩu để giúp bạn bảo vệ tài khoản đăng nhập của mình.", "description": "Aria label for the body content of the generator nudge" }, "noPermissionsViewPage": { - "message": "You do not have permissions to view this page. Try logging in with a different account." + "message": "Bạn không có quyền truy cập vào trang này. Hãy thử đăng nhập bằng tài khoản khác." }, "wasmNotSupported": { - "message": "WebAssembly is not supported on your browser or is not enabled. WebAssembly is required to use the Bitwarden app.", + "message": "WebAssembly không được hỗ trợ trên trình duyệt của bạn hoặc chưa được kích hoạt. WebAssembly là yêu cầu bắt buộc để sử dụng ứng dụng Bitwarden.", "description": "'WebAssembly' is a technical term and should not be translated." } } diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json index fe70f8abe57..2382e6fc971 100644 --- a/apps/browser/src/_locales/zh_CN/messages.json +++ b/apps/browser/src/_locales/zh_CN/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "搜索密码库" }, + "resetSearch": { + "message": "重置搜索" + }, "edit": { "message": "编辑" }, @@ -1173,6 +1176,12 @@ "message": "哦不!我们无法保存它。请尝试手动输入详细信息。", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "更改密码后,您需要使用新密码登录。 在其他设备上的活动会话将在一小时内注销。" + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "更改您的主密码以完成账户恢复。" + }, "enableChangedPasswordNotification": { "message": "询问更新现有的登录" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "安全码" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "例如" }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "您必须验证电子邮箱才能使用此功能。您可以在网页密码库中验证您的电子邮箱。" }, + "masterPasswordSuccessfullySet": { + "message": "主密码设置成功" + }, "updatedMasterPassword": { "message": "已更新主密码" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "请求已发送" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "您拒绝了一个来自其他设备的登录尝试。若确实是您本人,请尝试再次发起设备登录。" + }, + "device": { + "message": "设备" + }, + "loginStatus": { + "message": "登录状态" + }, + "masterPasswordChanged": { + "message": "主密码已保存" + }, "exposedMasterPassword": { "message": "已暴露的主密码" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "记住此设备以便将来无缝登录" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "当前会话" + }, + "mobile": { + "message": "移动端", + "description": "Mobile app" + }, + "extension": { + "message": "扩展", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "桌面端", + "description": "Desktop app" + }, + "webVault": { + "message": "网页密码库" + }, + "webApp": { + "message": "网页 App" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "请求待处理" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "此请求已失效。" + }, + "areYouTryingToAccessYourAccount": { + "message": "您正在尝试访问您的账户吗?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "已确认 $EMAIL$ 在 $DEVICE$ 上的登录", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "您拒绝了一个来自其他设备的登录尝试。若确实是您本人,请尝试再次发起设备登录。" + }, + "loginRequestHasAlreadyExpired": { + "message": "登录请求已过期。" + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "请求于 $MINUTES$ 分钟前", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "需要设备批准。请在下面选择一个批准选项:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "请求管理员批准" }, + "unableToCompleteLogin": { + "message": "无法完成登录" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "必须填写组织 SSO 标识符。" }, @@ -4244,6 +4397,26 @@ "message": "常规格式", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "更多关于匹配检测", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "高级选项", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "前往浏览器设置吗?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "复制 $FIELD$,$VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/_locales/zh_TW/messages.json b/apps/browser/src/_locales/zh_TW/messages.json index e50117419b2..d2776cb227d 100644 --- a/apps/browser/src/_locales/zh_TW/messages.json +++ b/apps/browser/src/_locales/zh_TW/messages.json @@ -547,6 +547,9 @@ "searchVault": { "message": "搜尋密碼庫" }, + "resetSearch": { + "message": "Reset search" + }, "edit": { "message": "編輯" }, @@ -1173,6 +1176,12 @@ "message": "Oh no! We couldn't save this. Try entering the details manually.", "description": "Detailed error message shown when saving login details fails." }, + "changePasswordWarning": { + "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour." + }, + "accountRecoveryUpdateMasterPasswordSubtitle": { + "message": "Change your master password to complete account recovery." + }, "enableChangedPasswordNotification": { "message": "詢問更新現有的登入資料" }, @@ -1823,6 +1832,9 @@ "securityCode": { "message": "安全代碼" }, + "cardNumber": { + "message": "card number" + }, "ex": { "message": "例如" }, @@ -2919,6 +2931,9 @@ "emailVerificationRequiredDesc": { "message": "您必須驗證您的電子郵件才能使用此功能。您可以在網頁密碼庫裡驗證您的電子郵件。" }, + "masterPasswordSuccessfullySet": { + "message": "Master password successfully set" + }, "updatedMasterPassword": { "message": "已更新主密碼" }, @@ -3451,6 +3466,31 @@ "logInRequestSent": { "message": "已傳送請求" }, + "loginRequestApprovedForEmailOnDevice": { + "message": "Login request approved for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "Web app - Chrome" + } + } + }, + "youDeniedLoginAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this was you, try to log in with the device again." + }, + "device": { + "message": "Device" + }, + "loginStatus": { + "message": "Login status" + }, + "masterPasswordChanged": { + "message": "Master password saved" + }, "exposedMasterPassword": { "message": "已洩露的主密碼" }, @@ -3544,6 +3584,113 @@ "rememberThisDeviceToMakeFutureLoginsSeamless": { "message": "記住此裝置來讓未來的登入體驗更簡易" }, + "manageDevices": { + "message": "Manage devices" + }, + "currentSession": { + "message": "Current session" + }, + "mobile": { + "message": "Mobile", + "description": "Mobile app" + }, + "extension": { + "message": "Extension", + "description": "Browser extension/addon" + }, + "desktop": { + "message": "Desktop", + "description": "Desktop app" + }, + "webVault": { + "message": "Web vault" + }, + "webApp": { + "message": "Web app" + }, + "cli": { + "message": "CLI" + }, + "sdk": { + "message": "SDK", + "description": "Software Development Kit" + }, + "requestPending": { + "message": "Request pending" + }, + "firstLogin": { + "message": "First login" + }, + "trusted": { + "message": "Trusted" + }, + "needsApproval": { + "message": "Needs approval" + }, + "devices": { + "message": "Devices" + }, + "accessAttemptBy": { + "message": "Access attempt by $EMAIL$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + } + } + }, + "confirmAccess": { + "message": "Confirm access" + }, + "denyAccess": { + "message": "Deny access" + }, + "time": { + "message": "Time" + }, + "deviceType": { + "message": "Device Type" + }, + "loginRequest": { + "message": "Login request" + }, + "thisRequestIsNoLongerValid": { + "message": "This request is no longer valid." + }, + "areYouTryingToAccessYourAccount": { + "message": "Are you trying to access your account?" + }, + "logInConfirmedForEmailOnDevice": { + "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "placeholders": { + "email": { + "content": "$1", + "example": "name@example.com" + }, + "device": { + "content": "$2", + "example": "iOS" + } + } + }, + "youDeniedALogInAttemptFromAnotherDevice": { + "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + }, + "loginRequestHasAlreadyExpired": { + "message": "Login request has already expired." + }, + "justNow": { + "message": "Just now" + }, + "requestedXMinutesAgo": { + "message": "Requested $MINUTES$ minutes ago", + "placeholders": { + "minutes": { + "content": "$1", + "example": "5" + } + } + }, "deviceApprovalRequired": { "message": "裝置需要取得核准。請在下面選擇一個核准選項:" }, @@ -3565,6 +3712,12 @@ "requestAdminApproval": { "message": "要求管理員核准" }, + "unableToCompleteLogin": { + "message": "Unable to complete login" + }, + "loginOnTrustedDeviceOrAskAdminToAssignPassword": { + "message": "You need to log in on a trusted device or ask your administrator to assign you a password." + }, "ssoIdentifierRequired": { "message": "需要組織 SSO 識別碼。" }, @@ -4244,6 +4397,26 @@ "message": "常見格式", "description": "Label indicating the most common import formats" }, + "uriMatchDefaultStrategyHint": { + "message": "URI match detection is how Bitwarden identifies autofill suggestions.", + "description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item." + }, + "regExAdvancedOptionWarning": { + "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy" + }, + "startsWithAdvancedOptionWarning": { + "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.", + "description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy" + }, + "uriMatchWarningDialogLink": { + "message": "More about match detection", + "description": "Link to match detection docs on warning dialog for advance match strategy" + }, + "uriAdvancedOption": { + "message": "Advanced options", + "description": "Advanced option placeholder for uri option component" + }, "confirmContinueToBrowserSettingsTitle": { "message": "繼續前往瀏覽器設定?", "description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page" @@ -4427,17 +4600,17 @@ } } }, - "copyFieldValue": { - "message": "Copy $FIELD$, $VALUE$", + "copyFieldCipherName": { + "message": "Copy $FIELD$, $CIPHERNAME$", "description": "Title for a button that copies a field value to the clipboard.", "placeholders": { "field": { "content": "$1", "example": "Username" }, - "value": { + "ciphername": { "content": "$2", - "example": "Foo" + "example": "Login Item" } } }, diff --git a/apps/browser/src/auth/popup/change-password/extension-change-password.service.spec.ts b/apps/browser/src/auth/popup/change-password/extension-change-password.service.spec.ts new file mode 100644 index 00000000000..a6a6b905218 --- /dev/null +++ b/apps/browser/src/auth/popup/change-password/extension-change-password.service.spec.ts @@ -0,0 +1,50 @@ +import { MockProxy, mock } from "jest-mock-extended"; + +import { ChangePasswordService } from "@bitwarden/angular/auth/password-management/change-password"; +import { MasterPasswordApiService } from "@bitwarden/common/auth/abstractions/master-password-api.service.abstraction"; +import { InternalMasterPasswordServiceAbstraction } from "@bitwarden/common/key-management/master-password/abstractions/master-password.service.abstraction"; +import { KeyService } from "@bitwarden/key-management"; + +import { BrowserApi } from "../../../platform/browser/browser-api"; +import BrowserPopupUtils from "../../../platform/browser/browser-popup-utils"; + +import { ExtensionChangePasswordService } from "./extension-change-password.service"; + +describe("ExtensionChangePasswordService", () => { + let keyService: MockProxy; + let masterPasswordApiService: MockProxy; + let masterPasswordService: MockProxy; + let window: MockProxy; + + let changePasswordService: ChangePasswordService; + + beforeEach(() => { + keyService = mock(); + masterPasswordApiService = mock(); + masterPasswordService = mock(); + window = mock(); + + changePasswordService = new ExtensionChangePasswordService( + keyService, + masterPasswordApiService, + masterPasswordService, + window, + ); + }); + + it("should instantiate the service", () => { + expect(changePasswordService).toBeDefined(); + }); + + it("should close the browser extension popout", () => { + const closePopupSpy = jest.spyOn(BrowserApi, "closePopup"); + const browserPopupUtilsInPopupSpy = jest + .spyOn(BrowserPopupUtils, "inPopout") + .mockReturnValue(true); + + changePasswordService.closeBrowserExtensionPopout?.(); + + expect(closePopupSpy).toHaveBeenCalledWith(window); + expect(browserPopupUtilsInPopupSpy).toHaveBeenCalledWith(window); + }); +}); diff --git a/apps/browser/src/auth/popup/change-password/extension-change-password.service.ts b/apps/browser/src/auth/popup/change-password/extension-change-password.service.ts new file mode 100644 index 00000000000..dd2ce48d27a --- /dev/null +++ b/apps/browser/src/auth/popup/change-password/extension-change-password.service.ts @@ -0,0 +1,29 @@ +import { + DefaultChangePasswordService, + ChangePasswordService, +} from "@bitwarden/angular/auth/password-management/change-password"; +import { MasterPasswordApiService } from "@bitwarden/common/auth/abstractions/master-password-api.service.abstraction"; +import { InternalMasterPasswordServiceAbstraction } from "@bitwarden/common/key-management/master-password/abstractions/master-password.service.abstraction"; +import { KeyService } from "@bitwarden/key-management"; + +import { BrowserApi } from "../../../platform/browser/browser-api"; +import BrowserPopupUtils from "../../../platform/browser/browser-popup-utils"; + +export class ExtensionChangePasswordService + extends DefaultChangePasswordService + implements ChangePasswordService +{ + constructor( + protected keyService: KeyService, + protected masterPasswordApiService: MasterPasswordApiService, + protected masterPasswordService: InternalMasterPasswordServiceAbstraction, + private win: Window, + ) { + super(keyService, masterPasswordApiService, masterPasswordService); + } + closeBrowserExtensionPopout(): void { + if (BrowserPopupUtils.inPopout(this.win)) { + BrowserApi.closePopup(this.win); + } + } +} diff --git a/apps/browser/src/auth/popup/set-password.component.html b/apps/browser/src/auth/popup/set-password.component.html deleted file mode 100644 index 71a2e3ac588..00000000000 --- a/apps/browser/src/auth/popup/set-password.component.html +++ /dev/null @@ -1,160 +0,0 @@ -
-
-
- -
-

- {{ "setMasterPassword" | i18n }} -

-
- -
-
-
-
- -
-
-
-

- {{ "orgPermissionsUpdatedMustSetPassword" | i18n }} -

- - -

{{ "orgRequiresYouToSetPassword" | i18n }}

-
- - - {{ "resetPasswordAutoEnrollInviteWarning" | i18n }} - - - -
-
-
-
-
-
- - -
-
- -
-
- - - -
-
- -
-
-
-
-
-
- - -
-
- -
-
-
-
-
-
-
-
- - -
-
- -
-
-
-
diff --git a/apps/browser/src/auth/popup/set-password.component.ts b/apps/browser/src/auth/popup/set-password.component.ts deleted file mode 100644 index 2a796854531..00000000000 --- a/apps/browser/src/auth/popup/set-password.component.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Component } from "@angular/core"; - -import { SetPasswordComponent as BaseSetPasswordComponent } from "@bitwarden/angular/auth/components/set-password.component"; - -@Component({ - selector: "app-set-password", - templateUrl: "set-password.component.html", - standalone: false, -}) -export class SetPasswordComponent extends BaseSetPasswordComponent {} diff --git a/apps/browser/src/auth/popup/settings/account-security.component.html b/apps/browser/src/auth/popup/settings/account-security.component.html index d835497d9be..3de1cc81a69 100644 --- a/apps/browser/src/auth/popup/settings/account-security.component.html +++ b/apps/browser/src/auth/popup/settings/account-security.component.html @@ -102,6 +102,18 @@ + + +

{{ "manageDevices" | i18n }}

+
+ + + +
+

{{ "otherOptions" | i18n }}

diff --git a/apps/browser/src/auth/popup/settings/account-security.component.ts b/apps/browser/src/auth/popup/settings/account-security.component.ts index 4f9e1f7414a..6c072532a5d 100644 --- a/apps/browser/src/auth/popup/settings/account-security.component.ts +++ b/apps/browser/src/auth/popup/settings/account-security.component.ts @@ -32,6 +32,7 @@ import { getFirstPolicy } from "@bitwarden/common/admin-console/services/policy/ import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction"; import { getUserId } from "@bitwarden/common/auth/services/account.service"; +import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; import { VaultTimeout, VaultTimeoutAction, @@ -40,6 +41,7 @@ import { VaultTimeoutSettingsService, VaultTimeoutStringType, } from "@bitwarden/common/key-management/vault-timeout"; +import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service"; @@ -113,6 +115,7 @@ export class AccountSecurityComponent implements OnInit, OnDestroy { biometricUnavailabilityReason: string; showChangeMasterPass = true; pinEnabled$: Observable = of(true); + extensionLoginApprovalFlagEnabled = false; form = this.formBuilder.group({ vaultTimeout: [null as VaultTimeout | null], @@ -155,6 +158,7 @@ export class AccountSecurityComponent implements OnInit, OnDestroy { private biometricsService: BiometricsService, private vaultNudgesService: NudgesService, private validationService: ValidationService, + private configService: ConfigService, ) {} async ngOnInit() { @@ -235,6 +239,10 @@ export class AccountSecurityComponent implements OnInit, OnDestroy { }; this.form.patchValue(initialValues, { emitEvent: false }); + this.extensionLoginApprovalFlagEnabled = await this.configService.getFeatureFlag( + FeatureFlag.PM14938_BrowserExtensionLoginApproval, + ); + timer(0, 1000) .pipe( switchMap(async () => { diff --git a/apps/browser/src/auth/popup/settings/extension-device-management.component.html b/apps/browser/src/auth/popup/settings/extension-device-management.component.html new file mode 100644 index 00000000000..aadbe6b81d0 --- /dev/null +++ b/apps/browser/src/auth/popup/settings/extension-device-management.component.html @@ -0,0 +1,11 @@ + + + + + + + +
+ +
+
diff --git a/apps/browser/src/auth/popup/settings/extension-device-management.component.ts b/apps/browser/src/auth/popup/settings/extension-device-management.component.ts new file mode 100644 index 00000000000..793965db141 --- /dev/null +++ b/apps/browser/src/auth/popup/settings/extension-device-management.component.ts @@ -0,0 +1,22 @@ +import { Component } from "@angular/core"; + +import { DeviceManagementComponent } from "@bitwarden/angular/auth/device-management/device-management.component"; +import { I18nPipe } from "@bitwarden/ui-common"; + +import { PopOutComponent } from "../../../platform/popup/components/pop-out.component"; +import { PopupHeaderComponent } from "../../../platform/popup/layout/popup-header.component"; +import { PopupPageComponent } from "../../../platform/popup/layout/popup-page.component"; + +@Component({ + standalone: true, + selector: "extension-device-management", + templateUrl: "extension-device-management.component.html", + imports: [ + DeviceManagementComponent, + I18nPipe, + PopOutComponent, + PopupHeaderComponent, + PopupPageComponent, + ], +}) +export class ExtensionDeviceManagementComponent {} diff --git a/apps/browser/src/auth/popup/update-temp-password.component.html b/apps/browser/src/auth/popup/update-temp-password.component.html deleted file mode 100644 index 0ce82aa20cf..00000000000 --- a/apps/browser/src/auth/popup/update-temp-password.component.html +++ /dev/null @@ -1,142 +0,0 @@ -
-
-
- -
-

- {{ "updateMasterPassword" | i18n }} -

-
- -
-
-
- - {{ masterPasswordWarningText }} - - - -
-
-
-
-
- - -
-
-
-
-
-
-
-
-
-
- - -
-
- -
-
- - -
-
-
-
-
-
-
- - -
-
- -
-
-
-
-
-
-
- - -
-
- -
-
-
diff --git a/apps/browser/src/auth/popup/update-temp-password.component.ts b/apps/browser/src/auth/popup/update-temp-password.component.ts deleted file mode 100644 index e8cf64b7548..00000000000 --- a/apps/browser/src/auth/popup/update-temp-password.component.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Component } from "@angular/core"; -import { firstValueFrom } from "rxjs"; - -import { UpdateTempPasswordComponent as BaseUpdateTempPasswordComponent } from "@bitwarden/angular/auth/components/update-temp-password.component"; - -import { postLogoutMessageListener$ } from "./utils/post-logout-message-listener"; - -@Component({ - selector: "app-update-temp-password", - templateUrl: "update-temp-password.component.html", - standalone: false, -}) -export class UpdateTempPasswordComponent extends BaseUpdateTempPasswordComponent { - onSuccessfulChangePassword: () => Promise = this.doOnSuccessfulChangePassword.bind(this); - - private async doOnSuccessfulChangePassword() { - // start listening for "switchAccountFinish" or "doneLoggingOut" - const messagePromise = firstValueFrom(postLogoutMessageListener$); - this.messagingService.send("logout"); - // wait for messages - const command = await messagePromise; - - // doneLoggingOut already has a message handler that will navigate us - if (command === "switchAccountFinish") { - // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. - // eslint-disable-next-line @typescript-eslint/no-floating-promises - this.router.navigate(["/"]); - } - } -} diff --git a/apps/browser/src/auth/services/auth-status-badge-updater.service.ts b/apps/browser/src/auth/services/auth-status-badge-updater.service.ts new file mode 100644 index 00000000000..4205ebc665d --- /dev/null +++ b/apps/browser/src/auth/services/auth-status-badge-updater.service.ts @@ -0,0 +1,56 @@ +import { mergeMap, of, switchMap } from "rxjs"; + +import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; +import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; + +import { BadgeService } from "../../platform/badge/badge.service"; +import { BadgeIcon } from "../../platform/badge/icon"; +import { BadgeStatePriority } from "../../platform/badge/priority"; +import { Unset } from "../../platform/badge/state"; + +const StateName = "auth-status"; + +export class AuthStatusBadgeUpdaterService { + constructor( + private badgeService: BadgeService, + private accountService: AccountService, + private authService: AuthService, + ) { + this.accountService.activeAccount$ + .pipe( + switchMap((account) => + account + ? this.authService.authStatusFor$(account.id) + : of(AuthenticationStatus.LoggedOut), + ), + mergeMap(async (authStatus) => { + switch (authStatus) { + case AuthenticationStatus.LoggedOut: { + await this.badgeService.setState(StateName, BadgeStatePriority.High, { + icon: BadgeIcon.LoggedOut, + backgroundColor: Unset, + text: Unset, + }); + break; + } + case AuthenticationStatus.Locked: { + await this.badgeService.setState(StateName, BadgeStatePriority.High, { + icon: BadgeIcon.Locked, + backgroundColor: Unset, + text: Unset, + }); + break; + } + case AuthenticationStatus.Unlocked: { + await this.badgeService.setState(StateName, BadgeStatePriority.Low, { + icon: BadgeIcon.Unlocked, + }); + break; + } + } + }), + ) + .subscribe(); + } +} diff --git a/apps/browser/src/auth/services/extension-device-management-component.service.ts b/apps/browser/src/auth/services/extension-device-management-component.service.ts new file mode 100644 index 00000000000..2585ba3198c --- /dev/null +++ b/apps/browser/src/auth/services/extension-device-management-component.service.ts @@ -0,0 +1,15 @@ +import { DeviceManagementComponentServiceAbstraction } from "@bitwarden/angular/auth/device-management/device-management-component.service.abstraction"; + +/** + * Browser extension implementation of the device management component service + */ +export class ExtensionDeviceManagementComponentService + implements DeviceManagementComponentServiceAbstraction +{ + /** + * Don't show header information in browser extension client + */ + showHeaderInformation(): boolean { + return false; + } +} diff --git a/apps/browser/src/auth/services/extension-two-factor-auth-email-component.service.spec.ts b/apps/browser/src/auth/services/extension-two-factor-auth-email-component.service.spec.ts deleted file mode 100644 index 432d00047a2..00000000000 --- a/apps/browser/src/auth/services/extension-two-factor-auth-email-component.service.spec.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { MockProxy, mock } from "jest-mock-extended"; - -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; -import { DialogService } from "@bitwarden/components"; - -// Must mock modules before importing -jest.mock("../popup/utils/auth-popout-window", () => { - const originalModule = jest.requireActual("../popup/utils/auth-popout-window"); - - return { - ...originalModule, // avoid losing the original module's exports - openTwoFactorAuthEmailPopout: jest.fn(), - }; -}); - -jest.mock("../../platform/browser/browser-popup-utils", () => ({ - inPopup: jest.fn(), -})); - -// FIXME (PM-22628): Popup imports are forbidden in background -// eslint-disable-next-line no-restricted-imports -import { openTwoFactorAuthEmailPopout } from "../../auth/popup/utils/auth-popout-window"; -import BrowserPopupUtils from "../../platform/browser/browser-popup-utils"; - -import { ExtensionTwoFactorAuthEmailComponentService } from "./extension-two-factor-auth-email-component.service"; - -describe("ExtensionTwoFactorAuthEmailComponentService", () => { - let extensionTwoFactorAuthEmailComponentService: ExtensionTwoFactorAuthEmailComponentService; - - let dialogService: MockProxy; - let window: MockProxy; - let configService: MockProxy; - - beforeEach(() => { - jest.clearAllMocks(); - - dialogService = mock(); - window = mock(); - configService = mock(); - - extensionTwoFactorAuthEmailComponentService = new ExtensionTwoFactorAuthEmailComponentService( - dialogService, - window, - configService, - ); - }); - - describe("openPopoutIfApprovedForEmail2fa", () => { - it("should open a popout if the user confirms the warning to popout the extension when in the popup", async () => { - // Arrange - configService.getFeatureFlag.mockResolvedValue(false); - dialogService.openSimpleDialog.mockResolvedValue(true); - - jest.spyOn(BrowserPopupUtils, "inPopup").mockReturnValue(true); - - // Act - await extensionTwoFactorAuthEmailComponentService.openPopoutIfApprovedForEmail2fa(); - - // Assert - expect(dialogService.openSimpleDialog).toHaveBeenCalledWith({ - title: { key: "warning" }, - content: { key: "popup2faCloseMessage" }, - type: "warning", - }); - - expect(openTwoFactorAuthEmailPopout).toHaveBeenCalled(); - }); - - it("should not open a popout if the user cancels the warning to popout the extension when in the popup", async () => { - // Arrange - configService.getFeatureFlag.mockResolvedValue(false); - dialogService.openSimpleDialog.mockResolvedValue(false); - - jest.spyOn(BrowserPopupUtils, "inPopup").mockReturnValue(true); - - // Act - await extensionTwoFactorAuthEmailComponentService.openPopoutIfApprovedForEmail2fa(); - - // Assert - expect(dialogService.openSimpleDialog).toHaveBeenCalledWith({ - title: { key: "warning" }, - content: { key: "popup2faCloseMessage" }, - type: "warning", - }); - - expect(openTwoFactorAuthEmailPopout).not.toHaveBeenCalled(); - }); - - it("should not open a popout if not in the popup", async () => { - // Arrange - configService.getFeatureFlag.mockResolvedValue(false); - jest.spyOn(BrowserPopupUtils, "inPopup").mockReturnValue(false); - - // Act - await extensionTwoFactorAuthEmailComponentService.openPopoutIfApprovedForEmail2fa(); - - // Assert - expect(dialogService.openSimpleDialog).not.toHaveBeenCalled(); - expect(openTwoFactorAuthEmailPopout).not.toHaveBeenCalled(); - }); - - it("does not prompt or open a popout if the feature flag is enabled", async () => { - configService.getFeatureFlag.mockResolvedValue(true); - jest.spyOn(BrowserPopupUtils, "inPopup").mockReturnValue(true); - - await extensionTwoFactorAuthEmailComponentService.openPopoutIfApprovedForEmail2fa(); - - expect(dialogService.openSimpleDialog).not.toHaveBeenCalled(); - expect(openTwoFactorAuthEmailPopout).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/apps/browser/src/auth/services/extension-two-factor-auth-email-component.service.ts b/apps/browser/src/auth/services/extension-two-factor-auth-email-component.service.ts deleted file mode 100644 index e9cb53f935e..00000000000 --- a/apps/browser/src/auth/services/extension-two-factor-auth-email-component.service.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { - DefaultTwoFactorAuthEmailComponentService, - TwoFactorAuthEmailComponentService, -} from "@bitwarden/auth/angular"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; -import { DialogService } from "@bitwarden/components"; - -// FIXME (PM-22628): Popup imports are forbidden in background -// eslint-disable-next-line no-restricted-imports -import { openTwoFactorAuthEmailPopout } from "../../auth/popup/utils/auth-popout-window"; -import BrowserPopupUtils from "../../platform/browser/browser-popup-utils"; - -// TODO: popup state persistence should eventually remove the need for this service -export class ExtensionTwoFactorAuthEmailComponentService - extends DefaultTwoFactorAuthEmailComponentService - implements TwoFactorAuthEmailComponentService -{ - constructor( - private dialogService: DialogService, - private window: Window, - private configService: ConfigService, - ) { - super(); - } - - async openPopoutIfApprovedForEmail2fa(): Promise { - const isTwoFactorFormPersistenceEnabled = await this.configService.getFeatureFlag( - FeatureFlag.PM9115_TwoFactorExtensionDataPersistence, - ); - - if (isTwoFactorFormPersistenceEnabled) { - // If the feature flag is enabled, we don't need to prompt the user to open the popout - return; - } - - if (BrowserPopupUtils.inPopup(this.window)) { - const confirmed = await this.dialogService.openSimpleDialog({ - title: { key: "warning" }, - content: { key: "popup2faCloseMessage" }, - type: "warning", - }); - if (confirmed) { - await openTwoFactorAuthEmailPopout(); - this.window.close(); - } - } - } -} diff --git a/apps/browser/src/autofill/background/auto-submit-login.background.ts b/apps/browser/src/autofill/background/auto-submit-login.background.ts index dcafe21b63c..dfdfa0f4d67 100644 --- a/apps/browser/src/autofill/background/auto-submit-login.background.ts +++ b/apps/browser/src/autofill/background/auto-submit-login.background.ts @@ -1,12 +1,12 @@ // FIXME: Update this file to be type safe and remove this and next line // @ts-strict-ignore -import { firstValueFrom, switchMap } from "rxjs"; +import { filter, firstValueFrom, of, switchMap } from "rxjs"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { PolicyType } from "@bitwarden/common/admin-console/enums"; import { Policy } from "@bitwarden/common/admin-console/models/domain/policy"; import { getFirstPolicy } from "@bitwarden/common/admin-console/services/policy/default-policy.service"; -import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { Account, AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; import { getUserId } from "@bitwarden/common/auth/services/account.service"; @@ -51,9 +51,14 @@ export class AutoSubmitLoginBackground implements AutoSubmitLoginBackgroundAbstr * Initializes the auto-submit login policy. If the policy is not enabled, it * will trigger a removal of any established listeners. */ + async init() { - this.accountService.activeAccount$ + this.authService.activeAccountStatus$ .pipe( + switchMap((value) => + value === AuthenticationStatus.Unlocked ? this.accountService.activeAccount$ : of(null), + ), + filter((account): account is Account => account !== null), getUserId, switchMap((userId) => this.policyService.policiesByType$(PolicyType.AutomaticAppLogIn, userId), diff --git a/apps/browser/src/autofill/background/notification.background.ts b/apps/browser/src/autofill/background/notification.background.ts index 65c1ca0277f..15baccf3560 100644 --- a/apps/browser/src/autofill/background/notification.background.ts +++ b/apps/browser/src/autofill/background/notification.background.ts @@ -1030,18 +1030,23 @@ export default class NotificationBackground { private async getCollectionData( message: NotificationBackgroundExtensionMessage, ): Promise { - const collections = (await this.collectionService.getAllDecrypted()).reduce( - (acc, collection) => { - if (collection.organizationId === message?.orgId) { - acc.push({ - id: collection.id, - name: collection.name, - organizationId: collection.organizationId, - }); - } - return acc; - }, - [], + const collections = await firstValueFrom( + this.accountService.activeAccount$.pipe( + getUserId, + switchMap((userId) => this.collectionService.decryptedCollections$(userId)), + map((collections) => + collections.reduce((acc, collection) => { + if (collection.organizationId === message?.orgId) { + acc.push({ + id: collection.id, + name: collection.name, + organizationId: collection.organizationId, + }); + } + return acc; + }, []), + ), + ), ); return collections; } diff --git a/apps/browser/src/autofill/background/tabs.background.spec.ts b/apps/browser/src/autofill/background/tabs.background.spec.ts index 4473eb452f3..635ab8504a1 100644 --- a/apps/browser/src/autofill/background/tabs.background.spec.ts +++ b/apps/browser/src/autofill/background/tabs.background.spec.ts @@ -73,7 +73,6 @@ describe("TabsBackground", () => { triggerWindowOnFocusedChangedEvent(10); await flushPromises(); - expect(mainBackground.refreshBadge).toHaveBeenCalled(); expect(mainBackground.refreshMenu).toHaveBeenCalled(); expect(overlayBackground.updateOverlayCiphers).toHaveBeenCalled(); }); @@ -91,7 +90,6 @@ describe("TabsBackground", () => { triggerTabOnActivatedEvent({ tabId: 10, windowId: 20 }); await flushPromises(); - expect(mainBackground.refreshBadge).toHaveBeenCalled(); expect(mainBackground.refreshMenu).toHaveBeenCalled(); expect(overlayBackground.updateOverlayCiphers).toHaveBeenCalled(); }); @@ -127,7 +125,6 @@ describe("TabsBackground", () => { triggerTabOnReplacedEvent(10, 20); await flushPromises(); - expect(mainBackground.refreshBadge).toHaveBeenCalled(); expect(mainBackground.refreshMenu).toHaveBeenCalled(); expect(overlayBackground.updateOverlayCiphers).toHaveBeenCalled(); }); @@ -160,7 +157,6 @@ describe("TabsBackground", () => { triggerTabOnUpdatedEvent(focusedWindowId, { status: "loading" }, tab); await flushPromises(); - expect(mainBackground.refreshBadge).not.toHaveBeenCalled(); expect(mainBackground.refreshMenu).not.toHaveBeenCalled(); expect(overlayBackground.updateOverlayCiphers).not.toHaveBeenCalled(); }); @@ -170,7 +166,6 @@ describe("TabsBackground", () => { triggerTabOnUpdatedEvent(focusedWindowId, { status: "loading" }, tab); await flushPromises(); - expect(mainBackground.refreshBadge).not.toHaveBeenCalled(); expect(mainBackground.refreshMenu).not.toHaveBeenCalled(); expect(overlayBackground.updateOverlayCiphers).not.toHaveBeenCalled(); }); @@ -180,7 +175,6 @@ describe("TabsBackground", () => { triggerTabOnUpdatedEvent(focusedWindowId, { status: "loading" }, tab); await flushPromises(); - expect(mainBackground.refreshBadge).not.toHaveBeenCalled(); expect(mainBackground.refreshMenu).not.toHaveBeenCalled(); expect(overlayBackground.updateOverlayCiphers).not.toHaveBeenCalled(); }); @@ -190,7 +184,6 @@ describe("TabsBackground", () => { triggerTabOnUpdatedEvent(focusedWindowId, { status: "loading" }, tab); await flushPromises(); - expect(mainBackground.refreshBadge).not.toHaveBeenCalled(); expect(mainBackground.refreshMenu).not.toHaveBeenCalled(); }); @@ -205,7 +198,6 @@ describe("TabsBackground", () => { triggerTabOnUpdatedEvent(focusedWindowId, { status: "loading" }, tab); await flushPromises(); - expect(mainBackground.refreshBadge).toHaveBeenCalled(); expect(mainBackground.refreshMenu).toHaveBeenCalled(); expect(overlayBackground.updateOverlayCiphers).toHaveBeenCalled(); }); diff --git a/apps/browser/src/autofill/background/tabs.background.ts b/apps/browser/src/autofill/background/tabs.background.ts index c093f1a3b00..4d520680980 100644 --- a/apps/browser/src/autofill/background/tabs.background.ts +++ b/apps/browser/src/autofill/background/tabs.background.ts @@ -102,7 +102,6 @@ export default class TabsBackground { this.main.onUpdatedRan = true; await this.notificationBackground.checkNotificationQueue(tab); - await this.main.refreshBadge(); await this.main.refreshMenu(); this.main.messagingService.send("tabChanged"); }; @@ -122,7 +121,6 @@ export default class TabsBackground { */ private updateCurrentTabData = async () => { await Promise.all([ - this.main.refreshBadge(), this.main.refreshMenu(), this.overlayBackground.updateOverlayCiphers(false), ]); diff --git a/apps/browser/src/autofill/content/abstractions/content-message-handler.ts b/apps/browser/src/autofill/content/abstractions/content-message-handler.ts index 8231bd688c9..f413ace9432 100644 --- a/apps/browser/src/autofill/content/abstractions/content-message-handler.ts +++ b/apps/browser/src/autofill/content/abstractions/content-message-handler.ts @@ -1,3 +1,5 @@ +import { ExtensionPageUrls } from "@bitwarden/common/vault/enums"; + type ContentMessageWindowData = { command: string; lastpass?: boolean; @@ -5,6 +7,7 @@ type ContentMessageWindowData = { state?: string; data?: string; remember?: boolean; + url?: ExtensionPageUrls; }; type ContentMessageWindowEventParams = { data: ContentMessageWindowData; diff --git a/apps/browser/src/autofill/content/content-message-handler.ts b/apps/browser/src/autofill/content/content-message-handler.ts index 60f093f8c10..c57b2d959f3 100644 --- a/apps/browser/src/autofill/content/content-message-handler.ts +++ b/apps/browser/src/autofill/content/content-message-handler.ts @@ -1,3 +1,4 @@ +import { ExtensionPageUrls } from "@bitwarden/common/vault/enums"; import { VaultMessages } from "@bitwarden/common/vault/enums/vault-messages.enum"; import { @@ -18,6 +19,8 @@ const windowMessageHandlers: ContentMessageWindowEventHandlers = { duoResult: ({ data, referrer }: { data: any; referrer: string }) => handleDuoResultMessage(data, referrer), [VaultMessages.OpenAtRiskPasswords]: () => handleOpenAtRiskPasswordsMessage(), + [VaultMessages.OpenBrowserExtensionToUrl]: ({ data }) => + handleOpenBrowserExtensionToUrlMessage(data), }; /** @@ -73,10 +76,15 @@ function handleWebAuthnResultMessage(data: ContentMessageWindowData, referrer: s sendExtensionRuntimeMessage({ command, data: data.data, remember, referrer }); } +/** @deprecated use {@link handleOpenBrowserExtensionToUrlMessage} */ function handleOpenAtRiskPasswordsMessage() { sendExtensionRuntimeMessage({ command: VaultMessages.OpenAtRiskPasswords }); } +function handleOpenBrowserExtensionToUrlMessage({ url }: { url?: ExtensionPageUrls }) { + sendExtensionRuntimeMessage({ command: VaultMessages.OpenBrowserExtensionToUrl, url }); +} + /** * Handles the window message event. * diff --git a/apps/browser/src/autofill/notification/bar.ts b/apps/browser/src/autofill/notification/bar.ts index a83e9fce531..285ae4aa257 100644 --- a/apps/browser/src/autofill/notification/bar.ts +++ b/apps/browser/src/autofill/notification/bar.ts @@ -12,7 +12,7 @@ import { NotificationConfirmationContainer } from "../content/components/notific import { NotificationContainer } from "../content/components/notification/container"; import { selectedFolder as selectedFolderSignal } from "../content/components/signals/selected-folder"; import { selectedVault as selectedVaultSignal } from "../content/components/signals/selected-vault"; -import { buildSvgDomElement, matchAllowedColorSchemes } from "../utils"; +import { buildSvgDomElement } from "../utils"; import { circleCheckIcon } from "../utils/svg-icons"; import { @@ -238,15 +238,6 @@ async function initNotificationBar(message: NotificationBarWindowMessage) { const i18n = getI18n(); const resolvedTheme = getResolvedTheme(theme ?? ThemeTypes.Light); - // https://drafts.csswg.org/css-color-adjust-1/#preferred - // Prevents preferred color scheme from forcing an opaque background in the iframe - const colorScheme = new URLSearchParams(window.location.search).get("colorScheme") || ""; - const allowedColorScheme = matchAllowedColorSchemes(colorScheme); - const meta = document.createElement("meta"); - meta.setAttribute("name", "color-scheme"); - meta.setAttribute("content", allowedColorScheme); - document.getElementsByTagName("head")[0].appendChild(meta); - if (useComponentBar) { const resolvedType = resolveNotificationType(notificationBarIframeInitData); const headerMessage = getNotificationHeaderMessage(i18n, resolvedType); diff --git a/apps/browser/src/autofill/overlay/notifications/content/__snapshots__/overlay-notifications-content.service.spec.ts.snap b/apps/browser/src/autofill/overlay/notifications/content/__snapshots__/overlay-notifications-content.service.spec.ts.snap index 1b5d9a73888..18c3baa876c 100644 --- a/apps/browser/src/autofill/overlay/notifications/content/__snapshots__/overlay-notifications-content.service.spec.ts.snap +++ b/apps/browser/src/autofill/overlay/notifications/content/__snapshots__/overlay-notifications-content.service.spec.ts.snap @@ -7,8 +7,8 @@ exports[`OverlayNotificationsContentService opening the notification bar creates >