diff --git a/.eslintignore b/.eslintignore index 930b468de83..e1bc65d74b1 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,6 +2,7 @@ **/dist **/coverage .angular +storybook-static **/node_modules diff --git a/.eslintrc.json b/.eslintrc.json index 14b9a888444..6a5fc5b83f3 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -68,6 +68,7 @@ } ], "rxjs-angular/prefer-takeuntil": "error", + "rxjs/no-exposed-subjects": ["error", { "allowProtected": true }], "no-restricted-syntax": [ "error", { diff --git a/.github/whitelist-capital-letters.txt b/.github/whitelist-capital-letters.txt index 772c7209e20..a8ce05f180e 100644 --- a/.github/whitelist-capital-letters.txt +++ b/.github/whitelist-capital-letters.txt @@ -1,3 +1,20 @@ +./apps/browser/src/safari/desktop/Assets.xcassets +./apps/browser/src/safari/desktop/Assets.xcassets/AccentColor.colorset +./apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset +./apps/browser/src/safari/desktop/Base.lproj +./apps/browser/src/services/vaultTimeout +./apps/browser/store/windows/Assets +./apps/desktop/src/models/nativeMessaging +./apps/desktop/src/models/nativeMessaging/encryptedMessagePayloads +./apps/desktop/src/models/nativeMessaging/encryptedMessageResponses +./libs/common/spec/misc/logInStrategies +./libs/common/src/abstractions/fileDownload +./libs/common/src/abstractions/userVerification +./libs/common/src/abstractions/vaultTimeout +./libs/common/src/emailForwarders +./libs/common/src/misc/logInStrategies +./libs/common/src/services/userVerification +./libs/common/src/services/vaultTimeout ./bitwarden_license/README.md ./bitwarden_license/bit-web/src/app/providers/services/webProvider.service.ts ./libs/angular/src/directives/cipherListVirtualScroll.directive.ts @@ -22,65 +39,6 @@ ./libs/common/spec/misc/logInStrategies/apiLogIn.strategy.spec.ts ./libs/common/spec/misc/logInStrategies/passwordLogIn.strategy.spec.ts ./libs/common/spec/misc/logInStrategies/ssoLogIn.strategy.spec.ts -./libs/common/spec/importers/testData/safeInCloud/testData.xml.ts -./libs/common/spec/importers/testData/safariCsv/oldSimplePasswordData.csv.ts -./libs/common/spec/importers/testData/safariCsv/simplePasswordData.csv.ts -./libs/common/spec/importers/testData/keeperJson/testData.ts -./libs/common/spec/importers/testData/bitwardenJson/passwordProtected.json.ts -./libs/common/spec/importers/testData/onePassword1Pux/SoftwareLicense.ts -./libs/common/spec/importers/testData/onePassword1Pux/SecureNote.ts -./libs/common/spec/importers/testData/onePassword1Pux/Emailfield.ts -./libs/common/spec/importers/testData/onePassword1Pux/CreditCard.ts -./libs/common/spec/importers/testData/onePassword1Pux/LoginData.ts -./libs/common/spec/importers/testData/onePassword1Pux/WirelessRouter.ts -./libs/common/spec/importers/testData/onePassword1Pux/SanitizedExport.ts -./libs/common/spec/importers/testData/onePassword1Pux/Membership.ts -./libs/common/spec/importers/testData/onePassword1Pux/OutdoorLicense.ts -./libs/common/spec/importers/testData/onePassword1Pux/EmailAccount.ts -./libs/common/spec/importers/testData/onePassword1Pux/Password.ts -./libs/common/spec/importers/testData/onePassword1Pux/RewardsProgram.ts -./libs/common/spec/importers/testData/onePassword1Pux/EmailfieldOnIdentity_Prefilled.ts -./libs/common/spec/importers/testData/onePassword1Pux/EmailfieldOnIdentity.ts -./libs/common/spec/importers/testData/onePassword1Pux/DriversLicense.ts -./libs/common/spec/importers/testData/onePassword1Pux/Database.ts -./libs/common/spec/importers/testData/onePassword1Pux/Passport.ts -./libs/common/spec/importers/testData/onePassword1Pux/Onepux_example.ts -./libs/common/spec/importers/testData/onePassword1Pux/BankAccount.ts -./libs/common/spec/importers/testData/onePassword1Pux/MedicalRecord.ts -./libs/common/spec/importers/testData/onePassword1Pux/IdentityData.ts -./libs/common/spec/importers/testData/onePassword1Pux/Server.ts -./libs/common/spec/importers/testData/onePassword1Pux/APICredentials.ts -./libs/common/spec/importers/testData/onePassword1Pux/SSN.ts -./libs/common/spec/importers/testData/onePasswordCsv/creditCard.windows.csv.ts -./libs/common/spec/importers/testData/onePasswordCsv/creditCard.mac.csv.ts -./libs/common/spec/importers/testData/onePasswordCsv/multipleItems.windows.csv.ts -./libs/common/spec/importers/testData/onePasswordCsv/multipleItems.mac.csv.ts -./libs/common/spec/importers/testData/nordpassCsv/nordpass.secureNote.csv.ts -./libs/common/spec/importers/testData/dashlaneCsv/multiplePersonalInfo.csv.ts -./libs/common/spec/importers/testData/dashlaneCsv/personalInfo.csv.ts -./libs/common/spec/importers/testData/mykiCsv/UserIdCard.csv.ts -./libs/common/spec/importers/testData/mykiCsv/UserTwofa.csv.ts -./libs/common/spec/importers/testData/mykiCsv/UserNote.csv.ts -./libs/common/spec/importers/testData/mykiCsv/UserAccount.csv.ts -./libs/common/spec/importers/testData/mykiCsv/UserIdentity.csv.ts -./libs/common/spec/importers/testData/mykiCsv/UserCreditCard.csv.ts -./libs/common/spec/importers/testData/firefoxCsv/firefoxAccountsData.csv.ts -./libs/common/spec/importers/testData/firefoxCsv/simplePasswordData.csv.ts -./libs/common/spec/importers/fsecureFskImporter.spec.ts -./libs/common/spec/importers/safariCsvImporter.spec.ts -./libs/common/spec/importers/keeperJsonImporter.spec.ts -./libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts -./libs/common/spec/importers/dashlaneCsvImporter.spec.ts -./libs/common/spec/importers/nordpassCsvImporter.spec.ts -./libs/common/spec/importers/onepasswordWinCsvImporter.spec.ts -./libs/common/spec/importers/firefoxCsvImporter.spec.ts -./libs/common/spec/importers/onepassword1PuxImporter.spec.ts -./libs/common/spec/importers/onepasswordMacCsvImporter.spec.ts -./libs/common/spec/importers/lastpassCsvImporter.spec.ts -./libs/common/spec/importers/onepassword1PifImporter.spec.ts -./libs/common/spec/importers/keepass2XmlImporter.spec.ts -./libs/common/spec/importers/bitwardenJsonImporter.spec.ts -./libs/common/spec/importers/mykiCsvImporter.spec.ts ./libs/common/spec/web/services/webCryptoFunction.service.spec.ts ./libs/common/spec/shared/interceptConsole.ts ./libs/common/spec/models/view/passwordHistoryView.spec.ts @@ -111,69 +69,6 @@ ./libs/common/src/types/twoFactorResponse.ts ./libs/common/src/types/authResponse.ts ./libs/common/src/types/syncEventArgs.ts -./libs/common/src/importers/enpassJsonImporter.ts -./libs/common/src/importers/firefoxCsvImporter.ts -./libs/common/src/importers/rememBearCsvImporter.ts -./libs/common/src/importers/ascendoCsvImporter.ts -./libs/common/src/importers/passwordDragonXmlImporter.ts -./libs/common/src/importers/passkeepCsvImporter.ts -./libs/common/src/importers/gnomeJsonImporter.ts -./libs/common/src/importers/secureSafeCsvImporter.ts -./libs/common/src/importers/zohoVaultCsvImporter.ts -./libs/common/src/importers/dashlaneImporters/dashlaneCsvImporter.ts -./libs/common/src/importers/dashlaneImporters/types/dashlaneCsvTypes.ts -./libs/common/src/importers/dashlaneImporters/dashlaneJsonImporter.ts -./libs/common/src/importers/meldiumCsvImporter.ts -./libs/common/src/importers/safariCsvImporter.ts -./libs/common/src/importers/msecureCsvImporter.ts -./libs/common/src/importers/buttercupCsvImporter.ts -./libs/common/src/importers/kasperskyTxtImporter.ts -./libs/common/src/importers/baseImporter.ts -./libs/common/src/importers/keepassxCsvImporter.ts -./libs/common/src/importers/encryptrCsvImporter.ts -./libs/common/src/importers/passwordWalletTxtImporter.ts -./libs/common/src/importers/codebookCsvImporter.ts -./libs/common/src/importers/nordpassCsvImporter.ts -./libs/common/src/importers/avastJsonImporter.ts -./libs/common/src/importers/blurCsvImporter.ts -./libs/common/src/importers/safeInCloudXmlImporter.ts -./libs/common/src/importers/enpassCsvImporter.ts -./libs/common/src/importers/saferpassCsvImport.ts -./libs/common/src/importers/keeperImporters/types/keeperJsonTypes.ts -./libs/common/src/importers/keeperImporters/keeperCsvImporter.ts -./libs/common/src/importers/keeperImporters/keeperJsonImporter.ts -./libs/common/src/importers/fsecureFskImporter.ts -./libs/common/src/importers/clipperzHtmlImporter.ts -./libs/common/src/importers/keepass2XmlImporter.ts -./libs/common/src/importers/stickyPasswordXmlImporter.ts -./libs/common/src/importers/aviraCsvImporter.ts -./libs/common/src/importers/bitwardenPasswordProtectedImporter.ts -./libs/common/src/importers/avastCsvImporter.ts -./libs/common/src/importers/mykiCsvImporter.ts -./libs/common/src/importers/logMeOnceCsvImporter.ts -./libs/common/src/importers/upmCsvImporter.ts -./libs/common/src/importers/yotiCsvImporter.ts -./libs/common/src/importers/roboformCsvImporter.ts -./libs/common/src/importers/passwordBossJsonImporter.ts -./libs/common/src/importers/splashIdCsvImporter.ts -./libs/common/src/importers/passmanJsonImporter.ts -./libs/common/src/importers/bitwardenCsvImporter.ts -./libs/common/src/importers/lastpassCsvImporter.ts -./libs/common/src/importers/bitwardenJsonImporter.ts -./libs/common/src/importers/passwordAgentCsvImporter.ts -./libs/common/src/importers/passpackCsvImporter.ts -./libs/common/src/importers/truekeyCsvImporter.ts -./libs/common/src/importers/blackBerryCsvImporter.ts -./libs/common/src/importers/importError.ts -./libs/common/src/importers/padlockCsvImporter.ts -./libs/common/src/importers/onepasswordImporters/types/onepassword1PuxImporterTypes.ts -./libs/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts -./libs/common/src/importers/onepasswordImporters/cipherImportContext.ts -./libs/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts -./libs/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts -./libs/common/src/importers/onepasswordImporters/onepassword1PuxImporter.ts -./libs/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts -./libs/common/src/importers/passwordSafeXmlImporter.ts ./libs/common/src/enums/kdfType.ts ./libs/common/src/enums/fileUploadType.ts ./libs/common/src/enums/cipherType.ts @@ -235,7 +130,6 @@ ./libs/common/src/abstractions/fileDownload/fileDownloadBuilder.ts ./libs/common/src/abstractions/fileDownload/fileDownload.service.ts ./libs/common/src/abstractions/fileDownload/fileDownloadRequest.ts -./libs/common/src/abstractions/abstractEncrypt.service.ts ./libs/common/src/abstractions/passwordGeneration.service.ts ./libs/common/src/abstractions/passwordReprompt.service.ts ./libs/common/src/abstractions/formValidationErrors.service.ts @@ -296,7 +190,6 @@ ./README.md ./LICENSE_BITWARDEN.txt ./CONTRIBUTING.md -./.github/PULL_REQUEST_TEMPLATE.md ./LICENSE_GPL.txt ./LICENSE.txt ./apps/web/Dockerfile @@ -367,26 +260,6 @@ ./apps/cli/src/services/lowdbStorage.service.ts ./apps/cli/src/services/nodeEnvSecureStorage.service.ts ./apps/browser/README.md -./apps/browser/store/locales/en/screenshots/Firefox/Firefox02.png -./apps/browser/store/locales/en/screenshots/Firefox/Firefox03.png -./apps/browser/store/locales/en/screenshots/Firefox/Firefox01.png -./apps/browser/store/locales/en/screenshots/Firefox/Firefox04.png -./apps/browser/store/locales/en/screenshots/Firefox/Firefox05.png -./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge03.png -./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge02.png -./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge01.png -./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge05.png -./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge04.png -./apps/browser/store/locales/en/screenshots/Chrome/Chrome01.png -./apps/browser/store/locales/en/screenshots/Chrome/Chrome02.png -./apps/browser/store/locales/en/screenshots/Chrome/Chrome03.png -./apps/browser/store/locales/en/screenshots/Chrome/Chrome04.png -./apps/browser/store/locales/en/screenshots/Chrome/Chrome05.png -./apps/browser/store/locales/en/screenshots/Opera/Opera01.png -./apps/browser/store/locales/en/screenshots/Opera/Opera03.png -./apps/browser/store/locales/en/screenshots/Opera/Opera02.png -./apps/browser/store/locales/en/screenshots/Opera/Opera05.png -./apps/browser/store/locales/en/screenshots/Opera/Opera04.png ./apps/browser/store/windows/AppxManifest.xml ./apps/browser/src/background/nativeMessaging.background.ts ./apps/browser/src/background/models/addLoginRuntimeMessage.ts diff --git a/.github/workflows/automatic-issue-responses.yml b/.github/workflows/automatic-issue-responses.yml index 16eefb03d22..badc10d3342 100644 --- a/.github/workflows/automatic-issue-responses.yml +++ b/.github/workflows/automatic-issue-responses.yml @@ -1,5 +1,5 @@ --- -name: Automatic responses +name: Automatic issue responses on: issues: types: @@ -62,14 +62,3 @@ jobs: As we haven’t heard from you about this problem in some time, this issue will now be closed. If this happens again or continues to be an problem, please respond to this issue with any additional detail to assist with reproduction and root cause analysis. - # Translation PR / Crowdin - - if: github.event.label.name == 'translation-pr' - name: Translation-PR - uses: peter-evans/close-issue@849549ba7c3a595a064c4b2c56f206ee78f93515 # v2.0.0 - with: - comment: | - We really appreciate you taking the time to improve our translations. - - However we use a translation tool called [Crowdin](https://crowdin.com/) to help manage our localization efforts across many different languages. Our translations can only be updated using Crowdin, so we'll have to close this PR, but would really appreciate if you'd consider joining our awesome translation community over at Crowdin. - - More information can be found in the [localization section](https://contributing.bitwarden.com/contributing/#localization-l10n) of our [Contribution Guidelines](https://contributing.bitwarden.com/contributing/) diff --git a/.github/workflows/automatic-pull-request-responses.yml b/.github/workflows/automatic-pull-request-responses.yml new file mode 100644 index 00000000000..e994c2f59b8 --- /dev/null +++ b/.github/workflows/automatic-pull-request-responses.yml @@ -0,0 +1,24 @@ +--- +name: Automatic pull request responses +on: + pull_request: + types: + - labeled +jobs: + close-issue: + name: 'Close pull request with automatic response' + runs-on: ubuntu-20.04 + permissions: + pull-requests: write + steps: + # Translation PR / Crowdin + - if: github.event.label.name == 'translation-pr' + name: Translation-PR + uses: peter-evans/close-issue@849549ba7c3a595a064c4b2c56f206ee78f93515 # v2.0.0 + with: + comment: | + We really appreciate you taking the time to improve our translations. + + However we use a translation tool called [Crowdin](https://crowdin.com/) to help manage our localization efforts across many different languages. Our translations can only be updated using Crowdin, so we'll have to close this PR, but would really appreciate if you'd consider joining our awesome translation community over at Crowdin. + + More information can be found in the [localization section](https://contributing.bitwarden.com/contributing/#localization-l10n) of our [Contribution Guidelines](https://contributing.bitwarden.com/contributing/) diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index 644288bd990..be69b22a8a5 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -8,6 +8,7 @@ on: - 'cf-pages' paths: - 'apps/desktop/**' + - 'libs/**' - '*' - '!*.md' - '!*.txt' diff --git a/.github/workflows/enforce-labels.yml b/.github/workflows/enforce-labels.yml index 61c3233f031..6528c94f1f8 100644 --- a/.github/workflows/enforce-labels.yml +++ b/.github/workflows/enforce-labels.yml @@ -2,6 +2,7 @@ name: Enforce PR labels on: + workflow_call: pull_request: types: [labeled, unlabeled, opened, edited, synchronize] jobs: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e3787735920..5e90e2aa054 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -25,7 +25,7 @@ jobs: - name: Lint filenames (no capital characters) run: | - find . -type f -name "*[[:upper:]]*" \ + find . -type f,d -name "*[[:upper:]]*" \ ! -path "./node_modules/*" \ ! -path "./coverage/*" \ ! -path "*/dist/*" \ @@ -33,6 +33,8 @@ jobs: ! -path "*/target/*" \ ! -path "./.git/*" \ ! -path "*/.DS_Store" \ + ! -path "*/*locales/*" \ + ! -path "./.github/*" \ > tmp.txt diff <(sort .github/whitelist-capital-letters.txt) <(sort tmp.txt) diff --git a/.github/workflows/release-browser.yml b/.github/workflows/release-browser.yml index 514dafa65f8..ae22876b4c8 100644 --- a/.github/workflows/release-browser.yml +++ b/.github/workflows/release-browser.yml @@ -1,5 +1,6 @@ --- name: Release Browser +run-name: Release Browser ${{ inputs.release_type }} on: workflow_dispatch: @@ -31,7 +32,7 @@ jobs: - name: Branch check if: ${{ github.event.inputs.release_type != 'Dry Run' }} run: | - if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ $GITHUB_REF != refs/heads/hotfix-rc-browser ]]; then + if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc-browser" ]]; then echo "===================================" echo "[!] Can only release from the 'rc' or 'hotfix-rc-browser' branches" echo "===================================" @@ -113,7 +114,7 @@ jobs: dist-firefox-*.zip, dist-edge-*.zip' - - name: Download latest master build artifacts + - name: Dry Run - Download latest master build artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 208cbb2d4a6..5d0e1f963fe 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -1,5 +1,6 @@ --- name: Release CLI +run-name: Release CLI ${{ inputs.release_type }} on: workflow_dispatch: @@ -47,7 +48,7 @@ jobs: - name: Branch check if: ${{ github.event.inputs.release_type != 'Dry Run' }} run: | - if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ $GITHUB_REF != refs/heads/hotfix-rc-cli ]]; then + if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc-cli" ]]; then echo "===================================" echo "[!] Can only release from the 'rc' or 'hotfix-rc-cli' branches" echo "===================================" @@ -64,7 +65,8 @@ jobs: monorepo: true monorepo-project: cli - - name: Create GitHub deployment for Snap + - name: Create GitHub deployment + if: ${{ github.event.inputs.release_type != 'Dry Run' }} uses: chrnorm/deployment-action@1b599fe41a0ef1f95191e7f2eec4743f2d7dfc48 id: deployment with: @@ -83,7 +85,7 @@ jobs: workflow_conclusion: success branch: ${{ github.ref_name }} - - name: Download all artifacts + - name: Dry Run - Download all artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: @@ -115,7 +117,7 @@ jobs: draft: true - name: Update deployment status to Success - if: ${{ success() }} + if: ${{ github.event.inputs.release_type != 'Dry Run' && success() }} uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86 with: token: '${{ secrets.GITHUB_TOKEN }}' @@ -123,7 +125,7 @@ jobs: deployment-id: ${{ steps.deployment.outputs.deployment_id }} - name: Update deployment status to Failure - if: ${{ failure() }} + if: ${{ github.event.inputs.release_type != 'Dry Run' && failure() }} uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86 with: token: '${{ secrets.GITHUB_TOKEN }}' @@ -168,7 +170,7 @@ jobs: branch: ${{ github.ref_name }} artifacts: bw_${{ env._PKG_VERSION }}_amd64.snap - - name: Download artifacts + - name: Dry Run - Download artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: @@ -226,7 +228,7 @@ jobs: branch: ${{ github.ref_name }} artifacts: bitwarden-cli.${{ env._PKG_VERSION }}.nupkg - - name: Download artifacts + - name: Dry Run - Download artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: @@ -276,7 +278,7 @@ jobs: branch: ${{ github.ref_name }} artifacts: bitwarden-cli-${{ env._PKG_VERSION }}-npm-build.zip - - name: Download artifacts + - name: Dry Run - Download artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: diff --git a/.github/workflows/release-desktop-beta.yml b/.github/workflows/release-desktop-beta.yml index 7dbc110a04d..a57b600d0ec 100644 --- a/.github/workflows/release-desktop-beta.yml +++ b/.github/workflows/release-desktop-beta.yml @@ -27,7 +27,7 @@ jobs: - name: Branch check run: | - if [[ "$GITHUB_REF" != "refs/heads/master" ]] && [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ $GITHUB_REF != "refs/heads/hotfix-rc" ]]; then + if [[ "$GITHUB_REF" != "refs/heads/master" ]] && [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc" ]]; then echo "===================================" echo "[!] Can only release from the 'master', 'rc' or 'hotfix-rc' branches" echo "===================================" diff --git a/.github/workflows/release-desktop.yml b/.github/workflows/release-desktop.yml index 247b59ea43d..80c3b71c15d 100644 --- a/.github/workflows/release-desktop.yml +++ b/.github/workflows/release-desktop.yml @@ -1,5 +1,6 @@ --- name: Release Desktop +run-name: Release Desktop ${{ inputs.release_type }} on: workflow_dispatch: @@ -47,7 +48,7 @@ jobs: - name: Branch check if: ${{ github.event.inputs.release_type != 'Dry Run' }} run: | - if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ $GITHUB_REF != refs/heads/hotfix-rc-desktop ]]; then + if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc-desktop" ]]; then echo "===================================" echo "[!] Can only release from the 'rc' or 'hotfix-rc-desktop' branches" echo "===================================" @@ -82,6 +83,7 @@ jobs: esac - name: Create GitHub deployment + if: ${{ github.event.inputs.release_type != 'Dry Run' }} uses: chrnorm/deployment-action@1b599fe41a0ef1f95191e7f2eec4743f2d7dfc48 id: deployment with: @@ -118,7 +120,7 @@ jobs: branch: ${{ github.ref_name }} path: apps/desktop/artifacts - - name: Download all artifacts + - name: Dry Run - Download all artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: @@ -210,7 +212,7 @@ jobs: draft: true - name: Update deployment status to Success - if: ${{ success() }} + if: ${{ github.event.inputs.release_type != 'Dry Run' && success() }} uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86 with: token: '${{ secrets.GITHUB_TOKEN }}' @@ -218,7 +220,7 @@ jobs: deployment-id: ${{ steps.deployment.outputs.deployment_id }} - name: Update deployment status to Failure - if: ${{ failure() }} + if: ${{ github.event.inputs.release_type != 'Dry Run' && failure() }} uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86 with: token: '${{ secrets.GITHUB_TOKEN }}' @@ -267,7 +269,7 @@ jobs: artifacts: bitwarden_${{ env._PKG_VERSION }}_amd64.snap path: apps/desktop/dist - - name: Download Snap artifact + - name: Dry Run - Download Snap artifact if: ${{ github.event.inputs.release_type == 'Dry Run' }} uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: @@ -333,7 +335,7 @@ jobs: artifacts: bitwarden.${{ env._PKG_VERSION }}.nupkg path: apps/desktop/dist - - name: Download choco artifact + - name: Dry Run - Download choco artifact if: ${{ github.event.inputs.release_type == 'Dry Run' }} uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: diff --git a/.github/workflows/release-qa-web.yml b/.github/workflows/release-qa-web.yml index 2d46506b1ee..b7abb35ead0 100644 --- a/.github/workflows/release-qa-web.yml +++ b/.github/workflows/release-qa-web.yml @@ -19,14 +19,6 @@ jobs: environment: 'Web Vault - QA' description: 'Deployment from branch ${{ github.ref_name }}' - - name: Update deployment status to In Progress - uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86 - with: - token: '${{ secrets.GITHUB_TOKEN }}' - environment-url: http://vault.qa.bitwarden.pw - state: 'in_progress' - deployment-id: ${{ steps.deployment.outputs.deployment_id }} - - name: Checkout Repo uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 diff --git a/.github/workflows/release-web.yml b/.github/workflows/release-web.yml index 2ba8ebbf882..68727e774dd 100644 --- a/.github/workflows/release-web.yml +++ b/.github/workflows/release-web.yml @@ -1,5 +1,6 @@ --- name: Release Web +run-name: Release Web ${{ inputs.release_type }} on: workflow_dispatch: @@ -28,7 +29,7 @@ jobs: - name: Branch check if: ${{ github.event.inputs.release_type != 'Dry Run' }} run: | - if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ $GITHUB_REF != "refs/heads/hotfix-rc-web" ]]; then + if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc-web" ]]; then echo "===================================" echo "[!] Can only release from the 'rc' or 'hotfix-rc-web' branches" echo "===================================" @@ -95,8 +96,7 @@ jobs: env: DOCKER_CONTENT_TRUST: 1 DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE: ${{ steps.setup-dct.outputs.dct-delegate-repo-passphrase }} - run: | - docker push bitwarden/web:$_RELEASE_VERSION + run: docker push bitwarden/web:$_RELEASE_VERSION - name: Log out of Docker and disable Docker Notary run: | @@ -162,7 +162,7 @@ jobs: branch: ${{ github.ref_name }} artifacts: web-*-cloud-COMMERCIAL.zip - - name: Download latest cloud asset (Dry Run) + - name: Dry Run - Download latest cloud asset if: ${{ github.event.inputs.release_type == 'Dry Run' }} uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: @@ -227,6 +227,7 @@ jobs: - cfpages-deploy steps: - name: Create GitHub deployment + if: ${{ github.event.inputs.release_type != 'Dry Run' }} uses: chrnorm/deployment-action@1b599fe41a0ef1f95191e7f2eec4743f2d7dfc48 id: deployment with: @@ -248,7 +249,7 @@ jobs: artifacts: "web-*-selfhosted-COMMERCIAL.zip, web-*-selfhosted-open-source.zip" - - name: Download latest build artifacts + - name: Dry Run - Download latest build artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: @@ -279,7 +280,7 @@ jobs: draft: true - name: Update deployment status to Success - if: ${{ success() }} + if: ${{ github.event.inputs.release_type != 'Dry Run' && success() }} uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86 with: token: '${{ secrets.GITHUB_TOKEN }}' @@ -288,7 +289,7 @@ jobs: deployment-id: ${{ steps.deployment.outputs.deployment_id }} - name: Update deployment status to Failure - if: ${{ failure() }} + if: ${{ github.event.inputs.release_type != 'Dry Run' && failure() }} uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86 with: token: '${{ secrets.GITHUB_TOKEN }}' diff --git a/.github/workflows/staged-rollout-desktop.yml b/.github/workflows/staged-rollout-desktop.yml index cf26212fc5a..d60fa700617 100644 --- a/.github/workflows/staged-rollout-desktop.yml +++ b/.github/workflows/staged-rollout-desktop.yml @@ -15,9 +15,26 @@ defaults: shell: bash jobs: + setup: + name: Setup + runs-on: ubuntu-22.04 + steps: + - name: Checkout repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b + + - name: Branch check + run: | + if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc-desktop" ]]; then + echo "===================================" + echo "[!] Can only increase rollout from the 'rc' or 'hotfix-rc-desktop' branches" + echo "===================================" + exit 1 + fi + rollout: name: Update Rollout Percentage runs-on: ubuntu-22.04 + needs: setup steps: - name: Login to Azure uses: Azure/login@ec3c14589bd3e9312b3cc8c41e6860e258df9010 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e5ff1343f2e..b0ca237c0cc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -70,7 +70,9 @@ jobs: steps: - name: Install gnome-keyring if: ${{ matrix.os=='ubuntu-latest' }} - run: sudo apt-get install -y gnome-keyring dbus-x11 + run: | + sudo apt-get update + sudo apt-get install -y gnome-keyring dbus-x11 - name: Checkout repo uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 diff --git a/.github/workflows/version-bump.yml b/.github/workflows/version-bump.yml index 8a3101bd2e8..80d54eef145 100644 --- a/.github/workflows/version-bump.yml +++ b/.github/workflows/version-bump.yml @@ -175,3 +175,8 @@ jobs: ## Objective Automated ${{ github.event.inputs.client }} version bump to ${{ github.event.inputs.version_number }}" + enforce-labels: + name: Enforce Labels + needs: bump_version + uses: ./.github/workflows/enforce-labels.yml + secrets: inherit diff --git a/.prettierignore b/.prettierignore index b1c9359fa1e..d4257ee2d03 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,6 +4,7 @@ **/coverage .angular documentation.json +storybook-static # External libraries / auto synced locales apps/browser/src/_locales diff --git a/apps/browser/src/_locales/ar/messages.json b/apps/browser/src/_locales/ar/messages.json index 1cddbf6f7ce..6e4208b13f0 100644 --- a/apps/browser/src/_locales/ar/messages.json +++ b/apps/browser/src/_locales/ar/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/az/messages.json b/apps/browser/src/_locales/az/messages.json index 2f352242566..bbec998e9d5 100644 --- a/apps/browser/src/_locales/az/messages.json +++ b/apps/browser/src/_locales/az/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Ana parolla giriş et" + }, + "loggingInAs": { + "message": "Giriş et" + }, + "notYou": { + "message": "Siz deyilsiniz?" + }, + "newAroundHere": { + "message": "Burada yenisiniz?" + }, + "rememberEmail": { + "message": "E-poçtu xatırla" } } diff --git a/apps/browser/src/_locales/be/messages.json b/apps/browser/src/_locales/be/messages.json index 4188db0ba8f..843a479d174 100644 --- a/apps/browser/src/_locales/be/messages.json +++ b/apps/browser/src/_locales/be/messages.json @@ -497,7 +497,7 @@ "message": "Папка адрэдагавана" }, "deleteFolderConfirmation": { - "message": "Вы ўпэўнены, што хочаце выдаліць гэту папку?" + "message": "Вы сапраўды хочаце выдаліць гэту папку?" }, "deletedFolder": { "message": "Папка выдалена" @@ -540,7 +540,7 @@ "message": "Элемент адрэдагаваны" }, "deleteItemConfirmation": { - "message": "Вы ўпэўнены, што хочаце адправіць гэты элемент у сметніцу?" + "message": "Вы сапраўды хочаце адправіць гэты элемент у сметніцу?" }, "deletedItem": { "message": "Элемент адпраўлены ў сметніцу" @@ -549,13 +549,13 @@ "message": "Перазапісаць пароль" }, "overwritePasswordConfirmation": { - "message": "Вы ўпэўнены, што хочаце перазапісаць бягучы пароль?" + "message": "Вы сапраўды хочаце перазапісаць бягучы пароль?" }, "overwriteUsername": { "message": "Перазапісаць імя карыстальніка" }, "overwriteUsernameConfirmation": { - "message": "Вы ўпэўнены, што хочаце перазапісаць бягучае імя карыстальніка?" + "message": "Вы сапраўды хочаце перазапісаць бягучае імя карыстальніка?" }, "searchFolder": { "message": "Пошук у папцы" @@ -720,7 +720,7 @@ "message": "Выдаліць далучэнне" }, "deleteAttachmentConfirmation": { - "message": "Вы ўпэўнены, што хочаце выдаліць гэта далучэнне?" + "message": "Вы сапраўды хочаце выдаліць гэта далучэнне?" }, "deletedAttachment": { "message": "Далучэнне выдалена" @@ -1320,7 +1320,7 @@ "description": "ex. Date this password was updated" }, "neverLockWarning": { - "message": "Вы ўпэўнены, што хочаце адключыць блакіроўку сховішча? Прызначыўшы параметр блакіравання \"Ніколі\", ключ шыфравання будзе захоўвацца на вашай прыладзе. Калі вы выкарыстоўваеце гэты параметр, вы павінны быць упэўнены ў тым, што ваша прылада надзейна абаронена." + "message": "Вы сапраўды хочаце адключыць блакіроўку сховішча? Прызначыўшы параметр блакіравання \"Ніколі\", ключ шыфравання будзе захоўвацца на вашай прыладзе. Калі вы выкарыстоўваеце гэты параметр, вы павінны быць упэўнены ў тым, што ваша прылада надзейна абаронена." }, "noOrganizationsList": { "message": "Вы не з'яўляецеся членам якой-небудзь арганізацыі. Арганізацыі дазваляюць бяспечна абменьвацца элементамі з іншымі карыстальнікамі." @@ -1350,7 +1350,7 @@ "message": "Ненадзейны асноўны пароль" }, "weakMasterPasswordDesc": { - "message": "Асноўны пароль, які вы выбралі з'яўляецца ненадзейным. Для належнай абароны ўліковага запісу Bitwarden, вы павінны выкарыстоўваць надзейны асноўны пароль (або парольную фразу). Вы ўпэўнены, што хочаце выкарыстоўваць гэты асноўны пароль?" + "message": "Асноўны пароль, які вы выбралі з'яўляецца ненадзейным. Для належнай абароны ўліковага запісу Bitwarden, вы павінны выкарыстоўваць надзейны асноўны пароль (або парольную фразу). Вы сапраўды хочаце выкарыстоўваць гэты асноўны пароль?" }, "pin": { "message": "PIN-код", @@ -1410,7 +1410,7 @@ "message": "Выдаліць назаўсёды" }, "permanentlyDeleteItemConfirmation": { - "message": "Вы ўпэўнены, што хочаце назаўсёды выдаліць гэты элемент?" + "message": "Вы сапраўды хочаце назаўсёды выдаліць гэты элемент?" }, "permanentlyDeletedItem": { "message": "Элемент выдалены назаўсёды" @@ -1419,13 +1419,13 @@ "message": "Аднавіць элемент" }, "restoreItemConfirmation": { - "message": "Вы ўпэўнены, што хочаце аднавіць гэты элемент?" + "message": "Вы сапраўды хочаце аднавіць гэты элемент?" }, "restoredItem": { "message": "Элемент адноўлены" }, "vaultTimeoutLogOutConfirmation": { - "message": "Выхад з сістэмы скасуе ўсе магчымасці доступу да сховішча і запатрабуе аўтэнтыфікацыю праз інтэрнэт пасля завяршэння часу чакання. Вы ўпэўнены, што хочаце выкарыстоўваць гэты параметр?" + "message": "Выхад з сістэмы скасуе ўсе магчымасці доступу да сховішча і запатрабуе аўтэнтыфікацыю праз інтэрнэт пасля завяршэння часу чакання. Вы сапраўды хочаце выкарыстоўваць гэты параметр?" }, "vaultTimeoutLogOutConfirmationTitle": { "message": "Пацвярджэнне дзеяння часу чакання" @@ -1643,14 +1643,14 @@ "message": "Адключана" }, "removePasswordConfirmation": { - "message": "Вы ўпэўнены, што хочаце выдаліць пароль?" + "message": "Вы сапраўды хочаце выдаліць пароль?" }, "deleteSend": { "message": "Выдаліць Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deleteSendConfirmation": { - "message": "Вы ўпэўнены, што хочаце выдаліць гэты Send?", + "message": "Вы сапраўды хочаце выдаліць гэты Send?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { @@ -1887,7 +1887,7 @@ "message": "Асноўны пароль выдалены." }, "leaveOrganizationConfirmation": { - "message": "Вы ўпэўнены, што хочаце выйсці з гэтай арганізацыі?" + "message": "Вы сапраўды хочаце выйсці з гэтай арганізацыі?" }, "leftOrganization": { "message": "Вы пакінулі арганізацыю." @@ -1985,7 +1985,7 @@ "message": "Mir" }, "loggingInTo": { - "message": "Уваход у $DOMAIN$", + "message": "Увайсці ў $DOMAIN$", "placeholders": { "domain": { "content": "$1", @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Увайсці з асноўным паролем" + }, + "loggingInAs": { + "message": "Увайсці як" + }, + "notYou": { + "message": "Не вы?" + }, + "newAroundHere": { + "message": "Упершыню тут?" + }, + "rememberEmail": { + "message": "Запомніць электронную пошту" } } diff --git a/apps/browser/src/_locales/bg/messages.json b/apps/browser/src/_locales/bg/messages.json index 2f80a57b456..fcca7309fa6 100644 --- a/apps/browser/src/_locales/bg/messages.json +++ b/apps/browser/src/_locales/bg/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Вписване с главната парола" + }, + "loggingInAs": { + "message": "Вписване като" + }, + "notYou": { + "message": "Това не сте Вие?" + }, + "newAroundHere": { + "message": "За пръв път ли сте тук?" + }, + "rememberEmail": { + "message": "Запомняне на е-пощата" } } diff --git a/apps/browser/src/_locales/bn/messages.json b/apps/browser/src/_locales/bn/messages.json index d811b79b113..cd9692cd26f 100644 --- a/apps/browser/src/_locales/bn/messages.json +++ b/apps/browser/src/_locales/bn/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/bs/messages.json b/apps/browser/src/_locales/bs/messages.json index ffd3a3eee8f..b1c6ebd1721 100644 --- a/apps/browser/src/_locales/bs/messages.json +++ b/apps/browser/src/_locales/bs/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/ca/messages.json b/apps/browser/src/_locales/ca/messages.json index 6f0315bb6c2..2bcfbed2bb1 100644 --- a/apps/browser/src/_locales/ca/messages.json +++ b/apps/browser/src/_locales/ca/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Inicia sessió amb la contrasenya mestra" + }, + "loggingInAs": { + "message": "Has iniciat sessió com" + }, + "notYou": { + "message": "No sou vosaltres?" + }, + "newAroundHere": { + "message": "Nou per ací?" + }, + "rememberEmail": { + "message": "Recorda el correu electronic" } } diff --git a/apps/browser/src/_locales/cs/messages.json b/apps/browser/src/_locales/cs/messages.json index e3427996601..1ce19d5f377 100644 --- a/apps/browser/src/_locales/cs/messages.json +++ b/apps/browser/src/_locales/cs/messages.json @@ -571,22 +571,22 @@ "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { - "message": "Ask to add login" + "message": "Ptát se na přidání přihlášení" }, "addLoginNotificationDesc": { - "message": "Notifikace \"Přidat přihlašovací údaje\" automaticky vyzve k uložení přihlašovacích údajů do trezoru, pokud se s nimi poprvé přihlašujete." + "message": "Dotaz ohledně uložení údajů, pokud nebyly v trezoru nalezeny." }, "showCardsCurrentTab": { - "message": "Show cards on Tab page" + "message": "Zobrazit karty na obrazovce Karta" }, "showCardsCurrentTabDesc": { - "message": "List card items on the Tab page for easy auto-fill." + "message": "Zobrazit karetní položky na obrazovce Karta pro snadné vyplnění." }, "showIdentitiesCurrentTab": { - "message": "Show identities on Tab page" + "message": "Zobrazit identity na obrazovce Karta" }, "showIdentitiesCurrentTabDesc": { - "message": "List identity items on the Tab page for easy auto-fill." + "message": "Zobrazit položky identit na obrazovce Karta pro snadné vyplnění." }, "clearClipboard": { "message": "Vyčistit schránku", @@ -615,7 +615,7 @@ "message": "Ano, aktualizovat" }, "enableContextMenuItem": { - "message": "Show context menu options" + "message": "Zobrazit v kontextovém menu" }, "contextMenuItemDesc": { "message": "Use a secondary click to access password generation and matching logins for the website. " @@ -1312,7 +1312,7 @@ "description": "ex. Date this item was updated" }, "dateCreated": { - "message": "Created", + "message": "Vytvořeno", "description": "ex. Date this item was created" }, "datePasswordUpdated": { @@ -1488,7 +1488,7 @@ "message": "Zaškrtnutím tohoto políčka souhlasím s následujícím:" }, "acceptPoliciesRequired": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "Podmínky použití a zásady ochrany osobních údajů nebyly odsouhlaseny." }, "termsOfService": { "message": "Podmínky použití" @@ -1854,7 +1854,7 @@ } }, "vaultTimeoutTooLarge": { - "message": "Your vault timeout exceeds the restrictions set by your organization." + "message": "Časový limit vašeho trezoru překračuje omezení stanovená vaší organizací." }, "vaultExportDisabled": { "message": "Export trezoru zakázán" @@ -1923,11 +1923,11 @@ "message": "Typ uživatelského jména" }, "plusAddressedEmail": { - "message": "Plus addressed email", + "message": "E-mailová adresa s plusem", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { - "message": "Use your email provider's sub-addressing capabilities." + "message": "Použijte funkce podadres Vašeho poskytovatele e-mailu." }, "catchallEmail": { "message": "E-mail pro doménový koš" @@ -1954,13 +1954,13 @@ "message": "Služba" }, "forwardedEmail": { - "message": "Forwarded email alias" + "message": "Alias přeposílaného e-mailu" }, "forwardedEmailDesc": { "message": "Vygenerovat e-mailový alias pomocí externí služby pro přesměrování." }, "hostname": { - "message": "Hostname", + "message": "Název hostitele", "description": "Part of a URL." }, "apiAccessToken": { @@ -1985,7 +1985,7 @@ "message": "Mir" }, "loggingInTo": { - "message": "Logging in to $DOMAIN$", + "message": "Přihlašování do $DOMAIN$", "placeholders": { "domain": { "content": "$1", @@ -2021,12 +2021,27 @@ } }, "lastSeenOn": { - "message": "last seen on: $DATE$", + "message": "naposledy spatřen: $DATE$", "placeholders": { "date": { "content": "$1", "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Přihlásit se pomocí hlavního hesla" + }, + "loggingInAs": { + "message": "Jste přihlášení jako" + }, + "notYou": { + "message": "Nejste to vy?" + }, + "newAroundHere": { + "message": "Jste tu noví?" + }, + "rememberEmail": { + "message": "Pamatovat si e-mail" } } diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json index 6d282a04674..e48ff9db786 100644 --- a/apps/browser/src/_locales/da/messages.json +++ b/apps/browser/src/_locales/da/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/de/messages.json b/apps/browser/src/_locales/de/messages.json index ba5b31a54df..67d70cc04f7 100644 --- a/apps/browser/src/_locales/de/messages.json +++ b/apps/browser/src/_locales/de/messages.json @@ -342,7 +342,7 @@ "message": "Identität verifizieren" }, "yourVaultIsLocked": { - "message": "Dein Tresor ist gesperrt. Überprüfe dein Master-Passwort um fortzufahren." + "message": "Ihr Tresor ist gesperrt. Bestätigen Sie Ihre Identität um fortzufahren." }, "unlock": { "message": "Entsperren" @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Mit Master-Passwort anmelden" + }, + "loggingInAs": { + "message": "Einloggen als" + }, + "notYou": { + "message": "Nicht du?" + }, + "newAroundHere": { + "message": "Neu hier?" + }, + "rememberEmail": { + "message": "E-Mail-Adresse merken" } } diff --git a/apps/browser/src/_locales/el/messages.json b/apps/browser/src/_locales/el/messages.json index 43a12676a09..2d637cb8ef4 100644 --- a/apps/browser/src/_locales/el/messages.json +++ b/apps/browser/src/_locales/el/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json index 7a320e409e4..c166273e355 100644 --- a/apps/browser/src/_locales/en/messages.json +++ b/apps/browser/src/_locales/en/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/en_GB/messages.json b/apps/browser/src/_locales/en_GB/messages.json index 379f6e0da2d..293c6e0559c 100644 --- a/apps/browser/src/_locales/en_GB/messages.json +++ b/apps/browser/src/_locales/en_GB/messages.json @@ -342,7 +342,7 @@ "message": "Verify Identity" }, "yourVaultIsLocked": { - "message": "Your vault is locked. Verify your master password to continue." + "message": "Your vault is locked. Verify your identity to continue." }, "unlock": { "message": "Unlock" @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/en_IN/messages.json b/apps/browser/src/_locales/en_IN/messages.json index 10f2ccf37c5..c8f0fceda3b 100644 --- a/apps/browser/src/_locales/en_IN/messages.json +++ b/apps/browser/src/_locales/en_IN/messages.json @@ -342,7 +342,7 @@ "message": "Verify Identity" }, "yourVaultIsLocked": { - "message": "Your vault is locked. Verify your master password to continue." + "message": "Your vault is locked. Verify your identity to continue." }, "unlock": { "message": "Unlock" @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/es/messages.json b/apps/browser/src/_locales/es/messages.json index ff5ce837e13..2b5b2730bc1 100644 --- a/apps/browser/src/_locales/es/messages.json +++ b/apps/browser/src/_locales/es/messages.json @@ -603,10 +603,10 @@ "message": "Sí, guardar ahora" }, "enableChangedPasswordNotification": { - "message": "Solicitar la actualización de los datos de iniciode sesión existentes" + "message": "Solicitar la actualización de los datos de inicio de sesión existentes" }, "changedPasswordNotificationDesc": { - "message": "Solicitar la actualización de los datos de iniciode sesión existentes cuuando se detecte un cambio en un sitio web." + "message": "Solicitar la actualización de los datos de inicio de sesión existentes cuando se detecte un cambio en un sitio web." }, "notificationChangeDesc": { "message": "¿Desea actualizar esta contraseña en Bitwarden?" @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Iniciar sesión con contraseña maestra" + }, + "loggingInAs": { + "message": "Iniciando sesión como" + }, + "notYou": { + "message": "¿No eres tú?" + }, + "newAroundHere": { + "message": "¿Nuevo por aquí?" + }, + "rememberEmail": { + "message": "Recordar email" } } diff --git a/apps/browser/src/_locales/et/messages.json b/apps/browser/src/_locales/et/messages.json index 3fdff052c75..68052c3419e 100644 --- a/apps/browser/src/_locales/et/messages.json +++ b/apps/browser/src/_locales/et/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Logi sisse ülemparooliga" + }, + "loggingInAs": { + "message": "Sisselogimas kui" + }, + "notYou": { + "message": "Pole sina?" + }, + "newAroundHere": { + "message": "Oled siin uus?" + }, + "rememberEmail": { + "message": "Mäleta e-posti aadressi" } } diff --git a/apps/browser/src/_locales/eu/messages.json b/apps/browser/src/_locales/eu/messages.json index 283cc957ecd..e7415646d9d 100644 --- a/apps/browser/src/_locales/eu/messages.json +++ b/apps/browser/src/_locales/eu/messages.json @@ -1312,7 +1312,7 @@ "description": "ex. Date this item was updated" }, "dateCreated": { - "message": "Created", + "message": "Sortuta", "description": "ex. Date this item was created" }, "datePasswordUpdated": { @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Hasi saioa pasahitz nagusiarekin" + }, + "loggingInAs": { + "message": "Honela hasi saioa" + }, + "notYou": { + "message": "Ez zara zu?" + }, + "newAroundHere": { + "message": "Berria hemendik?" + }, + "rememberEmail": { + "message": "Emaila gogoratu" } } diff --git a/apps/browser/src/_locales/fa/messages.json b/apps/browser/src/_locales/fa/messages.json index 72b1c925bd0..1adeb72b4b9 100644 --- a/apps/browser/src/_locales/fa/messages.json +++ b/apps/browser/src/_locales/fa/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "با کلمه عبور اصلی وارد شوید" + }, + "loggingInAs": { + "message": "در حال ورود به عنوان" + }, + "notYou": { + "message": "شما نیستید؟" + }, + "newAroundHere": { + "message": "اینجا جدیده؟" + }, + "rememberEmail": { + "message": "ایمیل را به خاطر بسپار" } } diff --git a/apps/browser/src/_locales/fi/messages.json b/apps/browser/src/_locales/fi/messages.json index c13047537c3..75624fd4f56 100644 --- a/apps/browser/src/_locales/fi/messages.json +++ b/apps/browser/src/_locales/fi/messages.json @@ -134,7 +134,7 @@ "message": "Lähetä koodi" }, "codeSent": { - "message": "Koodi lähetetty" + "message": "Koodi lähetettiin" }, "verificationCode": { "message": "Todennuskoodi" @@ -765,7 +765,7 @@ "message": "Et ole tällä hetkellä Premium-jäsen." }, "premiumSignUpAndGet": { - "message": "Ryhdy Premium-jäseneksi saadaksesi:" + "message": "Liity Premium-jäseneksi saadaksesi:" }, "ppremiumSignUpStorage": { "message": "1 Gt salattua tallennustilaa tiedostoliitteille." @@ -1308,7 +1308,7 @@ "message": "Oletus" }, "dateUpdated": { - "message": "Päivitetty", + "message": "Päivitettiin", "description": "ex. Date this item was updated" }, "dateCreated": { @@ -1316,7 +1316,7 @@ "description": "ex. Date this item was created" }, "datePasswordUpdated": { - "message": "Salasana päivitetty", + "message": "Salasana päivitettiin", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1563,7 +1563,7 @@ "message": "Toimintoa ei voi suorittaa sivupalkissa, yritä toimintoa uudelleen ponnahdusvalikossa tai ponnahdusikkunassa." }, "personalOwnershipSubmitError": { - "message": "Yrityksen asettaman käytännön johdosta et voi tallentaa kohteita henkilökohtaiseen holviisi. Muuta omistusasetus organisaatiolle ja valitse käytettävissä olevista kokoelmista." + "message": "Yrityskäytännön johdosta kohteiden tallennus henkilökohtaiseen holviin ei ole mahdollista. Muuta omistusasetus organisaatiolle ja valitse käytettävissä olevista kokoelmista." }, "personalOwnershipPolicyInEffect": { "message": "Organisaatiokäytäntö vaikuttaa omistajuusvalintoihisi." @@ -1619,7 +1619,7 @@ "message": "Salasanasuojattu" }, "copySendLink": { - "message": "Kopioi Sendin linkki", + "message": "Kopioi Send-linkki", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "removePassword": { @@ -1742,7 +1742,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { - "message": "Yrityksen käytännön vuoksi voit poistaa vain olemassa olevan Sendin.", + "message": "Yrityskäytännön vuoksi voit poistaa vain olemassa olevan Sendin.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { @@ -1814,7 +1814,7 @@ "message": "Sinun on vahvistettava sähköpostiosoitteesi käyttääksesi ominaisuutta. Voit vahvistaa osoitteesi verkkoholvissa." }, "updatedMasterPassword": { - "message": "Pääsalasana vaihdettiin" + "message": "Pääsalasana päivitettiin" }, "updateMasterPassword": { "message": "Vaihda pääsalasana" @@ -1902,7 +1902,7 @@ "message": "Henkilökohtaisen holvin vienti" }, "exportingPersonalVaultDescription": { - "message": "Vain tunnukselle $EMAIL$ liitetyt henkilökohtaisen holvin kohteet viedään. Organisaation kohteet eivät sisälly tähän.", + "message": "Vain tunnukseen $EMAIL$ liitetyt henkilökohtaisen holvin kohteet viedään. Organisaation kohteet eivät sisälly tähän.", "placeholders": { "email": { "content": "$1", @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Kirjaudu pääsalasanalla" + }, + "loggingInAs": { + "message": "Kirjaudutaan tunnuksella" + }, + "notYou": { + "message": "Etkö se ollut sinä?" + }, + "newAroundHere": { + "message": "Oletko uusi täällä?" + }, + "rememberEmail": { + "message": "Muista sähköpostiosoite" } } diff --git a/apps/browser/src/_locales/fil/messages.json b/apps/browser/src/_locales/fil/messages.json index ef019e07386..9981bf49cae 100644 --- a/apps/browser/src/_locales/fil/messages.json +++ b/apps/browser/src/_locales/fil/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/fr/messages.json b/apps/browser/src/_locales/fr/messages.json index fa14f56e8b5..c2d133c853f 100644 --- a/apps/browser/src/_locales/fr/messages.json +++ b/apps/browser/src/_locales/fr/messages.json @@ -571,7 +571,7 @@ "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { - "message": "Ask to add login" + "message": "Demander à ajouter un identifiant" }, "addLoginNotificationDesc": { "message": "La \"Notification de demande d'ajout d'identifiant\" apparait automatiquement pour vous demander d'enregistrer dans votre coffre les identifiants que vous utilisez pour la première fois." @@ -2006,7 +2006,7 @@ "message": "Server version" }, "selfHosted": { - "message": "Self-hosted" + "message": "Auto-hébergé" }, "thirdParty": { "message": "Third-party" @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Ce n'est pas vous ?" + }, + "newAroundHere": { + "message": "Êtes-vous nouveau ici ?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/he/messages.json b/apps/browser/src/_locales/he/messages.json index a5ab167ab74..3188f318a6e 100644 --- a/apps/browser/src/_locales/he/messages.json +++ b/apps/browser/src/_locales/he/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/hi/messages.json b/apps/browser/src/_locales/hi/messages.json index 80e1c53c86b..b36a6f82840 100644 --- a/apps/browser/src/_locales/hi/messages.json +++ b/apps/browser/src/_locales/hi/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/hr/messages.json b/apps/browser/src/_locales/hr/messages.json index 73700c8caea..94d8f2cc9eb 100644 --- a/apps/browser/src/_locales/hr/messages.json +++ b/apps/browser/src/_locales/hr/messages.json @@ -14,7 +14,7 @@ "message": "Prijavi se ili stvori novi račun za pristup svojem sigurnom trezoru." }, "createAccount": { - "message": "Napravi račun" + "message": "Stvori račun" }, "login": { "message": "Prijava" @@ -32,7 +32,7 @@ "message": "Pošalji" }, "emailAddress": { - "message": "Email Adresa" + "message": "Adresa e-pošte" }, "masterPass": { "message": "Glavna lozinka" @@ -98,13 +98,13 @@ "message": "Prilagođeno ime polja" }, "noMatchingLogins": { - "message": "Nema podudarajućih prijava." + "message": "Nema podudarajućih prijava" }, "unlockVaultMenu": { - "message": "Otključaj trezor" + "message": "Otključaj svoj trezor" }, "loginToVaultMenu": { - "message": "Prijavite se u svoj trezor" + "message": "Prijavi se u svoj trezor" }, "autoFillInfo": { "message": "Nema dostupnih prijava za auto-ispunu na web stranici u ovoj kartici." @@ -215,7 +215,7 @@ "message": "Automatski generiraj jake, jedinstvene lozinke." }, "bitWebVault": { - "message": "Bitwarden Web trezor" + "message": "Bitwarden web trezor" }, "importItems": { "message": "Uvoz stavki" @@ -236,13 +236,13 @@ "message": "Duljina" }, "uppercase": { - "message": "Velika slova (A-Z)" + "message": "Velika slova (A - Z)" }, "lowercase": { - "message": "Mala slova (a-z)" + "message": "Mala slova (a - z)" }, "numbers": { - "message": "Brojevi (0-9)" + "message": "Brojevi (0 - 9)" }, "specialCharacters": { "message": "Posebni znakovi (!@#$%^&*)" @@ -264,7 +264,7 @@ "message": "Najmanje brojeva" }, "minSpecial": { - "message": "Najmanje specijalnih" + "message": "Najmanje posebnih" }, "avoidAmbChar": { "message": "Izbjegavaj dvosmislene znakove" @@ -424,13 +424,13 @@ "message": "Neispravna adresa e-pošte." }, "masterPasswordRequired": { - "message": "Master password is required." + "message": "Potrebna je glavna lozinka." }, "confirmMasterPasswordRequired": { - "message": "Master password retype is required." + "message": "Potreban je ponovni unos glavne lozinke." }, "masterPasswordMinlength": { - "message": "Master password must be at least 8 characters long." + "message": "Glavna lozinka mora imati najmanje 8 znakova." }, "masterPassDoesntMatch": { "message": "Potvrda glavne lozinke se ne podudara." @@ -491,10 +491,10 @@ "message": "Svoju glavnu lozinku možeš promijeniti na web trezoru. Želiš li sada posjetiti bitwarden.com?" }, "twoStepLoginConfirmation": { - "message": "Prijava u dva koraka čini tvoj račun još sigurnijim tako što će zahtijevati da potvrdiš prijavu putem drugog uređaja kao što je sigurnosni ključ, autentifikatorske aplikacije, SMS-om, pozivom ili e-poštom. Prijavu u dva koraka možeš omogućiti na web trezoru. Želiš li sada posjetiti bitwarden.com?" + "message": "Prijava dvostrukom autentifikacijom čini tvoj račun još sigurnijim tako što će zahtijevati da potvrdiš prijavu putem drugog uređaja pomoću sigurnosnog koda, autentifikatorske aplikacije, SMS-om, pozivom ili e-poštom. Prijavu dvostrukom autentifikacijom možeš omogućiti na web trezoru. Želiš li sada posjetiti bitwarden.com?" }, "editedFolder": { - "message": "Mapa izmijenjena" + "message": "Mapa spremljena" }, "deleteFolderConfirmation": { "message": "Sigurno želiš izbrisati ovu mapu?" @@ -555,7 +555,7 @@ "message": "Prebriši korisničko ime" }, "overwriteUsernameConfirmation": { - "message": "Jesi li siguran da želiš prebrisati trenutno korisničko ime?" + "message": "Sigurno želiš prebrisati trenutno korisničko ime?" }, "searchFolder": { "message": "Mapa pretraživanja" @@ -571,22 +571,22 @@ "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { - "message": "Ask to add login" + "message": "Upitaj za dodavanje prijave" }, "addLoginNotificationDesc": { "message": "Upit za dodavanje prijave pojavljuje se kada se otkrije prva prijava na neko web mjesto. Bitwarden će te pitatati želiš li uneseno korisničko ime i lozinku spremiti u svoj trezor." }, "showCardsCurrentTab": { - "message": "Show cards on Tab page" + "message": "Prikaži platne kartice" }, "showCardsCurrentTabDesc": { - "message": "List card items on the Tab page for easy auto-fill." + "message": "Prikazuj platne kartice za jednostavnu auto-ispunu." }, "showIdentitiesCurrentTab": { - "message": "Show identities on Tab page" + "message": "Prikaži identitete" }, "showIdentitiesCurrentTabDesc": { - "message": "List identity items on the Tab page for easy auto-fill." + "message": "Prikazuj identitete za jednostavnu auto-ispunu." }, "clearClipboard": { "message": "Očisti međuspremnik", @@ -603,10 +603,10 @@ "message": "Spremi" }, "enableChangedPasswordNotification": { - "message": "Ask to update existing login" + "message": "Upitaj za ažuriranje trenutne prijave" }, "changedPasswordNotificationDesc": { - "message": "Ask to update a login's password when a change is detected on a website." + "message": "Upitaj za ažuriranje lozinke prijave ako se otkrije promjena na web stranici." }, "notificationChangeDesc": { "message": "Želiš li ovu lozinku ažurirati u Bitwarden-u?" @@ -615,10 +615,10 @@ "message": "Ažuriraj" }, "enableContextMenuItem": { - "message": "Show context menu options" + "message": "Prikaži opcije kotekstualnog izbornika" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Koristi sekundarni klik za pristup generatoru lozinki i pripadajućim prijavama trenunte web stranice. " }, "defaultUriMatchDetection": { "message": "Zadano otkrivanje URI podudaranja", @@ -642,7 +642,7 @@ "description": "Light color" }, "solarizedDark": { - "message": "Solarizirana Tamna", + "message": "Solarized Dark", "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." }, "exportVault": { @@ -723,7 +723,7 @@ "message": "Sigurno želiš izbrisati ovaj privitak?" }, "deletedAttachment": { - "message": "Izbrisani privitak" + "message": "Privitak izbrisan" }, "newAttachment": { "message": "Dodaj novi privitak" @@ -732,7 +732,7 @@ "message": "Nema privitaka." }, "attachmentSaved": { - "message": "Privitak je spremljen." + "message": "Privitak spremljen" }, "file": { "message": "Datoteka" @@ -771,7 +771,7 @@ "message": "1 GB šifriranog prostora za pohranu podataka." }, "ppremiumSignUpTwoStep": { - "message": "Dodatne mogućnosti za prijavu u dva koraka kao što su YubiKey, FIDO U2F i Duo." + "message": "Dodatne mogućnosti za prijavu dvostrukom autentifikacijom kao što su YubiKey, FIDO U2F i Duo." }, "ppremiumSignUpReports": { "message": "Higijenu lozinki, zdravlje računa i izvještaje o krađi podatak radi zaštite svojeg trezora." @@ -810,19 +810,19 @@ "message": "Osvježavanje završeno" }, "enableAutoTotpCopy": { - "message": "Copy TOTP automatically" + "message": "Automatski kopiraj TOTP" }, "disableAutoTotpCopyDesc": { "message": "Ako se za prijavu koristi dvostruka autentifikacija, TOTP kontrolni kôd se automatski kopira u međuspremnik nakon auto-ispune korisničkog imena i lozinke." }, "enableAutoBiometricsPrompt": { - "message": "Ask for biometrics on launch" + "message": "Traži biometrijsku autentifikaciju pri pokretanju" }, "premiumRequired": { "message": "Potrebno premium članstvo" }, "premiumRequiredDesc": { - "message": "Za korištenje ove značajke potrebno je premium članstvo." + "message": "Za korištenje ove značajke potrebno je Premium članstvo." }, "enterVerificationCodeApp": { "message": "Unesi 6-znamenkasti kontrolni kôd iz autentifikatorske aplikacije." @@ -852,7 +852,7 @@ "message": "Ponovno slanje kontrolnog koda e-poštom" }, "useAnotherTwoStepMethod": { - "message": "Koristiti drugi način prijave u dva koraka" + "message": "Koristiti drugi način prijave dvostrukom autentifikacijom" }, "insertYubiKey": { "message": "Umetni svoj YubiKey u USB priključak računala, a zatim dodirni njegovu tipku." @@ -873,13 +873,13 @@ "message": "Prijava nije dostupna" }, "noTwoStepProviders": { - "message": "Ovaj račun ima omogućenu prijavu u dva koraka, međutim ovaj web preglednik ne podržava niti jednog konfiguriranog pružatelja prijave u dva koraka." + "message": "Ovaj račun ima omogućenu prijavu dvostrukom autentifikacijom, međutim ovaj web preglednik ne podržava niti jednog konfiguriranog pružatelja dvostruke autentifikacije." }, "noTwoStepProviders2": { "message": "Koristi podržani web-preglednik (npr. Chrome) i/ili dodaj dodatne usluge koje su bolje podržane u web preglednicima (npr. aplikacija Autentifikator)." }, "twoStepOptions": { - "message": "Mogućnosti dvostruke autentifikacije" + "message": "Mogućnosti prijave dvostrukom autentifikacijom" }, "recoveryCodeDesc": { "message": "Izgubljen je pristup uređaju za dvostruku autentifikaciju? Koristi svoj kôd za oporavak za onemogućavanje svih pružatelja usluga dvostruke autentifikacije na tvojem računu." @@ -954,10 +954,10 @@ "message": "URL-ovi okoline su spremljeni." }, "enableAutoFillOnPageLoad": { - "message": "Omogući auto-ispunu nakon učitavanja stranice" + "message": "Auto-ispuna kod učitavanja" }, "enableAutoFillOnPageLoadDesc": { - "message": "Ako se otkrije obrazac za prijavu, samostalno auto-ispuni kada se web stranica učita." + "message": "Nakon učitavanja web stranice, ako je otkriven obrazac za prijavu, auto-ispuni." }, "experimentalFeature": { "message": "Ovo je trenutno eksperimentalna značajka. Koristi na vlastitu odgovornost." @@ -966,7 +966,7 @@ "message": "Zadana postvaka Auto-ispune za prijave" }, "defaultAutoFillOnPageLoadDesc": { - "message": "Nakon omogućavanja Auto-ispune kod učitavanja stranice, moguće je uključiti/isključiti ovu značajku za svaku pojedinu prijavu. Ovo je zadana postavka za prijave koje nisu pojedinčano određene." + "message": "Nakon omogućavanja auto-ispune kod učitavanja stranice, moguće je uključiti/isključiti ovu značajku za svaku pojedinu prijavu. Ovo je zadana postavka za prijave koje nisu pojedinčano određene." }, "itemAutoFillOnPageLoad": { "message": "Auto-ispuna kod učitavanja stranice (ako je uključeno u Postavkama)" @@ -1037,19 +1037,19 @@ "message": "Ovaj preglednik ne može obraditi U2F zahtjeve u ovom iskočnom prozoru. Želiš li otvoriti ovaj iskočni prozor u novom prozoru za prijavu putem U2F?" }, "enableFavicon": { - "message": "Show website icons" + "message": "Prikaži ikone mrežnih mjesta" }, "faviconDesc": { - "message": "Show a recognizable image next to each login." + "message": "Prikaži prepoznatljivu sliku pored svake prijave." }, "enableBadgeCounter": { - "message": "Show badge counter" + "message": "Prikaži značku brojača" }, "badgeCounterDesc": { - "message": "Indicate how many logins you have for the current web page." + "message": "Prikazuje broj spremljenih prijava za trenutnu web stranicu." }, "cardholderName": { - "message": "Vlasnik kartice" + "message": "Vlasnik platne kartice" }, "number": { "message": "Broj" @@ -1142,7 +1142,7 @@ "message": "Tvrtka" }, "ssn": { - "message": "Broj socijalnog osiguranja" + "message": "Broj zdravstvenog osiguranja" }, "passportNumber": { "message": "Broj putovnice" @@ -1312,7 +1312,7 @@ "description": "ex. Date this item was updated" }, "dateCreated": { - "message": "Created", + "message": "Stvoreno", "description": "ex. Date this item was created" }, "datePasswordUpdated": { @@ -1413,7 +1413,7 @@ "message": "Želiš li zaista trajno izbrisati ovu stavku?" }, "permanentlyDeletedItem": { - "message": "Trajno izbrisana stavka" + "message": "Stavka trajno izbrisana" }, "restoreItem": { "message": "Vrati stavku" @@ -1488,7 +1488,7 @@ "message": "Označavanjem ove kućice slažete se sa sljedećim:" }, "acceptPoliciesRequired": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "Uvjeti korištenja i Politika privatnosti nisu prihvaćeni." }, "termsOfService": { "message": "Uvjeti korištenja" @@ -1750,7 +1750,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Send uređen", + "message": "Send spremljen", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1854,7 +1854,7 @@ } }, "vaultTimeoutTooLarge": { - "message": "Your vault timeout exceeds the restrictions set by your organization." + "message": "Vrijeme isteka premašuje ograničenje koje je postavila tvoja organizacija." }, "vaultExportDisabled": { "message": "Izvoz trezora onemogućen" @@ -1914,10 +1914,10 @@ "message": "Pogreška" }, "regenerateUsername": { - "message": "Ponovno kreiraj korisničko ime" + "message": "Ponovno generiraj korisničko ime" }, "generateUsername": { - "message": "Kreiraj korisničko ime" + "message": "Generiraj korisničko ime" }, "usernameType": { "message": "Tip korisničkog imena" @@ -1930,10 +1930,10 @@ "message": "Koristi mogućnosti podadresiranja svog davatelja e-pošte." }, "catchallEmail": { - "message": "Dohvati sve (Catch-all) e-pošta" + "message": "Uhvati sve (catch-all) e-pošta" }, "catchallEmailDesc": { - "message": "Koristi konfigurirani Catch-all sandučić svoje domene." + "message": "Koristi konfigurirani catch-all sandučić svoje domene." }, "random": { "message": "Nasumično" @@ -1945,7 +1945,7 @@ "message": "Naziv web mjesta" }, "whatWouldYouLikeToGenerate": { - "message": "Što želiš kreirati?" + "message": "Što želiš generirati?" }, "passwordType": { "message": "Tip lozinke" @@ -1957,35 +1957,35 @@ "message": "Proslijeđeni pseudonim e-pošte" }, "forwardedEmailDesc": { - "message": "Kreiraj pseudonim e-pošte s vanjskom uslugom prosljeđivanja." + "message": "Generiraj pseudonim e-pošte s vanjskom uslugom prosljeđivanja." }, "hostname": { - "message": "Naziv hosta", + "message": "Naziv poslužitelja", "description": "Part of a URL." }, "apiAccessToken": { - "message": "API pristupni token" + "message": "Token za API pristup" }, "apiKey": { "message": "API ključ" }, "ssoKeyConnectorError": { - "message": "Pogreška konektora ključa: provjerite je li konektor ključa dostupan i radi ispravno." + "message": "Pogreška konektora ključa: provjeri je li konektor ključa dostupan i radi li ispravno." }, "premiumSubcriptionRequired": { - "message": "Premium subscription required" + "message": "Potrebna Premium pretplata" }, "organizationIsDisabled": { - "message": "Organization suspended." + "message": "Organizacija suspendirana." }, "disabledOrganizationFilterError": { - "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Stavkama u suspendiranoj Organizaciji se ne može pristupiti. Kontaktiraj vlasnika Organizacije za pomoć." }, "cardBrandMir": { "message": "Mir" }, "loggingInTo": { - "message": "Logging in to $DOMAIN$", + "message": "Prijava u $DOMAIN$", "placeholders": { "domain": { "content": "$1", @@ -1994,25 +1994,25 @@ } }, "settingsEdited": { - "message": "Settings have been edited" + "message": "Postavke su izmijenjene" }, "environmentEditedClick": { - "message": "Click here" + "message": "Klikni ovdje" }, "environmentEditedReset": { - "message": "to reset to pre-configured settings" + "message": "za ponovno postavljanje zadanih postavki" }, "serverVersion": { - "message": "Server version" + "message": "Verzija poslužitelja" }, "selfHosted": { - "message": "Self-hosted" + "message": "Vlastiti poslužitelj" }, "thirdParty": { "message": "Third-party" }, "thirdPartyServerMessage": { - "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", + "message": "Povezan s implementacijom poslužitelja treće strane, $SERVERNAME$. Provjeri bugove pomoću službenog poslužitelja ili ih prijavi poslužitelju treće strane.", "placeholders": { "servername": { "content": "$1", @@ -2021,12 +2021,27 @@ } }, "lastSeenOn": { - "message": "last seen on: $DATE$", + "message": "zadnji put viđeno: $DATE$", "placeholders": { "date": { "content": "$1", "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Prijava glavnom lozinkom" + }, + "loggingInAs": { + "message": "Prijava kao" + }, + "notYou": { + "message": "Nisi ti?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Zapamti adresu e-pošte" } } diff --git a/apps/browser/src/_locales/hu/messages.json b/apps/browser/src/_locales/hu/messages.json index dd38f0f5d02..54589b871a1 100644 --- a/apps/browser/src/_locales/hu/messages.json +++ b/apps/browser/src/_locales/hu/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Bejelentkezés mesterjelszóval" + }, + "loggingInAs": { + "message": "Bejelentkezve mint" + }, + "notYou": { + "message": "Ez tévedés?" + }, + "newAroundHere": { + "message": "Új felhasználó vagyunk?" + }, + "rememberEmail": { + "message": "Email megjegyzése" } } diff --git a/apps/browser/src/_locales/id/messages.json b/apps/browser/src/_locales/id/messages.json index f0563f550ca..b23d1e55d6b 100644 --- a/apps/browser/src/_locales/id/messages.json +++ b/apps/browser/src/_locales/id/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/it/messages.json b/apps/browser/src/_locales/it/messages.json index be7f898920f..1867971ba64 100644 --- a/apps/browser/src/_locales/it/messages.json +++ b/apps/browser/src/_locales/it/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Accedi con la password principale" + }, + "loggingInAs": { + "message": "Accesso eseguito come" + }, + "notYou": { + "message": "Non sei tu?" + }, + "newAroundHere": { + "message": "Nuovo da queste parti?" + }, + "rememberEmail": { + "message": "Ricorda email" } } diff --git a/apps/browser/src/_locales/ja/messages.json b/apps/browser/src/_locales/ja/messages.json index 20dcfe6e394..d83df1b041c 100644 --- a/apps/browser/src/_locales/ja/messages.json +++ b/apps/browser/src/_locales/ja/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "マスターパスワードでログイン" + }, + "loggingInAs": { + "message": "ログイン中:" + }, + "notYou": { + "message": "あなたではないですか?" + }, + "newAroundHere": { + "message": "初めてですか?" + }, + "rememberEmail": { + "message": "メールアドレスを保存" } } diff --git a/apps/browser/src/_locales/ka/messages.json b/apps/browser/src/_locales/ka/messages.json index 1c75bdf8d95..3ca17091ed4 100644 --- a/apps/browser/src/_locales/ka/messages.json +++ b/apps/browser/src/_locales/ka/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/km/messages.json b/apps/browser/src/_locales/km/messages.json index ae21dc164c5..ba083bf1e36 100644 --- a/apps/browser/src/_locales/km/messages.json +++ b/apps/browser/src/_locales/km/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/kn/messages.json b/apps/browser/src/_locales/kn/messages.json index d3a91b54202..75921f5ad81 100644 --- a/apps/browser/src/_locales/kn/messages.json +++ b/apps/browser/src/_locales/kn/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/ko/messages.json b/apps/browser/src/_locales/ko/messages.json index b339d9880fa..39a49fb2140 100644 --- a/apps/browser/src/_locales/ko/messages.json +++ b/apps/browser/src/_locales/ko/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/lt/messages.json b/apps/browser/src/_locales/lt/messages.json index 1c37c0ef40e..d49b2e83b3b 100644 --- a/apps/browser/src/_locales/lt/messages.json +++ b/apps/browser/src/_locales/lt/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/lv/messages.json b/apps/browser/src/_locales/lv/messages.json index 0295bee2d7a..93e0b200946 100644 --- a/apps/browser/src/_locales/lv/messages.json +++ b/apps/browser/src/_locales/lv/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Pierakstīties ar galveno paroli" + }, + "loggingInAs": { + "message": "Pierakstās kā" + }, + "notYou": { + "message": "Tas neesi Tu?" + }, + "newAroundHere": { + "message": "Jauns šeit?" + }, + "rememberEmail": { + "message": "Atcerēties e-pasta adresi" } } diff --git a/apps/browser/src/_locales/ml/messages.json b/apps/browser/src/_locales/ml/messages.json index 42376dcbfa0..abe2b331629 100644 --- a/apps/browser/src/_locales/ml/messages.json +++ b/apps/browser/src/_locales/ml/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/nb/messages.json b/apps/browser/src/_locales/nb/messages.json index ce7e40e7765..2ab8fbe3a00 100644 --- a/apps/browser/src/_locales/nb/messages.json +++ b/apps/browser/src/_locales/nb/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/nl/messages.json b/apps/browser/src/_locales/nl/messages.json index 5ae8dd4911a..fa4aed52cda 100644 --- a/apps/browser/src/_locales/nl/messages.json +++ b/apps/browser/src/_locales/nl/messages.json @@ -20,7 +20,7 @@ "message": "Inloggen" }, "enterpriseSingleSignOn": { - "message": "Enterprise Single Sign-On" + "message": "Single sign-on voor bedrijven" }, "cancel": { "message": "Annuleren" @@ -330,7 +330,7 @@ "message": "Overig" }, "rateExtension": { - "message": "Extensie beoordelen" + "message": "Deze extensie beoordelen" }, "rateExtensionDesc": { "message": "Je kunt ons helpen door een goede recensie achter te laten!" @@ -1312,7 +1312,7 @@ "description": "ex. Date this item was updated" }, "dateCreated": { - "message": "Created", + "message": "Aangemaakt", "description": "ex. Date this item was created" }, "datePasswordUpdated": { @@ -2009,7 +2009,7 @@ "message": "Zelfgehost" }, "thirdParty": { - "message": "Third-party" + "message": "van derden" }, "thirdPartyServerMessage": { "message": "Verbonden met server implementatie van derden, $SERVERNAME$. Reproduceer bugs via de officiële server, of meld ze bij het serverproject.", @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Inloggen met je hoofdwachtwoord" + }, + "loggingInAs": { + "message": "Inloggen als" + }, + "notYou": { + "message": "Ben jij dit niet?" + }, + "newAroundHere": { + "message": "Nieuw hier?" + }, + "rememberEmail": { + "message": "E-mailadres onthouden" } } diff --git a/apps/browser/src/_locales/nn/messages.json b/apps/browser/src/_locales/nn/messages.json index ae21dc164c5..ba083bf1e36 100644 --- a/apps/browser/src/_locales/nn/messages.json +++ b/apps/browser/src/_locales/nn/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json index c4682d106ed..5682bb08e91 100644 --- a/apps/browser/src/_locales/pl/messages.json +++ b/apps/browser/src/_locales/pl/messages.json @@ -32,7 +32,7 @@ "message": "Wyślij" }, "emailAddress": { - "message": "Adres email" + "message": "Adres e-mail" }, "masterPass": { "message": "Hasło główne" @@ -56,7 +56,7 @@ "message": "Sejf" }, "myVault": { - "message": "Mój Sejf" + "message": "Mój sejf" }, "allVaults": { "message": "Wszystkie sejfy" @@ -68,25 +68,25 @@ "message": "Ustawienia" }, "currentTab": { - "message": "Bieżąca karta" + "message": "Obecna karta" }, "copyPassword": { - "message": "Skopiuj hasło" + "message": "Kopiuj hasło" }, "copyNote": { - "message": "Skopiuj notatkę" + "message": "Kopiuj notatkę" }, "copyUri": { "message": "Kopiuj URI" }, "copyUsername": { - "message": "Skopiuj nazwę użytkownika" + "message": "Kopiuj nazwę użytkownika" }, "copyNumber": { - "message": "Skopiuj numer" + "message": "Kopiuj numer" }, "copySecurityCode": { - "message": "Skopiuj kod zabezpieczający" + "message": "Kopiuj kod zabezpieczający" }, "autoFill": { "message": "Autouzupełnianie" @@ -199,7 +199,7 @@ "message": "Synchronizacja" }, "syncVaultNow": { - "message": "Rozpocznij synchronizację sejfu" + "message": "Synchronizuj sejf" }, "lastSync": { "message": "Ostatnia synchronizacja:" @@ -224,10 +224,10 @@ "message": "Wybierz" }, "generatePassword": { - "message": "Generuj hasło" + "message": "Wygeneruj hasło" }, "regeneratePassword": { - "message": "Wygeneruj hasło ponownie" + "message": "Wygeneruj ponownie hasło" }, "options": { "message": "Opcje" @@ -494,7 +494,7 @@ "message": "Logowanie dwustopniowe sprawia, że konto jest bardziej bezpieczne poprzez wymuszenie potwierdzenia logowania z innego urządzenia, takiego jak z klucza bezpieczeństwa, aplikacji uwierzytelniającej, wiadomości SMS, telefonu lub adresu e-mail. Logowanie dwustopniowe możesz włączyć w sejfie internetowym bitwarden.com. Czy chcesz przejść do tej strony?" }, "editedFolder": { - "message": "Folder został zaktualizowany" + "message": "Folder został zapisany" }, "deleteFolderConfirmation": { "message": "Czy na pewno chcesz usunąć ten folder?" @@ -537,7 +537,7 @@ "message": "Element został dodany" }, "editedItem": { - "message": "Element został zaktualizowany" + "message": "Element został zapisany" }, "deleteItemConfirmation": { "message": "Czy na pewno chcesz to usunąć?" @@ -726,19 +726,19 @@ "message": "Załącznik został usunięty" }, "newAttachment": { - "message": "Dodaj załącznik" + "message": "Dodaj nowy załącznik" }, "noAttachments": { "message": "Brak załączników." }, "attachmentSaved": { - "message": "Załącznik został zapisany." + "message": "Załącznik został zapisany" }, "file": { "message": "Plik" }, "selectFile": { - "message": "Wybierz plik." + "message": "Wybierz plik" }, "maxFileSize": { "message": "Maksymalny rozmiar pliku to 500 MB." @@ -810,7 +810,7 @@ "message": "Odświeżanie zostało zakończone" }, "enableAutoTotpCopy": { - "message": "Kopiuj TOTP automatycznie" + "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." @@ -951,7 +951,7 @@ "message": "Adres URL serwera ikon" }, "environmentSaved": { - "message": "Adresy URL środowiska zostały zapisane." + "message": "Adresy URL środowiska zostały zapisane" }, "enableAutoFillOnPageLoad": { "message": "Włącz autouzupełnianie po załadowaniu strony" @@ -1199,7 +1199,7 @@ "message": "Tożsamość" }, "passwordHistory": { - "message": "Historia haseł" + "message": "Historia hasła" }, "back": { "message": "Powrót" @@ -1731,14 +1731,14 @@ "message": "Obecna liczba dostępów" }, "createSend": { - "message": "Utwórz nową wysyłkę", + "message": "Nowa wysyłka", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { "message": "Nowe hasło" }, "sendDisabled": { - "message": "Wysyłka została wyłączona", + "message": "Wysyłka została usunięta", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1750,7 +1750,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Wysyłka została zaktualizowana", + "message": "Wysyłka została zapisana", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1814,7 +1814,7 @@ "message": "Musisz zweryfikować adres e-mail, aby korzystać z tej funkcji. Adres możesz zweryfikować w sejfie internetowym." }, "updatedMasterPassword": { - "message": "Zaktualizowane hasło główne" + "message": "Hasło główne zostało zaktualizowane" }, "updateMasterPassword": { "message": "Zaktualizuj hasło główne" @@ -1884,7 +1884,7 @@ "message": "Usuń hasło główne" }, "removedMasterPassword": { - "message": "Hasło główne zostało usunięte." + "message": "Hasło główne zostało usunięte" }, "leaveOrganizationConfirmation": { "message": "Czy na pewno chcesz opuścić tę organizację?" @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Logowanie hasłem głównym" + }, + "loggingInAs": { + "message": "Logowanie jako" + }, + "notYou": { + "message": "To nie Ty?" + }, + "newAroundHere": { + "message": "Jesteś tu nowy(a)?" + }, + "rememberEmail": { + "message": "Zapamiętaj email" } } diff --git a/apps/browser/src/_locales/pt_BR/messages.json b/apps/browser/src/_locales/pt_BR/messages.json index 625899d4bc8..c54f78a1ad3 100644 --- a/apps/browser/src/_locales/pt_BR/messages.json +++ b/apps/browser/src/_locales/pt_BR/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Entrar com a senha mestra" + }, + "loggingInAs": { + "message": "Logar como" + }, + "notYou": { + "message": "Não é você?" + }, + "newAroundHere": { + "message": "Novo por aqui?" + }, + "rememberEmail": { + "message": "Lembrar e-mail" } } diff --git a/apps/browser/src/_locales/pt_PT/messages.json b/apps/browser/src/_locales/pt_PT/messages.json index 93aed50622c..4330b593014 100644 --- a/apps/browser/src/_locales/pt_PT/messages.json +++ b/apps/browser/src/_locales/pt_PT/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Iniciar sessão com a palavra-passe mestra" + }, + "loggingInAs": { + "message": "A iniciar sessão como" + }, + "notYou": { + "message": "Utilizador incorreto?" + }, + "newAroundHere": { + "message": "Novo por aqui?" + }, + "rememberEmail": { + "message": "Relembrar e-mail" } } diff --git a/apps/browser/src/_locales/ro/messages.json b/apps/browser/src/_locales/ro/messages.json index d8e719f6aac..a72089f3810 100644 --- a/apps/browser/src/_locales/ro/messages.json +++ b/apps/browser/src/_locales/ro/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Autentificați-vă cu parola principală" + }, + "loggingInAs": { + "message": "Autentificare ca" + }, + "notYou": { + "message": "Nu sunteți dvs.?" + }, + "newAroundHere": { + "message": "Sunteți nou pe aici?" + }, + "rememberEmail": { + "message": "Memorare e-mail" } } diff --git a/apps/browser/src/_locales/ru/messages.json b/apps/browser/src/_locales/ru/messages.json index 2b958cc95ed..7b20d2151d3 100644 --- a/apps/browser/src/_locales/ru/messages.json +++ b/apps/browser/src/_locales/ru/messages.json @@ -20,7 +20,7 @@ "message": "Войти" }, "enterpriseSingleSignOn": { - "message": "Единая корпоративная авторизация (SSO)" + "message": "Единая корпоративная авторизация" }, "cancel": { "message": "Отмена" @@ -157,7 +157,7 @@ "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "twoStepLogin": { - "message": "Двухфакторная аутентификация" + "message": "Двухэтапная аутентификация" }, "logOut": { "message": "Выход" @@ -199,7 +199,7 @@ "message": "Синхронизация" }, "syncVaultNow": { - "message": "Синхронизировать сейчас" + "message": "Синхронизировать" }, "lastSync": { "message": "Последняя синхронизация:" @@ -367,7 +367,7 @@ "message": "Тайм-аут хранилища" }, "lockNow": { - "message": "Заблокировать сейчас" + "message": "Заблокировать" }, "immediately": { "message": "Немедленно" @@ -464,7 +464,7 @@ "message": "Вы вышли из хранилища" }, "loginExpired": { - "message": "Истек срок действия вашей сессии." + "message": "Истек срок действия вашего сеанса." }, "logOutConfirmation": { "message": "Вы действительно хотите выйти?" @@ -491,7 +491,7 @@ "message": "Вы можете изменить свой мастер-пароль на bitwarden.com. Перейти на сайт сейчас?" }, "twoStepLoginConfirmation": { - "message": "Двухфакторная аутентификация делает ваш аккаунт более защищенным, требуя подтверждения входа на другом устройстве, например, ключом безопасности, приложением-аутентификатором, SMS, телефонным звонком или письмом. Двухфакторная аутентификация включается на bitwarden.com. Перейти на сайт сейчас?" + "message": "Двухэтапная аутентификация делает аккаунт более защищенным, поскольку требуется подтверждение входа при помощи другого устройства, например, ключа безопасности, приложения-аутентификатора, SMS, телефонного звонка или электронной почты. Двухэтапная аутентификация включается на bitwarden.com. Перейти на сайт сейчас?" }, "editedFolder": { "message": "Папка сохранена" @@ -705,7 +705,7 @@ "message": "Подробнее" }, "authenticatorKeyTotp": { - "message": "Ключ проверки подлинности (TOTP)" + "message": "Ключ аутентификатора (TOTP)" }, "verificationCodeTotp": { "message": "Код подтверждения (TOTP)" @@ -738,7 +738,7 @@ "message": "Файл" }, "selectFile": { - "message": "Выберите файл." + "message": "Выбрать файл" }, "maxFileSize": { "message": "Максимальный размер файла 500 МБ." @@ -771,13 +771,13 @@ "message": "1 ГБ зашифрованного хранилища для вложенных файлов." }, "ppremiumSignUpTwoStep": { - "message": "Дополнительные варианты двухфакторной аутентификации, такие как YubiKey, FIDO U2F и Duo." + "message": "Дополнительные варианты двухэтапной аутентификации, такие как YubiKey, FIDO U2F и Duo." }, "ppremiumSignUpReports": { "message": "Гигиена паролей, здоровье аккаунта и отчеты об утечках данных для обеспечения безопасности вашего хранилища." }, "ppremiumSignUpTotp": { - "message": "TOTP-генератор кодов (2ФА) для логинов в хранилище." + "message": "Генератор кода подтверждения TOTP (2ЭА) для входа в ваше хранилище." }, "ppremiumSignUpSupport": { "message": "Приоритетная поддержка." @@ -810,7 +810,7 @@ "message": "Обновление завершено" }, "enableAutoTotpCopy": { - "message": "Копировать TOTP автоматически" + "message": "Скопировать TOTP автоматически" }, "disableAutoTotpCopyDesc": { "message": "Если к вашему логину прикреплен ключ аутентификации, то код подтверждения TOTP будет скопирован при автозаполнении логина." @@ -852,7 +852,7 @@ "message": "Отправить код подтверждения еще раз" }, "useAnotherTwoStepMethod": { - "message": "Использовать другой метод двухфакторной аутентификации" + "message": "Использовать другой метод двухэтапной аутентификации" }, "insertYubiKey": { "message": "Вставьте свой YubiKey в USB-порт компьютера и нажмите его кнопку." @@ -861,7 +861,7 @@ "message": "Вставьте ключ безопасности в USB-порт компьютера. Если у ключа есть кнопка, нажмите ее." }, "webAuthnNewTab": { - "message": "Продолжить верификацию 2ФА WebAuthn в новой вкладке." + "message": "Продолжить верификацию 2ЭА WebAuthn в новой вкладке." }, "webAuthnNewTabOpen": { "message": "Открыть новую вкладку" @@ -873,16 +873,16 @@ "message": "Вход недоступен" }, "noTwoStepProviders": { - "message": "У этой учетной записи включена двухфакторная аутентификация, однако ни один из настроенных вариантов не поддерживается этим веб-браузером." + "message": "У этой учетной записи включена двухэтапная аутентификация, однако ни один из настроенных вариантов не поддерживается этим браузером." }, "noTwoStepProviders2": { "message": "Используйте поддерживаемый веб-браузер (например, Chrome) и/или добавьте дополнительные варианты аутентификации, которые поддерживаются в веб-браузерах (например, приложение-аутентификатор)." }, "twoStepOptions": { - "message": "Настройки двухфакторной аутентификации" + "message": "Настройки двухэтапной аутентификации" }, "recoveryCodeDesc": { - "message": "Потеряли доступ ко всем вариантам двухфакторной аутентификации? Используйте код восстановления, чтобы отключить двухфакторную аутентификацию для вашей учетной записи." + "message": "Потеряли доступ ко всем вариантам двухэтапной аутентификации? Используйте код восстановления, чтобы отключить двухэтапную аутентификацию для вашей учетной записи." }, "recoveryCodeTitle": { "message": "Код восстановления" @@ -1728,7 +1728,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Счетчик текущих обращений" + "message": "Текущих обращений" }, "createSend": { "message": "Новая Send", @@ -1820,7 +1820,7 @@ "message": "Обновить мастер-пароль" }, "updateMasterPasswordWarning": { - "message": "Мастер-пароль недавно был изменен администратором вашей организации. Чтобы получить доступ к хранилищу, вы должны обновить его сейчас. В результате текущая сессия будет завершена, потребуется повторный вход. Активные сессии на других устройствах могут оставаться активными в течение одного часа." + "message": "Мастер-пароль недавно был изменен администратором вашей организации. Чтобы получить доступ к хранилищу, вы должны обновить его сейчас. В результате текущий сеанс будет завершен, потребуется повторный вход. Сеансы на других устройствах могут оставаться активными в течение одного часа." }, "resetPasswordPolicyAutoEnroll": { "message": "Автоматическое развертывание" @@ -1896,7 +1896,7 @@ "message": "Показать количество символов" }, "sessionTimeout": { - "message": "Время вашей сессии истекло. Пожалуйста, вернитесь и попробуйте войти снова." + "message": "Время вашего сеанса истекло. Пожалуйста, вернитесь и попробуйте войти снова." }, "exportingPersonalVaultTitle": { "message": "Экспорт личного хранилища" @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Войти с мастер-паролем" + }, + "loggingInAs": { + "message": "Войти как" + }, + "notYou": { + "message": "Не вы?" + }, + "newAroundHere": { + "message": "Вы здесь впервые?" + }, + "rememberEmail": { + "message": "Запомнить email" } } diff --git a/apps/browser/src/_locales/si/messages.json b/apps/browser/src/_locales/si/messages.json index e12ddce1f19..6fdc0908692 100644 --- a/apps/browser/src/_locales/si/messages.json +++ b/apps/browser/src/_locales/si/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/sk/messages.json b/apps/browser/src/_locales/sk/messages.json index b7c2cc79d84..50cfa01b8b4 100644 --- a/apps/browser/src/_locales/sk/messages.json +++ b/apps/browser/src/_locales/sk/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Prihlásenie pomocou hlavného hesla" + }, + "loggingInAs": { + "message": "Prihlasujete sa ako" + }, + "notYou": { + "message": "Nie ste to vy?" + }, + "newAroundHere": { + "message": "Ste tu nový?" + }, + "rememberEmail": { + "message": "Zapamätať si e-mail" } } diff --git a/apps/browser/src/_locales/sl/messages.json b/apps/browser/src/_locales/sl/messages.json index 2624b26293a..746ec5540a9 100644 --- a/apps/browser/src/_locales/sl/messages.json +++ b/apps/browser/src/_locales/sl/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/sr/messages.json b/apps/browser/src/_locales/sr/messages.json index 5615620ed55..37020aa2a7e 100644 --- a/apps/browser/src/_locales/sr/messages.json +++ b/apps/browser/src/_locales/sr/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Пријавите се са главном лозинком" + }, + "loggingInAs": { + "message": "Пријављивање као" + }, + "notYou": { + "message": "Нисте Ви?" + }, + "newAroundHere": { + "message": "Нов овде?" + }, + "rememberEmail": { + "message": "Запамти имејл" } } diff --git a/apps/browser/src/_locales/sv/messages.json b/apps/browser/src/_locales/sv/messages.json index 31ea1f7e23e..a4c107152af 100644 --- a/apps/browser/src/_locales/sv/messages.json +++ b/apps/browser/src/_locales/sv/messages.json @@ -44,10 +44,10 @@ "message": "En huvudlösenordsledtråd kan hjälpa dig att komma ihåg ditt lösenord om du glömmer bort det." }, "reTypeMasterPass": { - "message": "Skriv in huvudlösenordet igen" + "message": "Ange huvudlösenordet igen" }, "masterPassHint": { - "message": "Huvudlösenordsledtråd (frivillig)" + "message": "Huvudlösenordsledtråd (valfri)" }, "tab": { "message": "Flik" @@ -92,13 +92,13 @@ "message": "Fyll i automatiskt" }, "generatePasswordCopied": { - "message": "Skapa lösenord (kopieras)" + "message": "Skapa lösenord (kopierad)" }, "copyElementIdentifier": { "message": "Kopiera anpassat fältnamn" }, "noMatchingLogins": { - "message": "Inga matchande inloggningar." + "message": "Inga matchande inloggningar" }, "unlockVaultMenu": { "message": "Lås upp ditt valv" @@ -131,7 +131,7 @@ "message": "Skicka en verifieringskod till din e-postadress" }, "sendCode": { - "message": "Skicka kod" + "message": "Send-kod" }, "codeSent": { "message": "Kod har skickats" @@ -157,7 +157,7 @@ "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "twoStepLogin": { - "message": "Tvåstegsverifiering" + "message": "Tvåfaktorsautentisering" }, "logOut": { "message": "Logga ut" @@ -227,7 +227,7 @@ "message": "Skapa lösenord" }, "regeneratePassword": { - "message": "Skapa nytt lösenord" + "message": "Återskapa lösenord" }, "options": { "message": "Alternativ" @@ -264,7 +264,7 @@ "message": "Minsta antal siffror" }, "minSpecial": { - "message": "Minsta antal specialtecken" + "message": "Minsta antal speciella tecken" }, "avoidAmbChar": { "message": "Undvik tvetydiga tecken" @@ -439,7 +439,7 @@ "message": "Ditt nya konto har blivit skapat! Du kan nu logga in." }, "masterPassSent": { - "message": "Vi har skickat ett mejl till dig med din huvudlösenordsledtråd." + "message": "Vi har skickat ett e-postmeddelande till dig med din huvudlösenordsledtråd." }, "verificationCodeRequired": { "message": "Verifieringskod krävs." @@ -494,16 +494,16 @@ "message": "Tvåstegsverifiering gör ditt konto säkrare genom att kräva att du verifierar din inloggning med en annan enhet, t.ex. en säkerhetsnyckel, autentiseringsapp, SMS, telefonsamtal eller e-post. Tvåstegsverifiering kan aktiveras i Bitwardens webbvalv. Vill du besöka webbplatsen nu?" }, "editedFolder": { - "message": "Redigerade mapp" + "message": "Mapp sparad" }, "deleteFolderConfirmation": { "message": "Är du säker på att du vill ta bort den här mappen?" }, "deletedFolder": { - "message": "Raderade mapp" + "message": "Mapp raderad" }, "gettingStartedTutorial": { - "message": "Komma igång - Handledning" + "message": "Komma igång-guide" }, "gettingStartedTutorialVideo": { "message": "Titta på vår 'Komma igång - Handledning'-video för att lära dig hur du får ut det mesta av webbläsartillägget." @@ -534,16 +534,16 @@ "message": "Ny URI" }, "addedItem": { - "message": "Lade till objekt" + "message": "Nytt objekt skapat" }, "editedItem": { - "message": "Redigerade objekt" + "message": "Objekt sparat" }, "deleteItemConfirmation": { "message": "Är du säker på att du vill radera detta objekt?" }, "deletedItem": { - "message": "Raderade objekt" + "message": "Objekt skickat till papperskorgen" }, "overwritePassword": { "message": "Skriv över lösenord" @@ -574,7 +574,7 @@ "message": "Be om att lägga till inloggning" }, "addLoginNotificationDesc": { - "message": "Aviseringar för nya inloggningar frågar dig om du vill lägga till en inloggning automatiskt till ditt valv, när du använder en inloggning som inte redan finns i ditt valv." + "message": "Be om att lägga till ett objekt om det inte finns i ditt valv." }, "showCardsCurrentTab": { "message": "Visa kort på fliksida" @@ -642,7 +642,7 @@ "description": "Light color" }, "solarizedDark": { - "message": "Solarized Dark", + "message": "Solarized mörk", "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." }, "exportVault": { @@ -732,13 +732,13 @@ "message": "Inga bilagor." }, "attachmentSaved": { - "message": "Bilagan har sparats." + "message": "Bilaga sparad" }, "file": { "message": "Fil" }, "selectFile": { - "message": "Välj en fil." + "message": "Välj en fil" }, "maxFileSize": { "message": "Filen får vara maximalt 500 MB." @@ -837,7 +837,7 @@ } }, "verificationCodeEmailSent": { - "message": "Verifieringsmejl skickat till $EMAIL$.", + "message": "Verifieringsmeddelande har skickats till $EMAIL$.", "placeholders": { "email": { "content": "$1", @@ -849,7 +849,7 @@ "message": "Kom ihåg mig" }, "sendVerificationCodeEmailAgain": { - "message": "Skicka verifieringskod-mejlet igen" + "message": "Skicka e-postmeddelandet med verifieringskoden igen" }, "useAnotherTwoStepMethod": { "message": "Använd en annan inloggningsmetod för tvåstegsverifiering" @@ -912,13 +912,13 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Använd en WebAuthn-aktiverad säkerhetsnyckel för att komma åt ditt konto." + "message": "Använd en WebAuthn-kompatibel säkerhetsnyckel för att komma åt ditt konto." }, "emailTitle": { "message": "E-post" }, "emailDesc": { - "message": "Verifieringskoder kommer att skickas till dig." + "message": "Verifieringskoder kommer att skickas till dig via e-post." }, "selfHostedEnvironment": { "message": "Egen-hostad miljö" @@ -951,7 +951,7 @@ "message": "Ikonserver-URL" }, "environmentSaved": { - "message": "Miljö-URL:erna har sparats." + "message": "Miljö-URL:erna har sparats" }, "enableAutoFillOnPageLoad": { "message": "Aktivera automatisk ifyllnad vid sidhämtning" @@ -1602,7 +1602,7 @@ "message": "Fil" }, "allSends": { - "message": "Alla Send", + "message": "Alla Sends", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "maxAccessCountReached": { @@ -1619,7 +1619,7 @@ "message": "Lösenordsskyddad" }, "copySendLink": { - "message": "Kopiera länk till Send", + "message": "Kopiera Send-länk", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "removePassword": { @@ -1632,11 +1632,11 @@ "message": "Tog bort lösenord" }, "deletedSend": { - "message": "Raderad Send", + "message": "Send har raderats", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { - "message": "Länk till Send", + "message": "Send-länk", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disabled": { @@ -1662,7 +1662,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNameDesc": { - "message": "Ett eget namn för att beskriva denna Send.", + "message": "Ett vänligt namn som beskriver denna Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendFileDesc": { @@ -1679,7 +1679,7 @@ "message": "Utgångsdatum" }, "expirationDateDesc": { - "message": "Om detta ställs in kommer åtkomst till denna Skicka att upphöra på angivet datum och tid.", + "message": "Om angiven kommer åtkomst till denna Send att upphöra på angivet datum och tid.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "oneDay": { @@ -1701,11 +1701,11 @@ "message": "Maximalt antal åtkomster" }, "maximumAccessCountDesc": { - "message": "Om detta ställs in kommer användare inte längre komma åt denna Send när maximalt antalet åtkomster har uppnåtts.", + "message": "Om angivet kommer användare inte längre kunna komma åt denna Send när det maximala antalet åtkomster har uppnåtts.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendPasswordDesc": { - "message": "Kräv eventuellt lösenord av användare för att komma åt denna Send.", + "message": "Kräv valfritt ett lösenord för att användare ska komma åt denna Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNotesDesc": { @@ -1738,19 +1738,19 @@ "message": "Nytt lösenord" }, "sendDisabled": { - "message": "Send inaktiverad", + "message": "Send borttagen", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { - "message": "På grund av företagspolicy kan du bara ta bort en befintlig Send.", + "message": "På grund av en företagspolicy kan du bara radera en befintlig Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Skapade Send", + "message": "Ny Send har skapats", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Redigera Send", + "message": "Send har sparats", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1814,7 +1814,7 @@ "message": "Du måste verifiera din e-postadress för att använda den här funktionen. Du kan verifiera din e-postadress i webbvalvet." }, "updatedMasterPassword": { - "message": "Huvudlösenord uppdaterades " + "message": "Huvudlösenord uppdaterades" }, "updateMasterPassword": { "message": "Uppdatera huvudlösenord" @@ -1857,10 +1857,10 @@ "message": "Ditt valvs tidsgräns överskrider de begränsningar som fastställts av din organisation." }, "vaultExportDisabled": { - "message": "Valvexport inaktiverad" + "message": "Valvexport ej tillgänglig" }, "personalVaultExportPolicyInEffect": { - "message": "En eller flera organisationsprinciper hindrar dig från att exportera ditt personliga valv." + "message": "En eller flera organisationsprinciper hindrar dig från att exportera ditt individuella valv." }, "copyCustomFieldNameInvalidElement": { "message": "Det gick inte att identifiera något giltigt formulärelement. Prova att inspektera HTML-koden istället." @@ -1884,7 +1884,7 @@ "message": "Ta bort huvudlösenord" }, "removedMasterPassword": { - "message": "Huvudlösenord togs bort." + "message": "Huvudlösenord togs bort" }, "leaveOrganizationConfirmation": { "message": "Är du säker på att du vill lämna denna organisation?" @@ -1899,7 +1899,7 @@ "message": "Din session har gått ut. Gå tillbaka och försök logga in igen." }, "exportingPersonalVaultTitle": { - "message": "Exporterar personligt valv" + "message": "Exporterar individuellt valv" }, "exportingPersonalVaultDescription": { "message": "Endast de personliga valvobjekt som är associerade med $EMAIL$ kommer att exporteras. Organisationens valvobjekt kommer inte att inkluderas.", @@ -1930,10 +1930,10 @@ "message": "Använd din e-postleverantörs subadresseringsfunktioner." }, "catchallEmail": { - "message": "E-post som fångar in alla" + "message": "E-post med catch-all" }, "catchallEmailDesc": { - "message": "Använd din domäns konfigurerade inkorg som fångar in alla." + "message": "Använd din domäns konfigurerade catch-all inkorg." }, "random": { "message": "Slumpmässig" @@ -1942,7 +1942,7 @@ "message": "Slumpmässigt ord" }, "websiteName": { - "message": "Namn på webbplats" + "message": "Webbplatsnamn" }, "whatWouldYouLikeToGenerate": { "message": "Vad vill du skapa?" @@ -1954,7 +1954,7 @@ "message": "Tjänst" }, "forwardedEmail": { - "message": "Vidarebefordrande e-postalias" + "message": "Vidarebefordrat e-postalias" }, "forwardedEmailDesc": { "message": "Skapa ett e-postalias med en extern vidarebefordranstjänst." @@ -1973,7 +1973,7 @@ "message": "Key Connector-fel: säkerställ att Key Connector är tillgänglig och fungerar korrekt." }, "premiumSubcriptionRequired": { - "message": "Premiumabonnemang krävs" + "message": "Premium-prenumeration krävs" }, "organizationIsDisabled": { "message": "Organisationen är inaktiverad." @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Logga in med huvudlösenord" + }, + "loggingInAs": { + "message": "Loggar in som" + }, + "notYou": { + "message": "Är det inte du?" + }, + "newAroundHere": { + "message": "Är du ny här?" + }, + "rememberEmail": { + "message": "Kom ihåg e-postadress" } } diff --git a/apps/browser/src/_locales/th/messages.json b/apps/browser/src/_locales/th/messages.json index 610e6a1950f..52062854b6d 100644 --- a/apps/browser/src/_locales/th/messages.json +++ b/apps/browser/src/_locales/th/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/tr/messages.json b/apps/browser/src/_locales/tr/messages.json index 47bebf604ed..2f024d900b5 100644 --- a/apps/browser/src/_locales/tr/messages.json +++ b/apps/browser/src/_locales/tr/messages.json @@ -14,10 +14,10 @@ "message": "Güvenli kasanıza ulaşmak için giriş yapın veya yeni bir hesap oluşturun." }, "createAccount": { - "message": "Hesap Oluştur" + "message": "Hesap oluştur" }, "login": { - "message": "Giriş Yap" + "message": "Giriş yap" }, "enterpriseSingleSignOn": { "message": "Kurumsal tek oturum açma (SSO)" @@ -32,10 +32,10 @@ "message": "Gönder" }, "emailAddress": { - "message": "E-posta Adresi" + "message": "E-posta adresi" }, "masterPass": { - "message": "Ana Parola" + "message": "Ana parola" }, "masterPassDesc": { "message": "Ana parola, kasanıza ulaşmak için kullanacağınız paroladır. Ana parolanızı unutmamanız çok önemlidir. Unutursanız parolalarınızı asla kurtaramazsınız." @@ -44,10 +44,10 @@ "message": "Ana parolanızı unutursanız bu ipucuna bakınca size ana parolanızı hatırlatacak bir şey yazabilirsiniz." }, "reTypeMasterPass": { - "message": "Ana Parolayı Tekrar Yazın" + "message": "Ana parolayı tekrar yazın" }, "masterPassHint": { - "message": "Ana Parola İpucu (isteğe bağlı)" + "message": "Ana parola ipucu (isteğe bağlı)" }, "tab": { "message": "Sekme" @@ -68,10 +68,10 @@ "message": "Ayarlar" }, "currentTab": { - "message": "Mevcut Sekme" + "message": "Geçerli sekme" }, "copyPassword": { - "message": "Parolayı Kopyala" + "message": "Parolayı kopyala" }, "copyNote": { "message": "Notu kopyala" @@ -80,25 +80,25 @@ "message": "URI'yi kopyala" }, "copyUsername": { - "message": "Kullanıcı Adını Kopyala" + "message": "Kullanıcı adını kopyala" }, "copyNumber": { - "message": "Numarayı Kopyala" + "message": "Numarayı kopyala" }, "copySecurityCode": { - "message": "Güvenlik Kodunu Kopyala" + "message": "Güvenlik kodunu kopyala" }, "autoFill": { "message": "Otomatik doldur" }, "generatePasswordCopied": { - "message": "Parola Oluştur (kopyalandı)" + "message": "Parola oluştur (ve kopyala)" }, "copyElementIdentifier": { "message": "Özel alan adını kopyala" }, "noMatchingLogins": { - "message": "Eşleşen hesap yok." + "message": "Eşleşen hesap yok" }, "unlockVaultMenu": { "message": "Kasanızın kilidini açın" @@ -110,13 +110,13 @@ "message": "Mevcut sekme için otomatik doldurulacak giriş bilgisi bulunmuyor." }, "addLogin": { - "message": "Oturum Ekle" + "message": "Hesap ekle" }, "addItem": { - "message": "Hesap Ekle" + "message": "Kayıt ekle" }, "passwordHint": { - "message": "Parola İpucu" + "message": "Parola ipucu" }, "enterEmailToGetHint": { "message": "Ana parola ipucunu almak için hesabınızın e-posta adresini girin." @@ -137,7 +137,7 @@ "message": "Kod gönderildi" }, "verificationCode": { - "message": "Doğrulama Kodu" + "message": "Doğrulama kodu" }, "confirmIdentity": { "message": "Devam etmek için kimliğinizi doğrulayın." @@ -175,16 +175,16 @@ "message": "Taşı" }, "addFolder": { - "message": "Klasör Ekle" + "message": "Klasör ekle" }, "name": { "message": "Ad" }, "editFolder": { - "message": "Klasörü Düzenle" + "message": "Klasörü düzenle" }, "deleteFolder": { - "message": "Klasörü Sil" + "message": "Klasörü sil" }, "folders": { "message": "Klasörler" @@ -199,13 +199,13 @@ "message": "Eşitle" }, "syncVaultNow": { - "message": "Kasayı Şimdi Eşitle" + "message": "Kasayı şimdi eşitle" }, "lastSync": { - "message": "Son Eşitleme:" + "message": "Son eşitleme:" }, "passGen": { - "message": "Parola Oluşturucu" + "message": "Parola üretici" }, "generator": { "message": "Oluşturucu", @@ -224,10 +224,10 @@ "message": "Seç" }, "generatePassword": { - "message": "Parola Oluştur" + "message": "Parola oluştur" }, "regeneratePassword": { - "message": "Tekrar Parola Oluştur" + "message": "Yeni parola oluştur" }, "options": { "message": "Seçenekler" @@ -248,26 +248,26 @@ "message": "Özel karakterler (!@#$%^&*)" }, "numWords": { - "message": "Kelime Sayısı" + "message": "Kelime sayısı" }, "wordSeparator": { - "message": "Kelime Ayracı" + "message": "Kelime ayracı" }, "capitalize": { "message": "Baş harfleri büyük yap", "description": "Make the first letter of a work uppercase." }, "includeNumber": { - "message": "Sayı Ekle" + "message": "Rakam ekle" }, "minNumbers": { - "message": "En Az Rakam" + "message": "En az rakam" }, "minSpecial": { - "message": "En Az Özel Karakter" + "message": "En az özel karakter" }, "avoidAmbChar": { - "message": "Belirsiz Karakterler Kullanma" + "message": "Okurken karışabilecek karakterleri kullanma" }, "searchVault": { "message": "Kasada ara" @@ -282,7 +282,7 @@ "message": "Listelenecek kayıt yok." }, "itemInformation": { - "message": "Hesap Bilgisi" + "message": "Hesap bilgileri" }, "username": { "message": "Kullanıcı adı" @@ -339,7 +339,7 @@ "message": "Web tarayıcınız panoya kopyalamayı desteklemiyor. Parolayı elle kopyalayın." }, "verifyIdentity": { - "message": "Kimlik Doğrulama" + "message": "Kimliği doğrula" }, "yourVaultIsLocked": { "message": "Kasanız kilitli. Devam etmek için kimliğinizi doğrulayın." @@ -485,7 +485,7 @@ "message": "Klasör eklendi" }, "changeMasterPass": { - "message": "Ana Parolayı Değiştir" + "message": "Ana parolayı değiştir" }, "changeMasterPasswordConfirmation": { "message": "Ana parolanızı bitwarden.com web kasası üzerinden değiştirebilirsiniz. Siteye gitmek ister misiniz?" @@ -494,7 +494,7 @@ "message": "İki aşamalı giriş, hesabınıza girererken işlemi bir güvenlik anahtarı, şifrematik uygulaması, SMS, telefon araması veya e-posta gibi ek bir yöntemle doğrulamanızı isteyerek hesabınızın güvenliğini artırır. İki aşamalı giriş özelliğini bitwarden.com web kasası üzerinden etkinleştirebilirsiniz. Şimdi siteye gitmek ister misiniz?" }, "editedFolder": { - "message": "Klasör Düzenlendi" + "message": "Klasör kaydedildi" }, "deleteFolderConfirmation": { "message": "Bu klasörü silmek istediğinizden emin misiniz?" @@ -503,7 +503,7 @@ "message": "Klasör silindi" }, "gettingStartedTutorial": { - "message": "Başlangıç Rehberi" + "message": "Başlangıç rehberi" }, "gettingStartedTutorialVideo": { "message": "Tarayıcı uzantımızdan en iyi şekilde yararlanmayı öğrenmek için başlangıç eğitimimizi izleyebilirsiniz." @@ -537,7 +537,7 @@ "message": "Kayıt eklendi" }, "editedItem": { - "message": "Kayıt düzenlendi" + "message": "Kayıt kaydedildi" }, "deleteItemConfirmation": { "message": "Çöp kutusuna göndermek istediğinizden emin misiniz?" @@ -567,7 +567,7 @@ "message": "Arama türü" }, "noneFolder": { - "message": "Klasör Yok", + "message": "Klasör yok", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { @@ -656,7 +656,7 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Kasayı Dışa Aktarmayı Onayla" + "message": "Kasayı dışa aktarmayı onaylayın" }, "exportWarningDesc": { "message": "Dışa aktarılan dosyadaki verileriniz şifrelenmemiş olacak. Bu dosyayı güvensiz yöntemlerle (örn. e-posta) göndermemeli ve saklamamalısınız. İşiniz bittikten sonra dosyayı hemen silin." @@ -732,13 +732,13 @@ "message": "Ek yok." }, "attachmentSaved": { - "message": "Dosya kaydedildi." + "message": "Dosya kaydedildi" }, "file": { "message": "Dosya" }, "selectFile": { - "message": "Bir dosya seçin." + "message": "Bir dosya seçin" }, "maxFileSize": { "message": "Maksimum dosya boyutu 500 MB'dir." @@ -753,13 +753,13 @@ "message": "Premium üyelik" }, "premiumManage": { - "message": "Üyeliğimi yönet" + "message": "Üyeliği yönet" }, "premiumManageAlert": { "message": "Üyeliğinizi bitwarden.com web kasası üzerinden yönetebilirsiniz. Şimdi siteye gitmek ister misiniz?" }, "premiumRefresh": { - "message": "Üyeliğimi yenile" + "message": "Üyeliği yenile" }, "premiumNotCurrentMember": { "message": "Şu anda premium üye değilsiniz." @@ -873,7 +873,7 @@ "message": "Giriş yapılamıyor" }, "noTwoStepProviders": { - "message": "Bu hesapta iki aşamalı giriş özelliği etkin ama yapılandırdığınız iki aşamalı giriş sağlayıcılarının hiçbiri bu tarayıcıyı desteklemiyor." + "message": "Bu hesapta iki aşamalı giriş açık ama yapılandırdığınız iki aşamalı giriş sağlayıcılarının hiçbiri bu web tarayıcısını desteklemiyor." }, "noTwoStepProviders2": { "message": "Lütfen desteklenen bir web tarayıcısı (örn. Chrome) kullanın ve/veya web tarayıcılarında daha iyi desteklenen sağlayıcılar (örn. kimlik doğrulama uygulaması) ekleyin." @@ -885,7 +885,7 @@ "message": "İki aşamalı doğrulama sağlayıcılarınıza ulaşamıyor musunuz? Kurtarma kodunuzu kullanarak hesabınızdaki tüm iki aşamalı giriş sağlayıcılarını devre dışı bırakabilirsiniz." }, "recoveryCodeTitle": { - "message": "Kurtarma Kodu" + "message": "Kurtarma kodu" }, "authenticatorAppTitle": { "message": "Kimlik doğrulama uygulaması" @@ -951,7 +951,7 @@ "message": "Simge sunucusu URL'si" }, "environmentSaved": { - "message": "Ortam URL'leri kaydedildi." + "message": "Ortam URL'leri kaydedildi" }, "enableAutoFillOnPageLoad": { "message": "Sayfa yüklendiğinde otomatik doldur" @@ -969,7 +969,7 @@ "message": "\"Sayfa yüklendiğinde otomatik doldur\"u her hesabın \"Düzenle\" görünümünden ayrı ayrı kapatabilirsiniz." }, "itemAutoFillOnPageLoad": { - "message": "Sayfa yüklendiğinde otomatik doldur (seçeneklerde etkinleştirilmişse)" + "message": "Sayfa yüklendiğinde otomatik doldur (Seçeneklerde ayarlanmışsa)" }, "autoFillOnPageLoadUseDefault": { "message": "Varsayılan ayarı kullan" @@ -1002,7 +1002,7 @@ "message": "Özel alanlar" }, "copyValue": { - "message": "Değeri Kopyala" + "message": "Değeri kopyala" }, "value": { "message": "Değer" @@ -1130,7 +1130,7 @@ "message": "İkinci ad" }, "lastName": { - "message": "Soyad" + "message": "Soyadı" }, "fullName": { "message": "Adı soyadı" @@ -1296,7 +1296,7 @@ "message": "Türler" }, "allItems": { - "message": "Tüm ögeler" + "message": "Tüm kayıtlar" }, "noPasswordsInList": { "message": "Listelenecek parola yok." @@ -1316,7 +1316,7 @@ "description": "ex. Date this item was created" }, "datePasswordUpdated": { - "message": "Parola Güncellendi", + "message": "Parola güncellendi", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1428,7 +1428,7 @@ "message": "Çıkış yaptığınızda kasanıza erişiminiz tamamen sonlanacak ve zaman aşımının ardından çevrimiçi kimlik doğrulaması yapmanız gerekecek. Bu ayarı kullanmak istediğinizden emin misiniz?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Zaman Aşımı Eylem Onayı" + "message": "Zaman aşımı eylem onayı" }, "autoFillAndSave": { "message": "Otomatik doldur ve kaydet" @@ -1437,7 +1437,7 @@ "message": "Kayıt otomatik dolduruldu ve URI kaydedildi" }, "autoFillSuccess": { - "message": "Kayıt otomatik dolduruldu" + "message": "Kayıt otomatik dolduruldu " }, "setMasterPassword": { "message": "Ana parolayı belirle" @@ -1509,19 +1509,19 @@ "message": "Lütfen masaüstü uygulamasında bu parmak izinin göründüğünü onaylayın: " }, "desktopIntegrationDisabledTitle": { - "message": "Tarayıcı entegrasyonu etkinleştirilmedi" + "message": "Tarayıcı entegrasyonu ayarlanmadı" }, "desktopIntegrationDisabledDesc": { - "message": "Bitwarden masaüstü uygulamasında tarayıcı entegrasyonu etkin değil. Lütfen masaüstü uygulamasının ayarlarından tarayıcı entegrasyonunu açın." + "message": "Bitwarden masaüstü uygulamasında tarayıcı entegrasyonu ayarlanmamış. Lütfen masaüstü uygulamasının ayarlarından tarayıcı entegrasyonunu kurun." }, "startDesktopTitle": { "message": "Bitwarden masaüstü uygulamasını başlat" }, "startDesktopDesc": { - "message": "Bu işlevin kullanılabilmesi için Bitwarden masaüstü uygulamasının başlatılması gerekir." + "message": "Biyometri ile açma işlevini kullanmak için Bitwarden masaüstü uygulamasını çalıştırmanız gerekir." }, "errorEnableBiometricTitle": { - "message": "Biyometri etkinleştirilemedi" + "message": "Biyometri ayarlanamadı" }, "errorEnableBiometricDesc": { "message": "İşlem masaüstü uygulaması tarafından iptal edildi" @@ -1539,10 +1539,10 @@ "message": "Hesap uyuşmazlığı" }, "biometricsNotEnabledTitle": { - "message": "Biyometri etkin değil" + "message": "Biyometri ayarlanmamış" }, "biometricsNotEnabledDesc": { - "message": "Tarayıcıda biyometriyi kullanmak için önce ayarlardan masaüstü biyometrisini etkinleştirilmeniz gerekir." + "message": "Tarayıcıda biyometriyi kullanmak için önce ayarlardan masaüstü biyometrisini ayarlamanız gerekir." }, "biometricsNotSupportedTitle": { "message": "Biyometri desteklenmiyor" @@ -1731,14 +1731,14 @@ "message": "Mevcut erişim sayısı" }, "createSend": { - "message": "Yeni Send oluştur", + "message": "Yeni Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { "message": "Yeni parola" }, "sendDisabled": { - "message": "Send devre dışı", + "message": "Send silindi", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1750,7 +1750,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Send düzenlendi", + "message": "Send kaydedildi", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1823,7 +1823,7 @@ "message": "Ana parolanız kuruluşunuzdaki bir yönetici tarafından yakın zamanda değiştirildi. Kasanıza erişmek için parolanızı güncellemelisiniz. Devam ettiğinizde oturumunuz kapanacak ve yeniden oturum açmanız gerekecektir. Diğer cihazlardaki aktif oturumlar bir saate kadar aktif kalabilir." }, "resetPasswordPolicyAutoEnroll": { - "message": "Otomatik Eklenme" + "message": "Otomatik eklenme" }, "resetPasswordAutoEnrollInviteWarning": { "message": "Bu kuruluşun sizi otomatik olarak parola sıfırlamaya ekleyen bir ilkesi bulunmakta. Bu ilkeye eklenmek, kuruluş yöneticilerinin ana parolanızı değiştirebilmesini sağlar." @@ -1884,7 +1884,7 @@ "message": "Ana parolayı kaldır" }, "removedMasterPassword": { - "message": "Ana parola kaldırıldı." + "message": "Ana parola kaldırıldı" }, "leaveOrganizationConfirmation": { "message": "Bu kuruluştan ayrılmak istediğinizden emin misiniz?" @@ -1899,7 +1899,7 @@ "message": "Oturumunuzun süresi doldu. Lütfen geri dönüp yeniden giriş yapın." }, "exportingPersonalVaultTitle": { - "message": "Kişisel Kasayı Dışa Aktar" + "message": "Kişisel kasa dışa aktarılıyor" }, "exportingPersonalVaultDescription": { "message": "Yalnızca $EMAIL$ ile ilişkili kişisel kasadaki kayıtlar dışa aktarılacaktır. Kuruluş kasasındaki kayıtlar dahil edilmeyecektir.", @@ -1970,16 +1970,16 @@ "message": "API anahtarı" }, "ssoKeyConnectorError": { - "message": "Anahtar Bağlayıcı hatası: Anahtar Bağlayıcının mevcut olduğundan ve doğru çalıştığından emin olun." + "message": "Anahtar bağlayıcı hatası: Anahtar bağlayıcının kullanılabilir olduğundan ve doğru çalıştığından emin olun." }, "premiumSubcriptionRequired": { "message": "Premium abonelik gerekli" }, "organizationIsDisabled": { - "message": "Kuruluş devre dışı." + "message": "Kuruluş askıya alındı." }, "disabledOrganizationFilterError": { - "message": "Devre dışı kuruluşlardaki kayıtlara erişilemez. Destek almak için kuruluş sahibinizle iletişime geçin." + "message": "Askıya alınmış kuruluşlardaki kayıtlara erişilemez. Destek almak için kuruluş sahibinizle iletişime geçin." }, "cardBrandMir": { "message": "Mir" @@ -2003,13 +2003,13 @@ "message": "ön tanımlı ayarları sıfırlayabilirsiniz" }, "serverVersion": { - "message": "Sunucu Sürümü" + "message": "Sunucu sürümü" }, "selfHosted": { "message": "Barındırılan" }, "thirdParty": { - "message": "Üçüncü Taraf" + "message": "Üçüncü taraf" }, "thirdPartyServerMessage": { "message": "$SERVERNAME$ adresindeki üçüncü taraf sunucuya bağlandınız. Lütfen resmi sunucuyu kullanarak hataları doğrulayın veya üçüncü taraf sunucuya bildirin.", @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Ana parola ile giriş yap" + }, + "loggingInAs": { + "message": "Giriş yapılan kullanıcı:" + }, + "notYou": { + "message": "Siz değil misiniz?" + }, + "newAroundHere": { + "message": "Buralarda yeni misiniz?" + }, + "rememberEmail": { + "message": "E-postayı hatırla" } } diff --git a/apps/browser/src/_locales/uk/messages.json b/apps/browser/src/_locales/uk/messages.json index 1b80efbb577..6291a8c9466 100644 --- a/apps/browser/src/_locales/uk/messages.json +++ b/apps/browser/src/_locales/uk/messages.json @@ -491,7 +491,7 @@ "message": "Ви можете змінити головний пароль в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" }, "twoStepLoginConfirmation": { - "message": "Двоетапна перевірка робить ваш обліковий запис більш захищеним, вимагаючи підтвердження входу з використанням іншого пристрою, наприклад, за допомогою коду безпеки, програми авторизації, SMS, телефонного виклику, або е-пошти. Ви можете увімкнути двоетапну перевірку в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" + "message": "Двоетапна перевірка дає змогу надійніше захистити ваш обліковий запис, вимагаючи підтвердження входу з використанням іншого пристрою, наприклад, за допомогою коду безпеки, програми авторизації, SMS, телефонного виклику, або е-пошти. Ви можете налаштувати двоетапну перевірку в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" }, "editedFolder": { "message": "Теку збережено" @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Увійти з головним паролем" + }, + "loggingInAs": { + "message": "Вхід у систему як" + }, + "notYou": { + "message": "Не ви?" + }, + "newAroundHere": { + "message": "Виконуєте вхід вперше?" + }, + "rememberEmail": { + "message": "Запам'ятати е-пошту" } } diff --git a/apps/browser/src/_locales/vi/messages.json b/apps/browser/src/_locales/vi/messages.json index d4d1ec1178c..aa7672f69e4 100644 --- a/apps/browser/src/_locales/vi/messages.json +++ b/apps/browser/src/_locales/vi/messages.json @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "Remember email" } } diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json index e14469c8646..b05d505d21d 100644 --- a/apps/browser/src/_locales/zh_CN/messages.json +++ b/apps/browser/src/_locales/zh_CN/messages.json @@ -7,14 +7,14 @@ "description": "Extension name, MUST be less than 40 characters (Safari restriction)" }, "extDesc": { - "message": "Bitwarden 是一个安全且免费的跨平台密码管理器。", + "message": "安全且免费的跨平台密码管理器。", "description": "Extension description" }, "loginOrCreateNewAccount": { - "message": "登录或新建一个账户来访问你的密码库。" + "message": "登录或者创建一个账户来访问您的安全密码库。" }, "createAccount": { - "message": "新建账户" + "message": "创建账户" }, "login": { "message": "登录" @@ -119,7 +119,7 @@ "message": "密码提示" }, "enterEmailToGetHint": { - "message": "请输入您账户的 Email 地址来接收主密码提示。" + "message": "请输入您账户的电子邮件地址来接收主密码提示。" }, "getMasterPasswordHint": { "message": "获取主密码提示" @@ -540,7 +540,7 @@ "message": "项目已保存" }, "deleteItemConfirmation": { - "message": "您确定要删除此项目吗?" + "message": "您确定要将其发送到回收站吗?" }, "deletedItem": { "message": "项目已发送到回收站" @@ -882,7 +882,7 @@ "message": "两步登录选项" }, "recoveryCodeDesc": { - "message": "无法访问您所有的双重身份提供程序吗?请使用您的恢复代码来禁用您账户中所有的双重身份提供程序。" + "message": "无法访问您所有的双重身份提供程序吗?请使用您的恢复代码来停用您账户中所有的双重身份提供程序。" }, "recoveryCodeTitle": { "message": "恢复代码" @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "使用任何具有 WebAuthn 功能的安全钥匙访问您的账户。" + "message": "使用任何 WebAuthn 兼容的安全钥匙访问您的帐户。" }, "emailTitle": { "message": "电子邮件" @@ -1713,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "禁用此 Send 以阻止任何人访问它。", + "message": "停用此 Send 则任何人无法访问它。", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1731,14 +1731,14 @@ "message": "当前访问次数" }, "createSend": { - "message": "新建 Send", + "message": "创建 Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { "message": "新建密码" }, "sendDisabled": { - "message": "Send 已移除", + "message": "Send 已禁用", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1887,10 +1887,10 @@ "message": "主密码已移除" }, "leaveOrganizationConfirmation": { - "message": "您确定要离开该组织吗?" + "message": "您确定要退出该组织吗?" }, "leftOrganization": { - "message": "您已经离开该组织。" + "message": "您已经退出该组织。" }, "toggleCharacterCount": { "message": "字符计数开关" @@ -1976,10 +1976,10 @@ "message": "需要高级版订阅" }, "organizationIsDisabled": { - "message": "组织已被挂起。" + "message": "组织已暂停。" }, "disabledOrganizationFilterError": { - "message": "无法访问已被挂起的组织中的项目。请联系您的组织所有者获取帮助。" + "message": "无法访问已暂停组织中的项目。请联系您的组织所有者获取帮助。" }, "cardBrandMir": { "message": "Mir" @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "使用主密码登录" + }, + "loggingInAs": { + "message": "正登录为" + }, + "notYou": { + "message": "不是你?" + }, + "newAroundHere": { + "message": "新建在这里?" + }, + "rememberEmail": { + "message": "记住电子邮件地址" } } diff --git a/apps/browser/src/_locales/zh_TW/messages.json b/apps/browser/src/_locales/zh_TW/messages.json index 5229d021a2f..a4ff34345c1 100644 --- a/apps/browser/src/_locales/zh_TW/messages.json +++ b/apps/browser/src/_locales/zh_TW/messages.json @@ -14,7 +14,7 @@ "message": "登入或建立帳戶以存取您的安全密碼庫。" }, "createAccount": { - "message": "新增帳戶" + "message": "建立帳戶" }, "login": { "message": "登入" @@ -251,7 +251,7 @@ "message": "單字數量" }, "wordSeparator": { - "message": "單詞分隔字元" + "message": "單字分隔字元" }, "capitalize": { "message": "大寫", @@ -738,7 +738,7 @@ "message": "檔案" }, "selectFile": { - "message": "選擇檔案。" + "message": "選取檔案" }, "maxFileSize": { "message": "檔案最大為 500MB。" @@ -876,7 +876,7 @@ "message": "此帳戶已設定兩步驟登入,但是本瀏覽器不支援已設定的任一個兩步驟提供程式。" }, "noTwoStepProviders2": { - "message": "請使用受支援的瀏覽器(例如 Chrome ),及/或新增可以更好地跨瀏覽器的提供程式(例如驗證器應用程式)。" + "message": "請使用受支援的瀏覽器(例如 Chrome),及/或新增可以更好地支援跨瀏覽器的提供程式(例如驗證器應用程式)。" }, "twoStepOptions": { "message": "兩步驟登入選項" @@ -939,16 +939,16 @@ "message": "API 伺服器 URL" }, "webVaultUrl": { - "message": "網路版密碼庫伺服器 URL" + "message": "網頁版密碼庫伺服器 URL" }, "identityUrl": { - "message": "身份伺服器 URL" + "message": "身分伺服器 URL" }, "notificationsUrl": { "message": "通知伺服器 URL" }, "iconsUrl": { - "message": "圖標伺服器 URL" + "message": "圖示伺服器 URL" }, "environmentSaved": { "message": "環境 URL 已儲存" @@ -1142,7 +1142,7 @@ "message": "公司" }, "ssn": { - "message": "社會安全號碼" + "message": "社會保險號碼" }, "passportNumber": { "message": "護照號碼" @@ -1884,7 +1884,7 @@ "message": "移除主密碼" }, "removedMasterPassword": { - "message": "主密碼已移除。" + "message": "主密碼已移除" }, "leaveOrganizationConfirmation": { "message": "您確定要離開這個組織嗎?" @@ -1899,7 +1899,7 @@ "message": "您的登入階段已逾時,請返回並嘗試重新登入。" }, "exportingPersonalVaultTitle": { - "message": "匯出個人密碼庫" + "message": "正匯出個人密碼庫" }, "exportingPersonalVaultDescription": { "message": "只會匯出與 $EMAIL$ 關聯的個人密碼庫項目。組織密碼庫的項目不包含在內。", @@ -2028,5 +2028,20 @@ "example": "Jun 15, 2015" } } + }, + "loginWithMasterPassword": { + "message": "使用主密碼登入" + }, + "loggingInAs": { + "message": "正登入為" + }, + "notYou": { + "message": "不是您嗎?" + }, + "newAroundHere": { + "message": "New around here?" + }, + "rememberEmail": { + "message": "記住電子郵件地址" } } diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts index c90d58ec138..cc973a8c826 100644 --- a/apps/browser/src/background/main.background.ts +++ b/apps/browser/src/background/main.background.ts @@ -6,6 +6,7 @@ import { CipherService as CipherServiceAbstraction } from "@bitwarden/common/abs import { CollectionService as CollectionServiceAbstraction } from "@bitwarden/common/abstractions/collection.service"; import { CryptoService as CryptoServiceAbstraction } from "@bitwarden/common/abstractions/crypto.service"; import { CryptoFunctionService as CryptoFunctionServiceAbstraction } from "@bitwarden/common/abstractions/cryptoFunction.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { EventService as EventServiceAbstraction } from "@bitwarden/common/abstractions/event.service"; import { ExportService as ExportServiceAbstraction } from "@bitwarden/common/abstractions/export.service"; import { FileUploadService as FileUploadServiceAbstraction } from "@bitwarden/common/abstractions/fileUpload.service"; @@ -51,7 +52,8 @@ import { CipherService } from "@bitwarden/common/services/cipher.service"; import { CollectionService } from "@bitwarden/common/services/collection.service"; import { ConsoleLogService } from "@bitwarden/common/services/consoleLog.service"; import { ContainerService } from "@bitwarden/common/services/container.service"; -import { EncryptService } from "@bitwarden/common/services/encrypt.service"; +import { EncryptServiceImplementation } from "@bitwarden/common/services/cryptography/encrypt.service.implementation"; +import { MultithreadEncryptServiceImplementation } from "@bitwarden/common/services/cryptography/multithread-encrypt.service.implementation"; import { EventService } from "@bitwarden/common/services/event.service"; import { ExportService } from "@bitwarden/common/services/export.service"; import { FileUploadService } from "@bitwarden/common/services/fileUpload.service"; @@ -82,6 +84,7 @@ import { WebCryptoFunctionService } from "@bitwarden/common/services/webCryptoFu import { BrowserApi } from "../browser/browserApi"; import { SafariApp } from "../browser/safariApp"; +import { flagEnabled } from "../flags"; import { UpdateBadge } from "../listeners/update-badge"; import { Account } from "../models/account"; import { PopupUtilsService } from "../popup/services/popup-utils.service"; @@ -215,7 +218,7 @@ export default class MainBackground { this.memoryStorageService = BrowserApi.manifestVersion === 3 ? new LocalBackedSessionStorageService( - new EncryptService(this.cryptoFunctionService, this.logService, false), + new EncryptServiceImplementation(this.cryptoFunctionService, this.logService, false), new KeyGenerationService(this.cryptoFunctionService) ) : new MemoryStorageService(); @@ -255,7 +258,13 @@ export default class MainBackground { window ); this.i18nService = new I18nService(BrowserApi.getUILanguage(window)); - this.encryptService = new EncryptService(this.cryptoFunctionService, this.logService, true); + this.encryptService = flagEnabled("multithreadDecryption") + ? new MultithreadEncryptServiceImplementation( + this.cryptoFunctionService, + this.logService, + true + ) + : new EncryptServiceImplementation(this.cryptoFunctionService, this.logService, true); this.cryptoService = new BrowserCryptoService( this.cryptoFunctionService, this.encryptService, @@ -283,7 +292,8 @@ export default class MainBackground { this.i18nService, () => this.searchService, this.logService, - this.stateService + this.stateService, + this.encryptService ); this.folderService = new FolderService( this.cryptoService, diff --git a/apps/browser/src/background/service_factories/cipher-service.factory.ts b/apps/browser/src/background/service_factories/cipher-service.factory.ts index 03141f2c84f..6d31ebd76f7 100644 --- a/apps/browser/src/background/service_factories/cipher-service.factory.ts +++ b/apps/browser/src/background/service_factories/cipher-service.factory.ts @@ -4,6 +4,7 @@ import { CipherService } from "@bitwarden/common/services/cipher.service"; import { apiServiceFactory, ApiServiceInitOptions } from "./api-service.factory"; import { cryptoServiceFactory, CryptoServiceInitOptions } from "./crypto-service.factory"; +import { encryptServiceFactory, EncryptServiceInitOptions } from "./encrypt-service.factory"; import { CachedServices, factory, FactoryOptions } from "./factory-options"; import { FileUploadServiceInitOptions, @@ -27,7 +28,8 @@ export type CipherServiceInitOptions = CipherServiceFactoryOptions & FileUploadServiceInitOptions & I18nServiceInitOptions & LogServiceInitOptions & - StateServiceInitOptions; + StateServiceInitOptions & + EncryptServiceInitOptions; export function cipherServiceFactory( cache: { cipherService?: AbstractCipherService } & CachedServices, @@ -48,7 +50,8 @@ export function cipherServiceFactory( ? () => cache.searchService : opts.cipherServiceOptions.searchServiceFactory, await logServiceFactory(cache, opts), - await stateServiceFactory(cache, opts) + await stateServiceFactory(cache, opts), + await encryptServiceFactory(cache, opts) ) ); } diff --git a/apps/browser/src/background/service_factories/encrypt-service.factory.ts b/apps/browser/src/background/service_factories/encrypt-service.factory.ts index fffc9f9d296..6e4c104b05b 100644 --- a/apps/browser/src/background/service_factories/encrypt-service.factory.ts +++ b/apps/browser/src/background/service_factories/encrypt-service.factory.ts @@ -1,4 +1,7 @@ -import { EncryptService } from "@bitwarden/common/services/encrypt.service"; +import { EncryptServiceImplementation } from "@bitwarden/common/services/cryptography/encrypt.service.implementation"; +import { MultithreadEncryptServiceImplementation } from "@bitwarden/common/services/cryptography/multithread-encrypt.service.implementation"; + +import { flagEnabled } from "../../flags"; import { cryptoFunctionServiceFactory, @@ -18,18 +21,20 @@ export type EncryptServiceInitOptions = EncryptServiceFactoryOptions & LogServiceInitOptions; export function encryptServiceFactory( - cache: { encryptService?: EncryptService } & CachedServices, + cache: { encryptService?: EncryptServiceImplementation } & CachedServices, opts: EncryptServiceInitOptions -): Promise { - return factory( - cache, - "encryptService", - opts, - async () => - new EncryptService( - await cryptoFunctionServiceFactory(cache, opts), - await logServiceFactory(cache, opts), - opts.encryptServiceOptions.logMacFailures - ) +): Promise { + return factory(cache, "encryptService", opts, async () => + flagEnabled("multithreadDecryption") + ? new MultithreadEncryptServiceImplementation( + await cryptoFunctionServiceFactory(cache, opts), + await logServiceFactory(cache, opts), + opts.encryptServiceOptions.logMacFailures + ) + : new EncryptServiceImplementation( + await cryptoFunctionServiceFactory(cache, opts), + await logServiceFactory(cache, opts), + opts.encryptServiceOptions.logMacFailures + ) ); } diff --git a/apps/browser/src/clipboard/clear-clipboard.spec.ts b/apps/browser/src/clipboard/clear-clipboard.spec.ts.disabled similarity index 100% rename from apps/browser/src/clipboard/clear-clipboard.spec.ts rename to apps/browser/src/clipboard/clear-clipboard.spec.ts.disabled diff --git a/apps/browser/src/content/autofill.js b/apps/browser/src/content/autofill.js index d7b9db2aeb4..ee4dfab1b0d 100644 --- a/apps/browser/src/content/autofill.js +++ b/apps/browser/src/content/autofill.js @@ -41,6 +41,7 @@ 8. Add ability to autofill span[data-bwautofill] elements 9. Add new handler, for new command that responds with page details in response callback 10. Handle sandbox iframe and sandbox rule in CSP + 11. Work on array of saved urls instead of just one to determine if we should autofill non-https sites */ function collect(document, undefined) { @@ -631,14 +632,14 @@ animateTheFilling = true; // Check if URL is not secure when the original saved one was - function urlNotSecure(savedURL) { + function urlNotSecure(savedURLs) { var passwordInputs = null; - if (!savedURL) { + if (!savedURLs) { return false; } - return 0 === savedURL.indexOf('https://') && 'http:' === document.location.protocol && (passwordInputs = document.querySelectorAll('input[type=password]'), - 0 < passwordInputs.length && (confirmResult = confirm('Warning: This is an unsecured HTTP page, and any information you submit can potentially be seen and changed by others. This Login was originally saved on a secure (HTTPS) page.\\n\\nDo you still wish to fill this login?'), + return savedURLs.some(url => url.indexOf('https://') === 0) && 'http:' === document.location.protocol && (passwordInputs = document.querySelectorAll('input[type=password]'), + 0 < passwordInputs.length && (confirmResult = confirm('Warning: This is an unsecured HTTP page, and any information you submit can potentially be seen and changed by others. This Login was originally saved on a secure (HTTPS) page.\n\nDo you still wish to fill this login?'), 0 == confirmResult)) ? true : false; } @@ -660,7 +661,7 @@ fillScriptProperties.delay_between_operations && (operationDelayMs = fillScriptProperties.delay_between_operations); - if (isSandboxed() || urlNotSecure(fillScript.savedURL)) { + if (isSandboxed() || urlNotSecure(fillScript.savedUrls)) { return; } diff --git a/apps/browser/src/decorators/session-sync-observable/browser-session.decorator.spec.ts b/apps/browser/src/decorators/session-sync-observable/browser-session.decorator.spec.ts index b48658efa39..cc8a5618760 100644 --- a/apps/browser/src/decorators/session-sync-observable/browser-session.decorator.spec.ts +++ b/apps/browser/src/decorators/session-sync-observable/browser-session.decorator.spec.ts @@ -38,7 +38,7 @@ describe("browserSession decorator", () => { @browserSession class TestClass { @sessionSync({ initializer: (s: string) => s }) - behaviorSubject = new BehaviorSubject(""); + private behaviorSubject = new BehaviorSubject(""); constructor(private stateService: StateService) {} diff --git a/apps/browser/src/decorators/session-sync-observable/session-sync.decorator.spec.ts b/apps/browser/src/decorators/session-sync-observable/session-sync.decorator.spec.ts index b177d118f82..38ec7aac9a1 100644 --- a/apps/browser/src/decorators/session-sync-observable/session-sync.decorator.spec.ts +++ b/apps/browser/src/decorators/session-sync-observable/session-sync.decorator.spec.ts @@ -7,7 +7,11 @@ describe("sessionSync decorator", () => { const ctor = String; class TestClass { @sessionSync({ ctor: ctor, initializer: initializer }) - testProperty = new BehaviorSubject(""); + private testProperty = new BehaviorSubject(""); + + complete() { + this.testProperty.complete(); + } } it("should add __syncedItemKeys to prototype", () => { @@ -19,7 +23,7 @@ describe("sessionSync decorator", () => { ctor: ctor, initializer: initializer, }), - testClass.testProperty.complete(), + testClass.complete(), ]); }); }); diff --git a/apps/browser/src/listeners/update-badge.ts b/apps/browser/src/listeners/update-badge.ts index 888f4ce7917..9c7c122a45a 100644 --- a/apps/browser/src/listeners/update-badge.ts +++ b/apps/browser/src/listeners/update-badge.ts @@ -1,7 +1,7 @@ -import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; import { AuthService } from "@bitwarden/common/abstractions/auth.service"; import { CipherService } from "@bitwarden/common/abstractions/cipher.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { AuthenticationStatus } from "@bitwarden/common/enums/authenticationStatus"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; import { Utils } from "@bitwarden/common/misc/utils"; @@ -259,7 +259,7 @@ export class UpdateBadge { if (!self.bitwardenContainerService) { new ContainerService( serviceCache.cryptoService as CryptoService, - serviceCache.encryptService as AbstractEncryptService + serviceCache.encryptService as EncryptService ).attachToGlobal(self); } diff --git a/apps/browser/src/models/autofillScript.ts b/apps/browser/src/models/autofillScript.ts index 509c1da87b2..f18ac4ff693 100644 --- a/apps/browser/src/models/autofillScript.ts +++ b/apps/browser/src/models/autofillScript.ts @@ -5,6 +5,7 @@ export default class AutofillScript { options: any = {}; metadata: any = {}; autosubmit: any = null; + savedUrls: string[]; constructor(documentUUID: string) { this.documentUUID = documentUUID; diff --git a/apps/browser/src/popup/accounts/hint.component.html b/apps/browser/src/popup/accounts/hint.component.html index 828af9c5583..4f5f975ccf9 100644 --- a/apps/browser/src/popup/accounts/hint.component.html +++ b/apps/browser/src/popup/accounts/hint.component.html @@ -1,7 +1,9 @@
- +

{{ "passwordHint" | i18n }} diff --git a/apps/browser/src/popup/accounts/hint.component.ts b/apps/browser/src/popup/accounts/hint.component.ts index 7ecc9ef1cbb..4948407e5a3 100644 --- a/apps/browser/src/popup/accounts/hint.component.ts +++ b/apps/browser/src/popup/accounts/hint.component.ts @@ -1,10 +1,11 @@ import { Component } from "@angular/core"; -import { Router } from "@angular/router"; +import { ActivatedRoute, Router } from "@angular/router"; import { HintComponent as BaseHintComponent } from "@bitwarden/angular/components/hint.component"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; +import { LoginService } from "@bitwarden/common/abstractions/login.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; @Component({ @@ -17,8 +18,14 @@ export class HintComponent extends BaseHintComponent { platformUtilsService: PlatformUtilsService, i18nService: I18nService, apiService: ApiService, - logService: LogService + logService: LogService, + private route: ActivatedRoute, + loginService: LoginService ) { - super(router, i18nService, apiService, platformUtilsService, logService); + super(router, i18nService, apiService, platformUtilsService, logService, loginService); + + super.onSuccessfulSubmit = async () => { + this.router.navigate([this.successRoute]); + }; } } diff --git a/apps/browser/src/popup/accounts/home.component.html b/apps/browser/src/popup/accounts/home.component.html index 5f80204a27b..7fc8163a7f0 100644 --- a/apps/browser/src/popup/accounts/home.component.html +++ b/apps/browser/src/popup/accounts/home.component.html @@ -1,16 +1,29 @@
-
+
-

-
- - -
@@ -29,6 +16,7 @@ class="monospaced" formControlName="masterPassword" appInputVerbatim + appAutofocus />
@@ -52,13 +40,27 @@
+
-

- {{ "loggingInTo" | i18n: selfHostedDomain }} -

-

- -

+
diff --git a/apps/browser/src/popup/accounts/login.component.ts b/apps/browser/src/popup/accounts/login.component.ts index 5028af06bfb..d44847b35e0 100644 --- a/apps/browser/src/popup/accounts/login.component.ts +++ b/apps/browser/src/popup/accounts/login.component.ts @@ -1,27 +1,33 @@ import { Component, NgZone } from "@angular/core"; import { FormBuilder } from "@angular/forms"; -import { Router } from "@angular/router"; +import { ActivatedRoute, Router } from "@angular/router"; import { LoginComponent as BaseLoginComponent } from "@bitwarden/angular/components/login.component"; +import { ApiService } from "@bitwarden/common/abstractions/api.service"; +import { AppIdService } from "@bitwarden/common/abstractions/appId.service"; import { AuthService } from "@bitwarden/common/abstractions/auth.service"; import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service"; import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service"; import { FormValidationErrorsService } from "@bitwarden/common/abstractions/formValidationErrors.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; +import { LoginService } from "@bitwarden/common/abstractions/login.service"; import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwordGeneration.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction"; +import { Utils } from "@bitwarden/common/misc/utils"; @Component({ selector: "app-login", templateUrl: "login.component.html", }) export class LoginComponent extends BaseLoginComponent { - protected alwaysRememberEmail = true; + protected skipRememberEmail = true; constructor( + apiService: ApiService, + appIdService: AppIdService, authService: AuthService, router: Router, protected platformUtilsService: PlatformUtilsService, @@ -34,9 +40,13 @@ export class LoginComponent extends BaseLoginComponent { logService: LogService, ngZone: NgZone, formBuilder: FormBuilder, - formValidationErrorService: FormValidationErrorsService + formValidationErrorService: FormValidationErrorsService, + route: ActivatedRoute, + loginService: LoginService ) { super( + apiService, + appIdService, authService, router, platformUtilsService, @@ -48,7 +58,9 @@ export class LoginComponent extends BaseLoginComponent { logService, ngZone, formBuilder, - formValidationErrorService + formValidationErrorService, + route, + loginService ); super.onSuccessfulLogin = async () => { await syncService.fullSync(true); @@ -59,4 +71,45 @@ export class LoginComponent extends BaseLoginComponent { settings() { this.router.navigate(["environment"]); } + + async launchSsoBrowser() { + // Generate necessary sso params + const passwordOptions: any = { + type: "password", + length: 64, + uppercase: true, + lowercase: true, + numbers: true, + special: false, + }; + + const state = + (await this.passwordGenerationService.generatePassword(passwordOptions)) + + ":clientId=browser"; + const codeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions); + const codeVerifierHash = await this.cryptoFunctionService.hash(codeVerifier, "sha256"); + const codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash); + + await this.stateService.setSsoCodeVerifier(codeVerifier); + await this.stateService.setSsoState(state); + + let url = this.environmentService.getWebVaultUrl(); + if (url == null) { + url = "https://vault.bitwarden.com"; + } + + const redirectUri = url + "/sso-connector.html"; + + // Launch browser + this.platformUtilsService.launchUri( + url + + "/#/sso?clientId=browser" + + "&redirectUri=" + + encodeURIComponent(redirectUri) + + "&state=" + + state + + "&codeChallenge=" + + codeChallenge + ); + } } diff --git a/apps/browser/src/popup/accounts/two-factor.component.ts b/apps/browser/src/popup/accounts/two-factor.component.ts index 55294ef2e1e..5bfb637e4ca 100644 --- a/apps/browser/src/popup/accounts/two-factor.component.ts +++ b/apps/browser/src/popup/accounts/two-factor.component.ts @@ -10,6 +10,7 @@ import { BroadcasterService } from "@bitwarden/common/abstractions/broadcaster.s import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; +import { LoginService } from "@bitwarden/common/abstractions/login.service"; import { MessagingService } from "@bitwarden/common/abstractions/messaging.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; @@ -44,7 +45,8 @@ export class TwoFactorComponent extends BaseTwoFactorComponent { private messagingService: MessagingService, logService: LogService, twoFactorService: TwoFactorService, - appIdService: AppIdService + appIdService: AppIdService, + loginService: LoginService ) { super( authService, @@ -58,9 +60,11 @@ export class TwoFactorComponent extends BaseTwoFactorComponent { route, logService, twoFactorService, - appIdService + appIdService, + loginService ); super.onSuccessfulLogin = () => { + this.loginService.clearValues(); return syncService.fullSync(true); }; super.successRoute = "/tabs/vault"; diff --git a/apps/browser/src/popup/components/private-mode-warning.component.html b/apps/browser/src/popup/components/private-mode-warning.component.html index 848b69c92d5..5acbb1acd08 100644 --- a/apps/browser/src/popup/components/private-mode-warning.component.html +++ b/apps/browser/src/popup/components/private-mode-warning.component.html @@ -1,4 +1,4 @@ - + {{ "privateModeWarning" | i18n }} {{ "learnMore" | i18n diff --git a/apps/browser/src/popup/components/set-pin.component.html b/apps/browser/src/popup/components/set-pin.component.html index 66c7377aad1..54a3fab10d5 100644 --- a/apps/browser/src/popup/components/set-pin.component.html +++ b/apps/browser/src/popup/components/set-pin.component.html @@ -7,7 +7,7 @@
-
+
\ No newline at end of file diff --git a/apps/browser/src/popup/scss/base.scss b/apps/browser/src/popup/scss/base.scss index 1222f66aaac..8803c73aa66 100644 --- a/apps/browser/src/popup/scss/base.scss +++ b/apps/browser/src/popup/scss/base.scss @@ -98,6 +98,25 @@ button { font-family: $font-family-sans-serif; } +input[type*="date"] { + @include themify($themes) { + color-scheme: themed("dateInputColorScheme"); + } +} + +::-webkit-calendar-picker-indicator { + @include themify($themes) { + filter: themed("webkitCalendarPickerFilter"); + } +} + +::-webkit-calendar-picker-indicator:hover { + @include themify($themes) { + filter: themed("webkitCalendarPickerHoverFilter"); + } + cursor: pointer; +} + select { width: 100%; padding: 0.35rem; @@ -174,6 +193,11 @@ header { .right { justify-content: flex-end; + align-items: center; + app-avatar { + max-height: 30px; + margin-right: 5px; + } } .center { @@ -183,6 +207,10 @@ header { min-width: 0; } + .login-center { + margin: auto; + } + app-pop-out > button, div > button, div > a { @@ -193,6 +221,7 @@ header { flex-direction: row; justify-content: center; align-items: center; + height: 100%; @include themify($themes) { color: themed("headerColor"); @@ -289,6 +318,14 @@ header { } } +.no-bg { + background-color: transparent; +} + +.no-pad { + padding: 0 !important; +} + .content { padding: 15px; } @@ -429,6 +466,19 @@ main { main { bottom: 55px; } + + [type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; + appearance: none; + height: 15px; + width: 15px; + background-repeat: no-repeat; + mask-image: url("../images/close-button-white.svg"); + -webkit-mask-image: url("../images/close-button-white.svg"); + @include themify($themes) { + background-color: themed("headerInputColor"); + } + } } .center-content, @@ -482,11 +532,14 @@ main { padding-left: 7px; .org-filter { @include themify($themes) { - background-color: themed("backgroundColor"); + background-color: themed("buttonBackgroundColor"); } - border: 1px solid; - padding: 7px; border-radius: $border-radius; + padding: 6px 10px; + width: 160px; + display: flex; + align-items: center; + justify-content: space-between; } } .vault-select { diff --git a/apps/browser/src/popup/scss/box.scss b/apps/browser/src/popup/scss/box.scss index 7be206cbf3a..29e54ed9f30 100644 --- a/apps/browser/src/popup/scss/box.scss +++ b/apps/browser/src/popup/scss/box.scss @@ -3,7 +3,6 @@ .box { position: relative; width: 100%; - margin: 10px 0; &.first { margin-top: 0; @@ -20,13 +19,14 @@ } .box-header-expandable { - padding: 0 10px; - margin-bottom: 5px; + padding: 10px; + margin: 0 10px; text-transform: uppercase; display: flex; - width: 100%; + width: calc(100% - 20px); box-sizing: border-box; align-items: center; + border-radius: $border-radius; @include themify($themes) { color: themed("headingColor"); @@ -52,11 +52,8 @@ } .box-content { - border-top: 1px solid #000000; - border-bottom: 1px solid #000000; - @include themify($themes) { - background-color: themed("boxBackgroundColor"); + background-color: themed("backgroundColor"); border-color: themed("borderColor"); } @@ -74,28 +71,53 @@ .box-content-row.no-hover { &:hover, &:focus { - background-color: initial !important; + @include themify($themes) { + background-color: themed("boxBackgroundColor") !important; + } } } } .box-footer { - margin: 5px 10px; + margin: 0 10px 10px 10px; + padding: 0 15px 10px 15px; font-size: $font-size-small; + button.btn { + font-size: $font-size-small; + padding: 0; + } + + button.btn.primary { + font-size: $font-size-base; + padding: 7px 15px; + width: 100%; + + &:hover { + @include themify($themes) { + border-color: themed("borderHoverColor") !important; + } + } + } + @include themify($themes) { color: themed("mutedColor"); } } &.list { + margin: 10px 0 20px 0; .box-content { .box-content-row { - padding: 3px 10px; + padding: 10px; text-decoration: none; + border-radius: $border-radius; + margin: 10px; + // background-color: $background-color; @include themify($themes) { color: themed("textColor"); + background-color: themed("boxBackgroundColor"); } &.padded { @@ -103,6 +125,14 @@ padding-bottom: 10px; } + &.no-hover { + &:hover { + @include themify($themes) { + background-color: themed("boxBackgroundColor") !important; + } + } + } + &:hover, &:focus, &.active { @@ -150,6 +180,8 @@ display: flex; padding-top: 10px; padding-bottom: 10px; + margin: 10px; + border-radius: $border-radius; } } } @@ -179,7 +211,6 @@ .box-section-divider { border-top: 1px solid #000000; - padding-top: 10px; @include themify($themes) { border-color: themed("borderColor"); @@ -191,19 +222,15 @@ padding: 10px 15px; position: relative; z-index: 1; + border-radius: $border-radius; + margin: 10px; - &:before { - content: ""; - position: absolute; - right: 0; - bottom: 0; - height: 1px; - width: calc(100% - 10px); - border-bottom: 1px solid #000000; + @include themify($themes) { + background-color: themed("boxBackgroundColor"); + } - @include themify($themes) { - border-bottom-color: themed("boxBorderColor"); - } + &.no-bg { + background-color: rgba(0, 0, 0, 0) !important; } &:last-child { @@ -326,7 +353,7 @@ } &.box-content-row-multi { - width: 100%; + width: calc(100% - 20px); input:not([type="checkbox"]) { width: 100%; @@ -450,6 +477,7 @@ width: 100%; border: 1px solid #000000; border-radius: $border-radius; + padding: 7px 4px; @include themify($themes) { border-color: themed("inputBorderColor"); @@ -705,3 +733,19 @@ overflow: hidden; text-overflow: ellipsis; } + +form { + .box { + .box-content { + .box-content-row { + &.no-hover { + &:hover { + @include themify($themes) { + background-color: themed("transparentColor") !important; + } + } + } + } + } + } +} diff --git a/apps/browser/src/popup/scss/buttons.scss b/apps/browser/src/popup/scss/buttons.scss index c1b30ae5980..145e22d1892 100644 --- a/apps/browser/src/popup/scss/buttons.scss +++ b/apps/browser/src/popup/scss/buttons.scss @@ -65,7 +65,8 @@ &.block { display: block; - width: 100%; + width: calc(100% - 20px); + margin: 0 auto; } &.link, @@ -89,8 +90,13 @@ button.box-content-row { display: block; - width: 100%; + width: calc(100% - 20px); text-align: left; + border-color: none; + + @include themify($themes) { + background-color: themed("boxBackgroundColor"); + } } button { @@ -98,3 +104,10 @@ button { background: transparent; color: inherit; } + +.login-buttons { + .btn.block { + width: 100%; + margin-bottom: 10px; + } +} diff --git a/apps/browser/src/popup/scss/environment.scss b/apps/browser/src/popup/scss/environment.scss index 17e7c23d2e1..cbd4d8ad6da 100644 --- a/apps/browser/src/popup/scss/environment.scss +++ b/apps/browser/src/popup/scss/environment.scss @@ -23,6 +23,12 @@ html.browser_safari { } } + .content { + &.login-page { + padding-top: 100px; + } + } + app-root { border-width: 1px; border-style: solid; diff --git a/apps/browser/src/popup/scss/misc.scss b/apps/browser/src/popup/scss/misc.scss index a4d5dcba96a..2e832e92863 100644 --- a/apps/browser/src/popup/scss/misc.scss +++ b/apps/browser/src/popup/scss/misc.scss @@ -132,7 +132,12 @@ p.lead { } .img-rounded { - border-radius: 6px; + border-radius: $border-radius; +} + +.select-index-top { + position: relative; + z-index: 100; } .sr-only { @@ -440,3 +445,7 @@ app-vault-view .box-footer { html.force_redraw { animation: redraw 1s linear infinite; } + +.rounded-circle { + border-radius: 50% !important; +} diff --git a/apps/browser/src/popup/scss/pages.scss b/apps/browser/src/popup/scss/pages.scss index 9ff96f048b3..9ba21f63ca7 100644 --- a/apps/browser/src/popup/scss/pages.scss +++ b/apps/browser/src/popup/scss/pages.scss @@ -11,8 +11,16 @@ app-sync { app-generator .generated-block { font-size: $font-size-large; font-family: $font-family-monospace; - margin: 20px; + margin: 10px; + padding: 10px 10px 10px 0; display: flex; + border-radius: $border-radius; + border: 1px solid; + + @include themify($themes) { + background-color: transparent; + border-color: themed("borderColorAlt"); + } .generated-wrapper { text-align: left; @@ -20,15 +28,30 @@ app-generator .generated-block { min-width: 0; white-space: pre-wrap; word-break: break-all; + padding: 15px; + border-radius: $border-radius; + + @include themify($themes) { + background-color: themed("backgroundColor"); + } } .action-buttons { display: flex; align-self: center; + height: 100%; + margin-left: 10px; button { - padding: 5px; - margin: -5px -5px 5px 5px; + padding: 6px; + margin: 2px; + border-radius: $border-radius; + + &:hover { + @include themify($themes) { + background-color: themed("hoverColorTransparent"); + } + } } } } @@ -88,7 +111,7 @@ app-home { } } -app-private-mode-warning { +.app-private-mode-warning { display: block; padding-top: 1rem; } @@ -115,3 +138,33 @@ body.body-full { } } } + +.createAccountLink { + padding: 30px 10px 0 10px; +} + +.login-buttons > button { + margin: 15px 0 15px 0; +} + +app-options { + .box { + margin: 10px 0; + + & + .box { + margin-top: 10px; + } + } +} + +app-vault-view, +app-vault-add-edit, +app-generator { + .box { + margin: 15px 0 25px 0; + + & + .box { + margin-top: 25px; + } + } +} diff --git a/apps/browser/src/popup/scss/variables.scss b/apps/browser/src/popup/scss/variables.scss index 049954bc335..0e99f1058a6 100644 --- a/apps/browser/src/popup/scss/variables.scss +++ b/apps/browser/src/popup/scss/variables.scss @@ -6,6 +6,8 @@ $font-family-sans-serif: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-s $font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace; $font-size-base: 14px; $font-size-large: 18px; +$font-size-xlarge: 22px; +$font-size-xxlarge: 28px; $font-size-small: 12px; $text-color: #000000; $border-color: #f0f0f0; @@ -13,8 +15,9 @@ $border-color-dark: #ddd; $list-item-hover: #fbfbfb; $list-icon-color: #767679; $disabled-box-opacity: 1; -$border-radius: 3px; +$border-radius: 6px; $line-height-base: 1.42857143; +$icon-hover-color: lighten($text-color, 50%); $gray: #555; $gray-light: #777; @@ -32,6 +35,7 @@ $background-color: #f0f0f0; $box-background-color: white; $box-background-hover-color: $list-item-hover; $box-border-color: $border-color; +$border-color-alt: #c3c5c7; $button-border-color: darken($border-color-dark, 12%); $button-background-color: white; @@ -59,8 +63,10 @@ $solarizedDarkGreen: #859900; $themes: ( light: ( textColor: $text-color, + hoverColorTransparent: rgba($text-color, 0.15), borderColor: $border-color-dark, backgroundColor: $background-color, + borderColorAlt: $border-color-alt, backgroundColorAlt: #ffffff, scrollbarColor: rgba(100, 100, 100, 0.2), scrollbarHoverColor: rgba(100, 100, 100, 0.4), @@ -107,11 +113,21 @@ $themes: ( calloutBackgroundColor: $box-background-color, toastTextColor: #ffffff, svgSuffix: "-light.svg", + transparentColor: rgba(0, 0, 0, 0), + dateInputColorScheme: light, + // https://stackoverflow.com/a/53336754 + webkitCalendarPickerFilter: invert(46%) sepia(69%) saturate(6397%) hue-rotate(211deg) + brightness(85%) contrast(103%), + // light has no hover so use same color + webkitCalendarPickerHoverFilter: invert(46%) sepia(69%) saturate(6397%) hue-rotate(211deg) + brightness(85%) contrast(103%), ), dark: ( textColor: #ffffff, + hoverColorTransparent: rgba($text-color, 0.15), borderColor: #161c26, backgroundColor: #161c26, + borderColorAlt: #6e788a, backgroundColorAlt: #2f343d, scrollbarColor: #6e788a, scrollbarHoverColor: #8d94a5, @@ -158,11 +174,20 @@ $themes: ( calloutBackgroundColor: #3c424e, toastTextColor: #1f242e, svgSuffix: "-dark.svg", + transparentColor: rgba(0, 0, 0, 0), + dateInputColorScheme: dark, + // https://stackoverflow.com/a/53336754 - must prepend brightness(0) saturate(100%) to dark themed date inputs + webkitCalendarPickerFilter: brightness(0) saturate(100%) invert(86%) sepia(19%) saturate(152%) + hue-rotate(184deg) brightness(87%) contrast(93%), + webkitCalendarPickerHoverFilter: brightness(0) saturate(100%) invert(100%) sepia(0%) + saturate(0%) hue-rotate(93deg) brightness(103%) contrast(103%), ), nord: ( textColor: $nord5, + hoverColorTransparent: rgba($text-color, 0.15), borderColor: $nord0, backgroundColor: $nord1, + borderColorAlt: $nord5, backgroundColorAlt: $nord2, scrollbarColor: $nord4, scrollbarHoverColor: $nord6, @@ -209,16 +234,25 @@ $themes: ( calloutBackgroundColor: $nord2, toastTextColor: #ffffff, svgSuffix: "-dark.svg", + transparentColor: rgba(0, 0, 0, 0), + dateInputColorScheme: dark, + webkitCalendarPickerFilter: brightness(0) saturate(100%) invert(94%) sepia(5%) saturate(454%) + hue-rotate(185deg) brightness(93%) contrast(96%), + // has no hover so use same color + webkitCalendarPickerHoverFilter: brightness(0) saturate(100%) invert(94%) sepia(5%) + saturate(454%) hue-rotate(185deg) brightness(93%) contrast(96%), ), solarizedDark: ( textColor: $solarizedDarkBase2, + hoverColorTransparent: rgba($text-color, 0.15), borderColor: $solarizedDarkBase03, backgroundColor: $solarizedDarkBase03, + borderColorAlt: $solarizedDarkBase01, backgroundColorAlt: $solarizedDarkBase02, scrollbarColor: $solarizedDarkBase0, scrollbarHoverColor: $solarizedDarkBase2, - boxBackgroundColor: $solarizedDarkBase03, - boxBackgroundHoverColor: $solarizedDarkBase02, + boxBackgroundColor: $solarizedDarkBase02, + boxBackgroundHoverColor: lighten($solarizedDarkBase02, 5%), boxBorderColor: $solarizedDarkBase02, tabBackgroundColor: $solarizedDarkBase02, tabBackgroundHoverColor: $solarizedDarkBase01, @@ -230,7 +264,7 @@ $themes: ( headerInputBackgroundFocusColor: $solarizedDarkBase1, headerInputColor: $solarizedDarkBase01, headerInputPlaceholderColor: $solarizedDarkBase00, - listItemBackgroundHoverColor: $solarizedDarkBase02, + listItemBackgroundHoverColor: lighten($solarizedDarkBase02, 5%), disabledIconColor: $solarizedDarkBase0, disabledBoxOpacity: 0.5, headingColor: $solarizedDarkBase0, @@ -260,6 +294,12 @@ $themes: ( calloutBackgroundColor: $solarizedDarkBase01, toastTextColor: #ffffff, svgSuffix: "-solarized.svg", + transparentColor: rgba(0, 0, 0, 0), + dateInputColorScheme: dark, + webkitCalendarPickerFilter: brightness(0) saturate(100%) invert(61%) sepia(13%) saturate(289%) + hue-rotate(138deg) brightness(92%) contrast(90%), + webkitCalendarPickerHoverFilter: brightness(0) saturate(100%) invert(94%) sepia(10%) + saturate(462%) hue-rotate(345deg) brightness(103%) contrast(87%), ), ); diff --git a/apps/browser/src/popup/send/send-add-edit.component.ts b/apps/browser/src/popup/send/send-add-edit.component.ts index c04e180dbf5..2fb45996ad1 100644 --- a/apps/browser/src/popup/send/send-add-edit.component.ts +++ b/apps/browser/src/popup/send/send-add-edit.component.ts @@ -108,7 +108,7 @@ export class SendAddEditComponent extends BaseAddEditComponent { const type = parseInt(params.type, null); this.type = type; } - await this.load(); + await super.ngOnInit(); }); window.setTimeout(() => { diff --git a/apps/browser/src/popup/services/services.module.ts b/apps/browser/src/popup/services/services.module.ts index da96f7f9037..236ff4e5b18 100644 --- a/apps/browser/src/popup/services/services.module.ts +++ b/apps/browser/src/popup/services/services.module.ts @@ -24,6 +24,7 @@ import { FolderService } from "@bitwarden/common/abstractions/folder/folder.serv import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { KeyConnectorService } from "@bitwarden/common/abstractions/keyConnector.service"; import { LogService as LogServiceAbstraction } from "@bitwarden/common/abstractions/log.service"; +import { LoginService as LoginServiceAbstraction } from "@bitwarden/common/abstractions/login.service"; import { MessagingService } from "@bitwarden/common/abstractions/messaging.service"; import { NotificationsService } from "@bitwarden/common/abstractions/notifications.service"; import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; @@ -48,6 +49,7 @@ import { VaultTimeoutService } from "@bitwarden/common/abstractions/vaultTimeout import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service"; import { AuthService } from "@bitwarden/common/services/auth.service"; import { ConsoleLogService } from "@bitwarden/common/services/consoleLog.service"; +import { LoginService } from "@bitwarden/common/services/login.service"; import { SearchService } from "@bitwarden/common/services/search.service"; import MainBackground from "../../background/main.background"; @@ -309,6 +311,10 @@ function getBgService(service: keyof MainBackground) { provide: FileDownloadService, useClass: BrowserFileDownloadService, }, + { + provide: LoginServiceAbstraction, + useClass: LoginService, + }, { provide: AbstractThemingService, useFactory: () => { diff --git a/apps/browser/src/popup/vault/current-tab.component.html b/apps/browser/src/popup/vault/current-tab.component.html index f88fd2feca3..9ed3662bc5d 100644 --- a/apps/browser/src/popup/vault/current-tab.component.html +++ b/apps/browser/src/popup/vault/current-tab.component.html @@ -41,7 +41,7 @@ {{ "typeLogins" | i18n }} {{ loginCiphers.length }} -
+
- +
diff --git a/apps/browser/src/popup/vault/vault-select.component.html b/apps/browser/src/popup/vault/vault-select.component.html index 95d1effd7fd..f57056feb59 100644 --- a/apps/browser/src/popup/vault/vault-select.component.html +++ b/apps/browser/src/popup/vault/vault-select.component.html @@ -35,7 +35,7 @@  {{ "allVaults" | i18n }} - diff --git a/apps/browser/src/popup/vault/vault-select.component.ts b/apps/browser/src/popup/vault/vault-select.component.ts index 04ae04d0fab..5193f520edc 100644 --- a/apps/browser/src/popup/vault/vault-select.component.ts +++ b/apps/browser/src/popup/vault/vault-select.component.ts @@ -15,7 +15,6 @@ import { } from "@angular/core"; import { BehaviorSubject, concatMap, map, merge, Observable, Subject, takeUntil } from "rxjs"; -import { VaultFilter } from "@bitwarden/angular/vault/vault-filter/models/vault-filter.model"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; @@ -54,14 +53,13 @@ export class VaultSelectComponent implements OnInit, OnDestroy { buttonRef: ElementRef; @ViewChild("vaultSelectorTemplate", { read: TemplateRef }) templateRef: TemplateRef; - private _selectedVault = new BehaviorSubject(null); + private _selectedVault = new BehaviorSubject(null); isOpen = false; loaded = false; organizations$: Observable; - selectedVault$: Observable = this._selectedVault.asObservable(); + selectedVault$: Observable = this._selectedVault.asObservable(); - vaultFilter: VaultFilter = new VaultFilter(); enforcePersonalOwnership = false; overlayPostition: ConnectedPosition[] = [ { @@ -111,16 +109,15 @@ export class VaultSelectComponent implements OnInit, OnDestroy { await this.vaultFilterService.checkForPersonalOwnershipPolicy(); if (this.shouldShow(organizations)) { - if (this.enforcePersonalOwnership && !this.vaultFilter.myVaultOnly) { + if (this.enforcePersonalOwnership && !this.vaultFilterService.vaultFilter.myVaultOnly) { const firstOrganization = organizations[0]; this._selectedVault.next(firstOrganization.name); this.vaultFilterService.setVaultFilter(firstOrganization.id); - this.vaultFilter.selectedOrganizationId = firstOrganization.id; - } else if (this.vaultFilter.myVaultOnly) { + } else if (this.vaultFilterService.vaultFilter.myVaultOnly) { this._selectedVault.next(this.i18nService.t(this.vaultFilterService.myVault)); - } else if (this.vaultFilter.selectedOrganizationId != null) { + } else if (this.vaultFilterService.vaultFilter.selectedOrganizationId != null) { const selectedOrganization = organizations.find( - (o) => o.id === this.vaultFilter.selectedOrganizationId + (o) => o.id === this.vaultFilterService.vaultFilter.selectedOrganizationId ); this._selectedVault.next(selectedOrganization.name); } else { diff --git a/apps/browser/src/safari/desktop.xcodeproj/project.pbxproj b/apps/browser/src/safari/desktop.xcodeproj/project.pbxproj index fc05760fc99..04536042880 100644 --- a/apps/browser/src/safari/desktop.xcodeproj/project.pbxproj +++ b/apps/browser/src/safari/desktop.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 03100CAF291891F4008E14EF /* encrypt-worker.js in Resources */ = {isa = PBXBuildFile; fileRef = 03100CAE291891F4008E14EF /* encrypt-worker.js */; }; 55E0374D2577FA6B00979016 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55E0374C2577FA6B00979016 /* AppDelegate.swift */; }; 55E037502577FA6B00979016 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 55E0374E2577FA6B00979016 /* Main.storyboard */; }; 55E037522577FA6B00979016 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55E037512577FA6B00979016 /* ViewController.swift */; }; @@ -50,6 +51,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 03100CAE291891F4008E14EF /* encrypt-worker.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; name = "encrypt-worker.js"; path = "../../../build/encrypt-worker.js"; sourceTree = ""; }; 5508DD7926051B5900A85C58 /* libswiftAppKit.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libswiftAppKit.tbd; path = usr/lib/swift/libswiftAppKit.tbd; sourceTree = SDKROOT; }; 55E037482577FA6B00979016 /* desktop.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = desktop.app; sourceTree = BUILT_PRODUCTS_DIR; }; 55E0374B2577FA6B00979016 /* desktop.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = desktop.entitlements; sourceTree = ""; }; @@ -148,6 +150,7 @@ 55E0376F2577FA6F00979016 /* Resources */ = { isa = PBXGroup; children = ( + 03100CAE291891F4008E14EF /* encrypt-worker.js */, 55E037702577FA6F00979016 /* popup */, 55E037712577FA6F00979016 /* background.js */, 55E037722577FA6F00979016 /* images */, @@ -263,6 +266,7 @@ 55E037802577FA6F00979016 /* background.html in Resources */, 55E0377A2577FA6F00979016 /* background.js in Resources */, 55E037792577FA6F00979016 /* popup in Resources */, + 03100CAF291891F4008E14EF /* encrypt-worker.js in Resources */, 55E0377C2577FA6F00979016 /* notification in Resources */, 55E0377E2577FA6F00979016 /* vendor.js in Resources */, 55E0377D2577FA6F00979016 /* content in Resources */, diff --git a/apps/browser/src/services/autofill.service.ts b/apps/browser/src/services/autofill.service.ts index fe7837dd4b5..470bd584cf1 100644 --- a/apps/browser/src/services/autofill.service.ts +++ b/apps/browser/src/services/autofill.service.ts @@ -6,6 +6,7 @@ import { CipherRepromptType } from "@bitwarden/common/enums/cipherRepromptType"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { EventType } from "@bitwarden/common/enums/eventType"; import { FieldType } from "@bitwarden/common/enums/fieldType"; +import { UriMatchType } from "@bitwarden/common/enums/uriMatchType"; import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { FieldView } from "@bitwarden/common/models/view/field.view"; @@ -305,6 +306,8 @@ export default class AutofillService implements AutofillServiceInterface { let pf: AutofillField = null; let username: AutofillField = null; const login = options.cipher.login; + fillScript.savedUrls = + login?.uris?.filter((u) => u.match != UriMatchType.Never).map((u) => u.uri) ?? []; if (!login.password || login.password === "") { // No password for this login. Maybe they just wanted to auto-fill some custom fields? diff --git a/apps/browser/src/services/browser-environment.service.ts b/apps/browser/src/services/browser-environment.service.ts index 384d22fda51..b3aab9a7a10 100644 --- a/apps/browser/src/services/browser-environment.service.ts +++ b/apps/browser/src/services/browser-environment.service.ts @@ -20,6 +20,10 @@ export class BrowserEnvironmentService extends EnvironmentService { } async settingsHaveChanged() { + if (!(await this.hasManagedEnvironment())) { + return false; + } + const env = await this.getManagedEnvironment(); return ( @@ -37,6 +41,10 @@ export class BrowserEnvironmentService extends EnvironmentService { return devFlagEnabled("managedEnvironment") ? new Promise((resolve) => resolve(devFlagValue("managedEnvironment"))) : new Promise((resolve, reject) => { + if (chrome.storage.managed == null) { + return resolve(null); + } + chrome.storage.managed.get("environment", (result) => { if (chrome.runtime.lastError) { return reject(chrome.runtime.lastError); diff --git a/apps/browser/src/services/localBackedSessionStorage.service.spec.ts b/apps/browser/src/services/localBackedSessionStorage.service.spec.ts index 85937336081..b5f80d4fee1 100644 --- a/apps/browser/src/services/localBackedSessionStorage.service.spec.ts +++ b/apps/browser/src/services/localBackedSessionStorage.service.spec.ts @@ -4,7 +4,7 @@ import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { Utils } from "@bitwarden/common/misc/utils"; import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; -import { EncryptService } from "@bitwarden/common/src/services/encrypt.service"; +import { EncryptServiceImplementation } from "@bitwarden/common/services/cryptography/encrypt.service.implementation"; import BrowserLocalStorageService from "./browserLocalStorage.service"; import BrowserMemoryStorageService from "./browserMemoryStorage.service"; @@ -12,7 +12,7 @@ import { KeyGenerationService } from "./keyGeneration.service"; import { LocalBackedSessionStorageService } from "./localBackedSessionStorage.service"; describe("Browser Session Storage Service", () => { - let encryptService: SubstituteOf; + let encryptService: SubstituteOf; let keyGenerationService: SubstituteOf; let cache: Map; diff --git a/apps/browser/src/services/localBackedSessionStorage.service.ts b/apps/browser/src/services/localBackedSessionStorage.service.ts index 5c98f4e3103..54b0537f725 100644 --- a/apps/browser/src/services/localBackedSessionStorage.service.ts +++ b/apps/browser/src/services/localBackedSessionStorage.service.ts @@ -1,6 +1,6 @@ import { Jsonify } from "type-fest"; -import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { AbstractCachedStorageService, MemoryStorageServiceInterface, @@ -30,7 +30,7 @@ export class LocalBackedSessionStorageService private sessionStorage = new BrowserMemoryStorageService(); constructor( - private encryptService: AbstractEncryptService, + private encryptService: EncryptService, private keyGenerationService: AbstractKeyGenerationService ) { super(); diff --git a/apps/browser/store/locales/pt_BR/copy.resx b/apps/browser/store/locales/pt_BR/copy.resx index 90a2959e807..48111fa814f 100644 --- a/apps/browser/store/locales/pt_BR/copy.resx +++ b/apps/browser/store/locales/pt_BR/copy.resx @@ -124,31 +124,31 @@ Um gerenciador de senhas gratuito e seguro para todos os seus dispositivos - Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + Bitwarden, Inc. é a empresa matriz da 8bit Solutions LLC. -NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. +NOMEADA MELHOR GERENCIADORA DE SENHAS PELA VERGE, U.S. NEWS & WORLD REPORT, CNET, E MUITO MAIS. -Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. +Gerenciar, armazenar, proteger e compartilhar senhas ilimitadas através de dispositivos ilimitados de qualquer lugar. Bitwarden fornece soluções de gerenciamento de senhas de código aberto para todos, seja em casa, no trabalho ou em viagem. -Generate strong, unique, and random passwords based on security requirements for every website you frequent. +Gere senhas fortes, únicas e aleatórias com base nos requisitos de segurança para cada site que você frequenta. -Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. +A Bitwarden Send transmite rapidamente informações criptografadas --- arquivos e texto em formato de placa -- diretamente para qualquer pessoa. -Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. +Bitwarden oferece equipes e planos empresariais para empresas para que você possa compartilhar senhas com colegas com segurança. -Why Choose Bitwarden: +Por que escolher Bitwarden: -World-Class Encryption -Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. +Criptografia de Classe Mundial +As senhas são protegidas com criptografia avançada de ponta a ponta (AES-256 bit, salted hashing e PBKDF2 SHA-256) para que seus dados permaneçam seguros e privados. -Built-in Password Generator -Generate strong, unique, and random passwords based on security requirements for every website you frequent. +Gerador de senhas embutido +Gerar senhas fortes, únicas e aleatórias com base nos requisitos de segurança para cada site que você freqüenta. -Global Translations -Bitwarden translations exist in 40 languages and are growing, thanks to our global community. +Traduções globais +As traduções Bitwarden existem em 40 idiomas e estão crescendo, graças à nossa comunidade global. -Cross-Platform Applications -Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. +Aplicações multiplataforma +Proteja e compartilhe dados sensíveis dentro de seu Bitwarden Vault a partir de qualquer navegador, dispositivo móvel ou SO desktop, e muito mais. diff --git a/apps/browser/tsconfig.json b/apps/browser/tsconfig.json index 5c35b45fde8..70c40f52e60 100644 --- a/apps/browser/tsconfig.json +++ b/apps/browser/tsconfig.json @@ -4,7 +4,7 @@ "noImplicitAny": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "module": "es6", + "module": "ES2020", "target": "ES2016", "allowJs": true, "sourceMap": true, @@ -17,5 +17,5 @@ "angularCompilerOptions": { "preserveWhitespaces": true }, - "include": ["src"] + "include": ["src", "../../libs/common/src/services/**/*.worker.ts"] } diff --git a/apps/browser/webpack.config.js b/apps/browser/webpack.config.js index 9159028af01..3dc4085d3d0 100644 --- a/apps/browser/webpack.config.js +++ b/apps/browser/webpack.config.js @@ -138,6 +138,7 @@ const config = { "content/contextMenuHandler": "./src/content/contextMenuHandler.ts", "content/message_handler": "./src/content/message_handler.ts", "notification/bar": "./src/notification/bar.js", + "encrypt-worker": "../../libs/common/src/services/cryptography/encrypt.worker.ts", }, optimization: { minimize: ENV !== "development", diff --git a/apps/cli/src/bw.ts b/apps/cli/src/bw.ts index c14fcc229a8..42738b7dfa7 100644 --- a/apps/cli/src/bw.ts +++ b/apps/cli/src/bw.ts @@ -20,7 +20,7 @@ import { CipherService } from "@bitwarden/common/services/cipher.service"; import { CollectionService } from "@bitwarden/common/services/collection.service"; import { ContainerService } from "@bitwarden/common/services/container.service"; import { CryptoService } from "@bitwarden/common/services/crypto.service"; -import { EncryptService } from "@bitwarden/common/services/encrypt.service"; +import { EncryptServiceImplementation } from "@bitwarden/common/services/cryptography/encrypt.service.implementation"; import { EnvironmentService } from "@bitwarden/common/services/environment.service"; import { ExportService } from "@bitwarden/common/services/export.service"; import { FileUploadService } from "@bitwarden/common/services/fileUpload.service"; @@ -94,7 +94,7 @@ export class Main { exportService: ExportService; searchService: SearchService; cryptoFunctionService: NodeCryptoFunctionService; - encryptService: EncryptService; + encryptService: EncryptServiceImplementation; authService: AuthService; policyService: PolicyService; program: Program; @@ -140,7 +140,11 @@ export class Main { (level) => process.env.BITWARDENCLI_DEBUG !== "true" && level <= LogLevelType.Info ); this.cryptoFunctionService = new NodeCryptoFunctionService(); - this.encryptService = new EncryptService(this.cryptoFunctionService, this.logService, true); + this.encryptService = new EncryptServiceImplementation( + this.cryptoFunctionService, + this.logService, + true + ); this.storageService = new LowdbStorageService(this.logService, null, p, false, true); this.secureStorageService = new NodeEnvSecureStorageService( this.storageService, @@ -211,7 +215,8 @@ export class Main { this.i18nService, null, this.logService, - this.stateService + this.stateService, + this.encryptService ); this.broadcasterService = new BroadcasterService(); diff --git a/apps/cli/src/commands/export.command.ts b/apps/cli/src/commands/export.command.ts index 4b367463096..50446d7e027 100644 --- a/apps/cli/src/commands/export.command.ts +++ b/apps/cli/src/commands/export.command.ts @@ -1,6 +1,5 @@ import * as program from "commander"; import * as inquirer from "inquirer"; -import { firstValueFrom } from "rxjs"; import { ExportFormat, ExportService } from "@bitwarden/common/abstractions/export.service"; import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; @@ -16,9 +15,7 @@ export class ExportCommand { async run(options: program.OptionValues): Promise { if ( options.organizationid == null && - (await firstValueFrom( - this.policyService.policyAppliesToActiveUser$(PolicyType.DisablePersonalVaultExport) - )) + (await this.policyService.policyAppliesToUser(PolicyType.DisablePersonalVaultExport)) ) { return Response.badRequest( "One or more organization policies prevents you from exporting your personal vault." diff --git a/apps/cli/src/commands/get.command.ts b/apps/cli/src/commands/get.command.ts index fb08ce06567..d2ca9edbd48 100644 --- a/apps/cli/src/commands/get.command.ts +++ b/apps/cli/src/commands/get.command.ts @@ -436,7 +436,7 @@ export class GetCommand extends DownloadCommand { private async getOrganization(id: string) { let org: Organization = null; if (Utils.isGuid(id)) { - org = await this.organizationService.get(id); + org = await this.organizationService.getFromState(id); } else if (id.trim() !== "") { let orgs = await this.organizationService.getAll(); orgs = CliUtils.searchOrganizations(orgs, id); diff --git a/apps/cli/src/commands/import.command.ts b/apps/cli/src/commands/import.command.ts index 6fb17fa2cd9..fcb2e215bbc 100644 --- a/apps/cli/src/commands/import.command.ts +++ b/apps/cli/src/commands/import.command.ts @@ -23,7 +23,7 @@ export class ImportCommand { ): Promise { const organizationId = options.organizationid; if (organizationId != null) { - const organization = await this.organizationService.get(organizationId); + const organization = await this.organizationService.getFromState(organizationId); if (organization == null) { return Response.badRequest( diff --git a/apps/cli/src/commands/list.command.ts b/apps/cli/src/commands/list.command.ts index 250237a7878..5322026284d 100644 --- a/apps/cli/src/commands/list.command.ts +++ b/apps/cli/src/commands/list.command.ts @@ -163,7 +163,7 @@ export class ListCommand { if (!Utils.isGuid(options.organizationId)) { return Response.badRequest("`" + options.organizationId + "` is not a GUID."); } - const organization = await this.organizationService.get(options.organizationId); + const organization = await this.organizationService.getFromState(options.organizationId); if (organization == null) { return Response.error("Organization not found."); } @@ -196,7 +196,7 @@ export class ListCommand { if (!Utils.isGuid(options.organizationId)) { return Response.badRequest("`" + options.organizationId + "` is not a GUID."); } - const organization = await this.organizationService.get(options.organizationId); + const organization = await this.organizationService.getFromState(options.organizationId); if (organization == null) { return Response.error("Organization not found."); } diff --git a/apps/cli/src/program.ts b/apps/cli/src/program.ts index 31a8005bb45..f80a87068b1 100644 --- a/apps/cli/src/program.ts +++ b/apps/cli/src/program.ts @@ -478,7 +478,7 @@ export class Program extends BaseProgram { .option("--port ", "The port to run your API webserver on.") .option( "--disable-origin-protection", - "If set, allows requests with origin header. Not recommended!" + "If set, allows requests with origin header. Warning, this option exists for backwards compatibility reasons and exposes your environment to known CSRF attacks." ) .on("--help", () => { writeLn("\n Notes:"); diff --git a/apps/desktop/config/base.json b/apps/desktop/config/base.json index 6df6c2cfdb1..3ae895a19cf 100644 --- a/apps/desktop/config/base.json +++ b/apps/desktop/config/base.json @@ -1,4 +1,6 @@ { "dev_flags": {}, - "flags": {} + "flags": { + "multithreadDecryption": false + } } diff --git a/apps/desktop/native-messaging-test-runner/src/nativeMessageService.ts b/apps/desktop/native-messaging-test-runner/src/nativeMessageService.ts index 0a5f4323b5f..916ec3c286e 100644 --- a/apps/desktop/native-messaging-test-runner/src/nativeMessageService.ts +++ b/apps/desktop/native-messaging-test-runner/src/nativeMessageService.ts @@ -6,7 +6,7 @@ import { Utils } from "@bitwarden/common/misc/utils"; import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { ConsoleLogService } from "@bitwarden/common/services/consoleLog.service"; -import { EncryptService } from "@bitwarden/common/services/encrypt.service"; +import { EncryptServiceImplementation } from "@bitwarden/common/services/cryptography/encrypt.service.implementation"; import { NodeCryptoFunctionService } from "@bitwarden/node/services/nodeCryptoFunction.service"; import { DecryptedCommandData } from "../../src/models/nativeMessaging/decryptedCommandData"; @@ -32,7 +32,7 @@ const CONFIRMATION_MESSAGE_TIMEOUT = 100 * 1000; // 100 seconds export default class NativeMessageService { private ipcService: IPCService; private nodeCryptoFunctionService: NodeCryptoFunctionService; - private encryptService: EncryptService; + private encryptService: EncryptServiceImplementation; constructor(private apiVersion: number) { console.log("Starting native messaging service"); @@ -41,7 +41,7 @@ export default class NativeMessageService { }); this.nodeCryptoFunctionService = new NodeCryptoFunctionService(); - this.encryptService = new EncryptService( + this.encryptService = new EncryptServiceImplementation( this.nodeCryptoFunctionService, new ConsoleLogService(false), false diff --git a/apps/desktop/package.json b/apps/desktop/package.json index b92347c7c2a..962245de294 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -23,11 +23,12 @@ "build:dev": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main:dev\" \"npm run build:renderer:dev\"", "build:main": "cross-env NODE_ENV=production webpack --config webpack.main.js", "build:main:dev": "npm run build-native && cross-env NODE_ENV=development webpack --config webpack.main.js", + "build:main:watch": "npm run build-native && cross-env NODE_ENV=development webpack --config webpack.main.js --watch", "build:renderer": "cross-env NODE_ENV=production webpack --config webpack.renderer.js", "build:renderer:dev": "cross-env NODE_ENV=development webpack --config webpack.renderer.js", "build:renderer:watch": "cross-env NODE_ENV=development webpack --config webpack.renderer.js --watch", - "electron": "npm run build:main:dev && concurrently -k -n Main,Rend -c yellow,cyan \"electron --inspect=5858 ./build --watch\" \"npm run build:renderer:watch\"", - "electron:ignore": "npm run build:main:dev && concurrently -k -n Main,Rend -c yellow,cyan \"electron --inspect=5858 --ignore-certificate-errors ./build --watch\" \"npm run build:renderer:watch\"", + "electron": "node ./scripts/start.js", + "electron:ignore": "node ./scripts/start.js --ignore-certificate-errors", "clean:dist": "rimraf ./dist/*", "pack:dir": "npm run clean:dist && electron-builder --dir -p never", "pack:lin": "npm run clean:dist && electron-builder --linux --x64 -p never", diff --git a/apps/desktop/scripts/start.js b/apps/desktop/scripts/start.js new file mode 100644 index 00000000000..19b11125061 --- /dev/null +++ b/apps/desktop/scripts/start.js @@ -0,0 +1,34 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const concurrently = require("concurrently"); +const rimraf = require("rimraf"); + +const args = process.argv.splice(2); + +rimraf.sync("build"); + +concurrently( + [ + { + name: "Main", + command: "npm run build:main:watch", + prefixColor: "yellow", + }, + { + name: "Rend", + command: "npm run build:renderer:watch", + prefixColor: "cyan", + }, + { + name: "Elec", + command: `npx wait-on ./build/main.js && npx electron --inspect=5858 ${args.join( + " " + )} ./build --watch`, + prefixColor: "green", + }, + ], + { + prefix: "name", + outputStream: process.stdout, + killOthers: ["success", "failure"], + } +); diff --git a/apps/desktop/src/app/accounts/hint.component.ts b/apps/desktop/src/app/accounts/hint.component.ts index 7ecc9ef1cbb..8987efd6174 100644 --- a/apps/desktop/src/app/accounts/hint.component.ts +++ b/apps/desktop/src/app/accounts/hint.component.ts @@ -5,6 +5,7 @@ import { HintComponent as BaseHintComponent } from "@bitwarden/angular/component import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; +import { LoginService } from "@bitwarden/common/abstractions/login.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; @Component({ @@ -17,8 +18,9 @@ export class HintComponent extends BaseHintComponent { platformUtilsService: PlatformUtilsService, i18nService: I18nService, apiService: ApiService, - logService: LogService + logService: LogService, + loginService: LoginService ) { - super(router, i18nService, apiService, platformUtilsService, logService); + super(router, i18nService, apiService, platformUtilsService, logService, loginService); } } diff --git a/apps/desktop/src/app/accounts/login.component.html b/apps/desktop/src/app/accounts/login.component.html index c11ed881b00..ad8e7b26587 100644 --- a/apps/desktop/src/app/accounts/login.component.html +++ b/apps/desktop/src/app/accounts/login.component.html @@ -22,78 +22,136 @@
Bitwarden

{{ "loginOrCreateNewAccount" | i18n }}

-
-
-
- - -
-
-
- + + +
+
+
+
-
+
+ +
+
+ +
+
+
+ +
+
+
+

{{ "newAroundHere" | i18n }}

+ +
+ + + +
+
+
+
+ + +
+
+ +
+
+
+
+
+
+ +
-
-
-
- -
- +
+
+
-
-
-
- - -
-
+
+
+

{{ "loggingInAs" | i18n }} {{ loggedEmail }}

+ {{ "notYou" | i18n }} +
-
-
- -
+
diff --git a/apps/desktop/src/app/accounts/login.component.ts b/apps/desktop/src/app/accounts/login.component.ts index 33eefbd57ec..db77a783100 100644 --- a/apps/desktop/src/app/accounts/login.component.ts +++ b/apps/desktop/src/app/accounts/login.component.ts @@ -1,9 +1,11 @@ import { Component, NgZone, OnDestroy, ViewChild, ViewContainerRef } from "@angular/core"; import { FormBuilder } from "@angular/forms"; -import { Router } from "@angular/router"; +import { ActivatedRoute, Router } from "@angular/router"; import { LoginComponent as BaseLoginComponent } from "@bitwarden/angular/components/login.component"; import { ModalService } from "@bitwarden/angular/services/modal.service"; +import { ApiService } from "@bitwarden/common/abstractions/api.service"; +import { AppIdService } from "@bitwarden/common/abstractions/appId.service"; import { AuthService } from "@bitwarden/common/abstractions/auth.service"; import { BroadcasterService } from "@bitwarden/common/abstractions/broadcaster.service"; import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service"; @@ -11,6 +13,7 @@ import { EnvironmentService } from "@bitwarden/common/abstractions/environment.s import { FormValidationErrorsService } from "@bitwarden/common/abstractions/formValidationErrors.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; +import { LoginService } from "@bitwarden/common/abstractions/login.service"; import { MessagingService } from "@bitwarden/common/abstractions/messaging.service"; import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwordGeneration.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; @@ -29,13 +32,23 @@ export class LoginComponent extends BaseLoginComponent implements OnDestroy { @ViewChild("environment", { read: ViewContainerRef, static: true }) environmentModal: ViewContainerRef; - showingModal = false; + webVaultHostname = ""; - protected alwaysRememberEmail = true; + showingModal = false; private deferFocus: boolean = null; + get loggedEmail() { + return this.formGroup.value.email; + } + + get selfHostedDomain() { + return this.environmentService.hasBaseUrl() ? this.environmentService.getWebVaultUrl() : null; + } + constructor( + apiService: ApiService, + appIdService: AppIdService, authService: AuthService, router: Router, i18nService: I18nService, @@ -51,9 +64,13 @@ export class LoginComponent extends BaseLoginComponent implements OnDestroy { private messagingService: MessagingService, logService: LogService, formBuilder: FormBuilder, - formValidationErrorService: FormValidationErrorsService + formValidationErrorService: FormValidationErrorsService, + route: ActivatedRoute, + loginService: LoginService ) { super( + apiService, + appIdService, authService, router, platformUtilsService, @@ -65,7 +82,9 @@ export class LoginComponent extends BaseLoginComponent implements OnDestroy { logService, ngZone, formBuilder, - formValidationErrorService + formValidationErrorService, + route, + loginService ); super.onSuccessfulLogin = () => { return syncService.fullSync(true); @@ -127,11 +146,33 @@ export class LoginComponent extends BaseLoginComponent implements OnDestroy { this.showPassword = false; } + async continue() { + await super.validateEmail(); + if (!this.formGroup.controls.email.valid) { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccured"), + this.i18nService.t("invalidEmail") + ); + return; + } + this.focusInput(); + } + async submit() { + if (!this.validatedEmail) { + return; + } + await super.submit(); if (this.captchaSiteKey) { const content = document.getElementById("content") as HTMLDivElement; content.setAttribute("style", "width:335px"); } } + + private focusInput() { + const email = this.loggedEmail; + document.getElementById(email == null || email === "" ? "email" : "masterPassword").focus(); + } } diff --git a/apps/desktop/src/app/accounts/settings.component.html b/apps/desktop/src/app/accounts/settings.component.html index a1ecc0732f9..06cbb7fe8c6 100644 --- a/apps/desktop/src/app/accounts/settings.component.html +++ b/apps/desktop/src/app/accounts/settings.component.html @@ -309,23 +309,6 @@
{{ "enableBrowserIntegrationDesc" | i18n }}
-
-
- -
- {{ - "enableDuckDuckGoBrowserIntegrationDesc" | i18n - }} -
+
+
+ +
+ {{ + "enableDuckDuckGoBrowserIntegrationDesc" | i18n + }} +
- -
- -
- -
-
- + +
+ + {{ "emailAddress" | i18n }} + +
- - {{ "rememberEmail" | i18n }} - -
-
+
+
+ +
+ + {{ "rememberEmail" | i18n }} + +
-
- -
+
+ +
-
- +
- - - {{ "createAccount" | i18n }} - -
- -
- -
- - +

+ {{ "newAroundHere" | i18n }} + {{ "createAccount" | i18n }} +

+
+ + +
+ + {{ "masterPass" | i18n }} + + + + {{ + "getMasterPasswordHint" | i18n + }} +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ +
+

{{ "loggingInAs" | i18n }} {{ loggedEmail }}

+ {{ "notYou" | i18n }} +
+
diff --git a/apps/web/src/app/accounts/login/login.component.ts b/apps/web/src/app/accounts/login/login.component.ts index 1c842650498..a0867b13044 100644 --- a/apps/web/src/app/accounts/login/login.component.ts +++ b/apps/web/src/app/accounts/login/login.component.ts @@ -6,12 +6,14 @@ import { first } from "rxjs/operators"; import { LoginComponent as BaseLoginComponent } from "@bitwarden/angular/components/login.component"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; +import { AppIdService } from "@bitwarden/common/abstractions/appId.service"; import { AuthService } from "@bitwarden/common/abstractions/auth.service"; import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service"; import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service"; import { FormValidationErrorsService } from "@bitwarden/common/abstractions/formValidationErrors.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; +import { LoginService } from "@bitwarden/common/abstractions/login.service"; import { MessagingService } from "@bitwarden/common/abstractions/messaging.service"; import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwordGeneration.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; @@ -39,15 +41,16 @@ export class LoginComponent extends BaseLoginComponent implements OnInit, OnDest private destroy$ = new Subject(); constructor( + apiService: ApiService, + appIdService: AppIdService, authService: AuthService, router: Router, i18nService: I18nService, - private route: ActivatedRoute, + route: ActivatedRoute, platformUtilsService: PlatformUtilsService, environmentService: EnvironmentService, passwordGenerationService: PasswordGenerationService, cryptoFunctionService: CryptoFunctionService, - private apiService: ApiService, private policyApiService: PolicyApiServiceAbstraction, private policyService: InternalPolicyService, logService: LogService, @@ -56,9 +59,12 @@ export class LoginComponent extends BaseLoginComponent implements OnInit, OnDest private messagingService: MessagingService, private routerService: RouterService, formBuilder: FormBuilder, - formValidationErrorService: FormValidationErrorsService + formValidationErrorService: FormValidationErrorsService, + loginService: LoginService ) { super( + apiService, + appIdService, authService, router, platformUtilsService, @@ -70,7 +76,9 @@ export class LoginComponent extends BaseLoginComponent implements OnInit, OnDest logService, ngZone, formBuilder, - formValidationErrorService + formValidationErrorService, + route, + loginService ); this.onSuccessfulLogin = async () => { this.messagingService.send("setFullWidth"); @@ -82,9 +90,6 @@ export class LoginComponent extends BaseLoginComponent implements OnInit, OnDest async ngOnInit() { // eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe this.route.queryParams.pipe(first()).subscribe(async (qParams) => { - if (qParams.email != null && qParams.email.indexOf("@") > -1) { - this.formGroup.get("email")?.setValue(qParams.email); - } if (qParams.premium != null) { this.routerService.setPreviousUrl("/settings/premium"); } else if (qParams.org != null) { @@ -102,8 +107,6 @@ export class LoginComponent extends BaseLoginComponent implements OnInit, OnDest this.routerService.setPreviousUrl(route.toString()); } await super.ngOnInit(); - const rememberEmail = await this.stateService.getRememberEmail(); - this.formGroup.get("rememberEmail")?.setValue(rememberEmail); }); const invite = await this.stateService.getOrganizationInvitation(); @@ -176,10 +179,16 @@ export class LoginComponent extends BaseLoginComponent implements OnInit, OnDest if (previousUrl) { this.router.navigateByUrl(previousUrl); } else { + this.loginService.clearValues(); this.router.navigate([this.successRoute]); } } + goToHint() { + this.setFormValues(); + this.router.navigateByUrl("/hint"); + } + async submit() { const rememberEmail = this.formGroup.value.rememberEmail; @@ -198,8 +207,8 @@ export class LoginComponent extends BaseLoginComponent implements OnInit, OnDest return; } - const email = this.formGroup.get("email").value; - this.router.navigate(["/login-with-device"], { state: { email: email } }); + this.setFormValues(); + this.router.navigate(["/login-with-device"]); } private getPasswordStrengthUserInput() { diff --git a/apps/web/src/app/accounts/sso.component.html b/apps/web/src/app/accounts/sso.component.html index f5588953981..fb56cead245 100644 --- a/apps/web/src/app/accounts/sso.component.html +++ b/apps/web/src/app/accounts/sso.component.html @@ -16,7 +16,7 @@

{{ "ssoLogInWithOrgIdentifier" | i18n }}

- + orgs.sort(Utils.getSortFunction(this.i18nService, "name"))) ); this.loaded = true; diff --git a/apps/web/src/app/core/core.module.ts b/apps/web/src/app/core/core.module.ts index ba22f4422c4..ac349561c8f 100644 --- a/apps/web/src/app/core/core.module.ts +++ b/apps/web/src/app/core/core.module.ts @@ -13,6 +13,7 @@ import { JslibServicesModule } from "@bitwarden/angular/services/jslib-services. import { ModalService as ModalServiceAbstraction } from "@bitwarden/angular/services/modal.service"; import { FileDownloadService } from "@bitwarden/common/abstractions/fileDownload/fileDownload.service"; import { I18nService as I18nServiceAbstraction } from "@bitwarden/common/abstractions/i18n.service"; +import { LoginService as LoginServiceAbstraction } from "@bitwarden/common/abstractions/login.service"; import { MessagingService as MessagingServiceAbstraction } from "@bitwarden/common/abstractions/messaging.service"; import { PasswordRepromptService as PasswordRepromptServiceAbstraction } from "@bitwarden/common/abstractions/passwordReprompt.service"; import { PlatformUtilsService as PlatformUtilsServiceAbstraction } from "@bitwarden/common/abstractions/platformUtils.service"; @@ -20,6 +21,7 @@ import { StateService as BaseStateServiceAbstraction } from "@bitwarden/common/a import { StateMigrationService as StateMigrationServiceAbstraction } from "@bitwarden/common/abstractions/stateMigration.service"; import { AbstractStorageService } from "@bitwarden/common/abstractions/storage.service"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; +import { LoginService } from "@bitwarden/common/services/login.service"; import { MemoryStorageService } from "@bitwarden/common/services/memoryStorage.service"; import { BroadcasterMessagingService } from "./broadcaster-messaging.service"; @@ -98,6 +100,10 @@ import { WebPlatformUtilsService } from "./web-platform-utils.service"; provide: FileDownloadService, useClass: WebFileDownloadService, }, + { + provide: LoginServiceAbstraction, + useClass: LoginService, + }, ], }) export class CoreModule { diff --git a/apps/web/src/app/core/event.service.ts b/apps/web/src/app/core/event.service.ts index 4c4e488ff02..4556140afbb 100644 --- a/apps/web/src/app/core/event.service.ts +++ b/apps/web/src/app/core/event.service.ts @@ -1,5 +1,4 @@ -import { Injectable, OnDestroy, OnInit } from "@angular/core"; -import { Subject, takeUntil } from "rxjs"; +import { Injectable } from "@angular/core"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; @@ -10,23 +9,15 @@ import { Policy } from "@bitwarden/common/models/domain/policy"; import { EventResponse } from "@bitwarden/common/models/response/event.response"; @Injectable() -export class EventService implements OnInit, OnDestroy { - private destroy$ = new Subject(); +export class EventService { private policies: Policy[]; - constructor(private i18nService: I18nService, private policyService: PolicyService) {} - - ngOnInit(): void { - this.policyService.policies$.pipe(takeUntil(this.destroy$)).subscribe((policies) => { + constructor(private i18nService: I18nService, policyService: PolicyService) { + policyService.policies$.subscribe((policies) => { this.policies = policies; }); } - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.complete(); - } - getDefaultDateFilters() { const d = new Date(); const end = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59); @@ -147,6 +138,13 @@ export class EventService implements OnInit, OnDestroy { this.getShortId(ev.cipherId) ); break; + case EventType.Cipher_ClientToggledCardNumberVisible: + msg = this.i18nService.t("viewedCardNumberItemId", this.formatCipherId(ev, options)); + humanReadableMsg = this.i18nService.t( + "viewedCardNumberItemId", + this.getShortId(ev.cipherId) + ); + break; case EventType.Cipher_ClientToggledCardCodeVisible: msg = this.i18nService.t("viewedSecurityCodeItemId", this.formatCipherId(ev, options)); humanReadableMsg = this.i18nService.t( diff --git a/apps/web/src/app/core/index.ts b/apps/web/src/app/core/index.ts index 80c1a44d50f..f9a92f361cc 100644 --- a/apps/web/src/app/core/index.ts +++ b/apps/web/src/app/core/index.ts @@ -1,4 +1,7 @@ -export * from "./core.module"; +// Do not export this here or it will import MultithreadEncryptService (via JslibServicesModule) into test code. +// MultithreadEncryptService contains ES2020 features (import.meta) which are not supported in Node and Jest. +// Revisit this when Node & Jest get stable support for ESM. +// export * from "./core.module"; export * from "./event.service"; export * from "./policy-list.service"; export * from "./router.service"; diff --git a/apps/web/src/app/core/init.service.ts b/apps/web/src/app/core/init.service.ts index 0f61efb6738..75089529f22 100644 --- a/apps/web/src/app/core/init.service.ts +++ b/apps/web/src/app/core/init.service.ts @@ -2,8 +2,8 @@ import { Inject, Injectable } from "@angular/core"; import { WINDOW } from "@bitwarden/angular/services/injection-tokens"; import { AbstractThemingService } from "@bitwarden/angular/services/theming/theming.service.abstraction"; -import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; import { CryptoService as CryptoServiceAbstraction } from "@bitwarden/common/abstractions/crypto.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { EnvironmentService as EnvironmentServiceAbstraction, Urls, @@ -33,7 +33,7 @@ export class InitService { private stateService: StateServiceAbstraction, private cryptoService: CryptoServiceAbstraction, private themingService: AbstractThemingService, - private encryptService: AbstractEncryptService + private encryptService: EncryptService ) {} init() { diff --git a/apps/web/src/app/organizations/settings/adjust-subscription.component.html b/apps/web/src/app/organizations/billing/adjust-subscription.component.html similarity index 100% rename from apps/web/src/app/organizations/settings/adjust-subscription.component.html rename to apps/web/src/app/organizations/billing/adjust-subscription.component.html diff --git a/apps/web/src/app/organizations/settings/adjust-subscription.component.ts b/apps/web/src/app/organizations/billing/adjust-subscription.component.ts similarity index 100% rename from apps/web/src/app/organizations/settings/adjust-subscription.component.ts rename to apps/web/src/app/organizations/billing/adjust-subscription.component.ts diff --git a/apps/web/src/app/organizations/settings/change-plan.component.html b/apps/web/src/app/organizations/billing/change-plan.component.html similarity index 100% rename from apps/web/src/app/organizations/settings/change-plan.component.html rename to apps/web/src/app/organizations/billing/change-plan.component.html diff --git a/apps/web/src/app/organizations/settings/change-plan.component.ts b/apps/web/src/app/organizations/billing/change-plan.component.ts similarity index 100% rename from apps/web/src/app/organizations/settings/change-plan.component.ts rename to apps/web/src/app/organizations/billing/change-plan.component.ts diff --git a/apps/web/src/app/organizations/settings/download-license.component.html b/apps/web/src/app/organizations/billing/download-license.component.html similarity index 100% rename from apps/web/src/app/organizations/settings/download-license.component.html rename to apps/web/src/app/organizations/billing/download-license.component.html diff --git a/apps/web/src/app/organizations/settings/download-license.component.ts b/apps/web/src/app/organizations/billing/download-license.component.ts similarity index 100% rename from apps/web/src/app/organizations/settings/download-license.component.ts rename to apps/web/src/app/organizations/billing/download-license.component.ts diff --git a/apps/web/src/app/organizations/billing/organization-billing.module.ts b/apps/web/src/app/organizations/billing/organization-billing.module.ts index 7e2dcf534e9..513b7ba766f 100644 --- a/apps/web/src/app/organizations/billing/organization-billing.module.ts +++ b/apps/web/src/app/organizations/billing/organization-billing.module.ts @@ -1,9 +1,11 @@ import { NgModule } from "@angular/core"; -import { LooseComponentsModule } from "../../shared/loose-components.module"; -import { SharedModule } from "../../shared/shared.module"; +import { LooseComponentsModule, SharedModule } from "../../shared"; +import { AdjustSubscription } from "./adjust-subscription.component"; import { BillingSyncApiKeyComponent } from "./billing-sync-api-key.component"; +import { ChangePlanComponent } from "./change-plan.component"; +import { DownloadLicenseComponent } from "./download-license.component"; import { OrgBillingHistoryViewComponent } from "./organization-billing-history-view.component"; import { OrganizationBillingRoutingModule } from "./organization-billing-routing.module"; import { OrganizationBillingTabComponent } from "./organization-billing-tab.component"; @@ -12,7 +14,10 @@ import { OrganizationSubscriptionComponent } from "./organization-subscription.c @NgModule({ imports: [SharedModule, LooseComponentsModule, OrganizationBillingRoutingModule], declarations: [ + AdjustSubscription, BillingSyncApiKeyComponent, + ChangePlanComponent, + DownloadLicenseComponent, OrganizationBillingTabComponent, OrganizationSubscriptionComponent, OrgBillingHistoryViewComponent, diff --git a/apps/web/src/app/organizations/guards/org-redirect.guard.ts b/apps/web/src/app/organizations/guards/org-redirect.guard.ts new file mode 100644 index 00000000000..3f3213f6a32 --- /dev/null +++ b/apps/web/src/app/organizations/guards/org-redirect.guard.ts @@ -0,0 +1,32 @@ +import { Injectable } from "@angular/core"; +import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from "@angular/router"; + +import { + canAccessOrgAdmin, + OrganizationService, +} from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; + +@Injectable({ + providedIn: "root", +}) +export class OrganizationRedirectGuard implements CanActivate { + constructor(private router: Router, private organizationService: OrganizationService) {} + + async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { + const org = this.organizationService.get(route.params.organizationId); + + const customRedirect = route.data?.autoRedirectCallback; + if (customRedirect) { + let redirectPath = customRedirect(org); + if (typeof redirectPath === "string") { + redirectPath = [redirectPath]; + } + return this.router.createUrlTree([state.url, ...redirectPath]); + } + + if (canAccessOrgAdmin(org)) { + return this.router.createUrlTree(["/organizations", org.id]); + } + return this.router.createUrlTree(["/"]); + } +} diff --git a/apps/web/src/app/organizations/layouts/organization-layout.component.html b/apps/web/src/app/organizations/layouts/organization-layout.component.html index c9088e679a2..632c2466d45 100644 --- a/apps/web/src/app/organizations/layouts/organization-layout.component.html +++ b/apps/web/src/app/organizations/layouts/organization-layout.component.html @@ -14,11 +14,9 @@ {{ "groups" | i18n }} - {{ getReportTabLabel(organization) | i18n }} + + {{ getReportTabLabel(organization) | i18n }} + {{ "billing" | i18n }} diff --git a/apps/web/src/app/organizations/layouts/organization-layout.component.ts b/apps/web/src/app/organizations/layouts/organization-layout.component.ts index b9459f5f702..e09612310f6 100644 --- a/apps/web/src/app/organizations/layouts/organization-layout.component.ts +++ b/apps/web/src/app/organizations/layouts/organization-layout.component.ts @@ -67,8 +67,4 @@ export class OrganizationLayoutComponent implements OnInit, OnDestroy { getReportTabLabel(organization: Organization): string { return organization.useEvents ? "reporting" : "reports"; } - - getReportRoute(organization: Organization): string { - return organization.useEvents ? "reporting/events" : "reporting/reports"; - } } diff --git a/apps/web/src/app/organizations/manage/events.component.ts b/apps/web/src/app/organizations/manage/events.component.ts index abc8b52543d..dd31169914d 100644 --- a/apps/web/src/app/organizations/manage/events.component.ts +++ b/apps/web/src/app/organizations/manage/events.component.ts @@ -11,6 +11,7 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { ProviderService } from "@bitwarden/common/abstractions/provider.service"; +import { EventSystemUser } from "@bitwarden/common/enums/event-system-user"; import { Organization } from "@bitwarden/common/models/domain/organization"; import { EventResponse } from "@bitwarden/common/models/response/event.response"; @@ -114,17 +115,25 @@ export class EventsComponent extends BaseEventsComponent implements OnInit, OnDe } protected getUserName(r: EventResponse, userId: string) { - if (userId == null) { - return null; + if (r.installationId != null) { + return `Installation: ${r.installationId}`; } - if (this.orgUsersUserIdMap.has(userId)) { - return this.orgUsersUserIdMap.get(userId); + if (userId != null) { + if (this.orgUsersUserIdMap.has(userId)) { + return this.orgUsersUserIdMap.get(userId); + } + + if (r.providerId != null && r.providerId === this.organization.providerId) { + return { + name: this.organization.providerName, + }; + } } - if (r.providerId != null && r.providerId === this.organization.providerId) { + if (r.systemUser != null) { return { - name: this.organization.providerName, + name: EventSystemUser[r.systemUser], }; } diff --git a/apps/web/src/app/organizations/manage/people.component.html b/apps/web/src/app/organizations/manage/people.component.html index 07b36668cc5..be5888cc667 100644 --- a/apps/web/src/app/organizations/manage/people.component.html +++ b/apps/web/src/app/organizations/manage/people.component.html @@ -1,7 +1,9 @@
- - + +
diff --git a/apps/web/src/app/vault/vault.component.ts b/apps/web/src/app/vault/vault.component.ts index d1e1ad05418..6b3880f23dc 100644 --- a/apps/web/src/app/vault/vault.component.ts +++ b/apps/web/src/app/vault/vault.component.ts @@ -167,6 +167,10 @@ export class VaultComponent implements OnInit, OnDestroy { ); } + emailVerified(verified: boolean) { + this.showVerifyEmail = !verified; + } + ngOnDestroy() { this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); } diff --git a/apps/web/src/connectors/duo.html b/apps/web/src/connectors/duo.html index b58587baa0e..af766b22d91 100644 --- a/apps/web/src/connectors/duo.html +++ b/apps/web/src/connectors/duo.html @@ -6,6 +6,10 @@ name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width" /> + Bitwarden Duo Connector diff --git a/apps/web/src/connectors/duo.ts b/apps/web/src/connectors/duo.ts index 96b129585ff..b041c0d6a20 100644 --- a/apps/web/src/connectors/duo.ts +++ b/apps/web/src/connectors/duo.ts @@ -23,7 +23,7 @@ document.addEventListener("DOMContentLoaded", () => { DuoWebSDK.init({ iframe: "duo_iframe", - host: hostParam, + host: hostUrl.hostname, sig_request: requestParam, submit_callback: (form: any) => { invokeCSCode(form.elements.sig_response.value); diff --git a/apps/web/src/locales/af/messages.json b/apps/web/src/locales/af/messages.json index 23f4c497619..53b9730871e 100644 --- a/apps/web/src/locales/af/messages.json +++ b/apps/web/src/locales/af/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Teken aan met toestel moet in die instellings van die Bitwarden-toep geaktiveer word. Kort u nog ’n opsie?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Skep rekening" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Aktiveer Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Tweestapaantekening" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Vereis tweestapsaantekening vir die gebruikers van u organisasie deur aanbieders op organisatievlak in te stel." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Setting up two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (example: you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Onbeveiligde webwerwe" }, @@ -2500,7 +2513,7 @@ "message": "Tweestapaantekening gedeaktiveer." }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Het sekerheidskode vir item $ID$ bekyk.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My Organisasie" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Skrap Organisasie" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3133,7 +3158,7 @@ "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." }, "subscriptionUserSeats": { - "message": "Your subscription allows for a total of $COUNT$ users.", + "message": "Your subscription allows for a total of $COUNT$ members.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Organisasie-identifiseerder word benodig." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Unlink SSO" }, @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send gedeaktiveer", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Toestemmings" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Aanbiederadmin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ veld(e) hierbo benodig u aandag.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Aan" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Aantal gebruikers" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/ar/messages.json b/apps/web/src/locales/ar/messages.json index 659152d879f..5cab9e1261c 100644 --- a/apps/web/src/locales/ar/messages.json +++ b/apps/web/src/locales/ar/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "إنشاء حساب" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "تمكين الجرافاتار", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "استخدام صور الأفاتار المحملة من gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Two-step login" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organization's users by configuring providers at the organization level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Setting up two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (example: you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecure websites" }, @@ -2491,7 +2504,7 @@ "message": "Logged in" }, "changedPassword": { - "message": "Account password saved" + "message": "Changed account password" }, "enabledUpdated2fa": { "message": "Two-step login saved" @@ -2500,7 +2513,7 @@ "message": "Two-step login turned off" }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2512,10 +2525,10 @@ "message": "Vault exported" }, "exportedOrganizationVault": { - "message": "Organization vault exported" + "message": "Exported organization vault." }, "editedOrgSettings": { - "message": "Organization settings saved" + "message": "Edited organization settings." }, "createdItemId": { "message": "Created item $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My organization" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organization" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3133,7 +3158,7 @@ "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." }, "subscriptionUserSeats": { - "message": "Your subscription allows for a total of $COUNT$ users.", + "message": "Your subscription allows for a total of $COUNT$ members.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Organization identifier" }, "ssoLogInWithOrgIdentifier": { - "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + "message": "Log in using your organization's single sign-on portal. Please enter your organization's SSO identifier to begin." }, "enterpriseSingleSignOn": { "message": "Enterprise single sign-on" @@ -3688,7 +3713,13 @@ "message": "SSO validation failed" }, "ssoIdentifierRequired": { - "message": "Organization identifier is required." + "message": "Organization SSO identifier is required." + }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." }, "unlinkSso": { "message": "Unlink SSO" @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send removed", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "تم الانسحاب بنجاح!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/az/messages.json b/apps/web/src/locales/az/messages.json index 5a1880fd4fe..79e5b86cccb 100644 --- a/apps/web/src/locales/az/messages.json +++ b/apps/web/src/locales/az/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Cihazla giriş etmə, Bitwarden mobil tətbiqinin tənzimləmələrində fəallaşdırılmalıdır. Başqa bir seçimə ehtiyacınız var?" }, + "loginWithMasterPassword": { + "message": "Ana parolla giriş et" + }, "createAccount": { "message": "Hesab yarat" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Hər girişin yanında tanına bilən təsvir göstər." }, - "enableGravatars": { - "message": "\"Gravatar\"ı fəallaşdırın", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "gravatar.com saytından yüklənilən avatarları istifadə edin." - }, "enableFullWidth": { "message": "Tam en görünüşünü fəallaşdır", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "İki mərhələli giriş" }, + "twoStepLoginEnforcement": { + "message": "İki addımlı girişə məcbur et" + }, "twoStepLoginDesc": { "message": "Giriş edərkən əlavə bir addım tələb edərək hesabınızı qoruyun." }, - "twoStepLoginOrganizationDesc": { - "message": "Provayderləri təşkilat səviyyəsində konfiqurasiya edərək təşkilatınızın istifadəçiləri üçün iki mərhələli girişi məcburi edin." + "twoStepLoginOrganizationDescStart": { + "message": "Bitwarden iki addım giriş seçimlərini aşağıdakıları istifadə edərək üzvlər üçün tətbiq et ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "İki mərhələli giriş siyasəti" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Duo üzərindən iki mərhələli girişi tətbiq etmək üçün aşağıdakı seçimləri istifadə edin." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "SSO quraşdırması etmisinizsə və ya etmək planınız varsa, İki mərhələli giriş, artıq Kimlik Provayderiniz vasitəsilə tətbiq edilmiş ola bilər." }, "twoStepLoginRecoveryWarning": { "message": "İki mərhələli girişi fəallaşdırmaq, Bitwarden hesabınızı birdəfəlik kilidləyə bilər. Bərpa kodları, iki mərhələli giriş provayderinizi istifadə edə bilmədiyiniz hallarda (məs. cihazınızı itirəndə) hesabınıza müraciət etməyinizə icazə verər. Hesabınıza müraciəti itirsəniz, Bitwarden dəstəyi sizə kömək edə bilməyəcək. Bərpa kodunuzu bir yerə yazmağınızı və ya çap etməyinizi və onu etibarlı bir yerdə saxlamağı məsləhət görürük." @@ -1547,6 +1556,10 @@ "message": "Aşağıdakı hesabatlara klikləyərək onlayn hesablarınızdakı güvənlik boşluqlarına baxın və onları bağlayın.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Aşağıdakı hesabatlara klikləyərək təşkilatınızın hesablarındakı güvənlik boşluqlarına baxın və onları bağlayın.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Güvənli olmayan veb saytlar" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "$ID$ elementi üçün baxılan kart nömrəsi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "$ID$ elementi üçün güvənlik koduna baxıldı.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Təşkilatım" }, + "organizationInfo": { + "message": "Təşkilat məlumatı" + }, "deleteOrganization": { "message": "Təşkilatı sil" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Təşkilat identifikatoru tələb olunur." }, + "ssoIdentifier": { + "message": "SSO identifikatoru" + }, + "ssoIdentifierHint": { + "message": "SSO ilə giriş etmələri üçün bu kimliyi üzvlərinizə təqdim edin." + }, "unlinkSso": { "message": "SSO əlaqəsini kəs" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "İcazələr" }, + "permission": { + "message": "İcazə" + }, "managerPermissions": { "message": "Menecer icazələri" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Müştərilər" }, + "client": { + "message": "Müştəri", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provayder admini" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Giriş uzunluğu $COUNT$ simvolu aşmamalıdır.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "Yuxarıdakı $COUNT$ sahənin diqqətinizə ehtiyacı var.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Açıqdır" }, + "members": { + "message": "Üzvlər" + }, + "reporting": { + "message": "Hesabat göndərmə" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "İstifadəçi sayı" }, + "loggingInAs": { + "message": "Giriş et" + }, + "notYou": { + "message": "Siz deyilsiniz?" + }, "multiSelectPlaceholder": { "message": "-- Filtrləmək üçün yazın --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Hamısını təmizlə" + }, + "from": { + "message": "Kimdən" + }, + "to": { + "message": "Kimə" + }, + "member": { + "message": "Üzv" + }, + "update": { + "message": "Güncəllə" + }, + "role": { + "message": "Rol" + }, + "canView": { + "message": "Baxa bilər" + }, + "canViewExceptPass": { + "message": "Parollar istisna olmaqla baxa bilər" + }, + "canEdit": { + "message": "Düzəliş edə bilər" + }, + "canEditExceptPass": { + "message": "Parollar istisna olmaqla düzəliş edə bilər" + }, + "group": { + "message": "Qrup" + }, + "groupAccessAll": { + "message": "Bu qrup, bütün elementlərə müraciət edə və onları dəyişdirə bilər." + }, + "memberAccessAll": { + "message": "Bu üzv, bütün elementlərə müraciət edə və onları dəyişdirə bilər." } } diff --git a/apps/web/src/locales/be/messages.json b/apps/web/src/locales/be/messages.json index 9fbe5ef78b9..32c2140430c 100644 --- a/apps/web/src/locales/be/messages.json +++ b/apps/web/src/locales/be/messages.json @@ -464,7 +464,7 @@ "message": "Далучэнне выдалена" }, "deleteAttachmentConfirmation": { - "message": "Вы ўпэўнены, што хочаце выдаліць гэта далучэнне?" + "message": "Вы сапраўды хочаце выдаліць гэта далучэнне?" }, "attachmentSaved": { "message": "Далучэнне захавана." @@ -519,7 +519,7 @@ "message": "Выдаліць далучэнне" }, "deleteItemConfirmation": { - "message": "Вы ўпэўнены, што хочаце адправіць гэты элемент у сметніцу?" + "message": "Вы сапраўды хочаце адправіць гэты элемент у сметніцу?" }, "deletedItem": { "message": "Элемент адпраўлены ў сметніцу" @@ -531,7 +531,7 @@ "message": "Перамешчаныя элементы" }, "overwritePasswordConfirmation": { - "message": "Вы ўпэўнены, што хочаце перазапісаць бягучы пароль?" + "message": "Вы сапраўды хочаце перазапісаць бягучы пароль?" }, "editedFolder": { "message": "Папка адрэдагавана" @@ -540,7 +540,7 @@ "message": "Папка дададзена" }, "deleteFolderConfirmation": { - "message": "Вы ўпэўнены, што хочаце выдаліць гэту папку?" + "message": "Вы сапраўды хочаце выдаліць гэту папку?" }, "deletedFolder": { "message": "Папка выдалена" @@ -552,7 +552,7 @@ "message": "Тэрмін дзеяння вашага сеансу завяршыўся." }, "logOutConfirmation": { - "message": "Вы ўпэўнены, што хочаце выйсці?" + "message": "Вы сапраўды хочаце выйсці?" }, "logOut": { "message": "Выйсці" @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Неабходна ўключыць уваход з прыладай у наладах мабільнай праграмы Bitwarden. Неабходны іншы варыянт?" }, + "loginWithMasterPassword": { + "message": "Увайсці з асноўным паролем" + }, "createAccount": { "message": "Стварыць уліковы запіс" }, @@ -844,7 +847,7 @@ "message": "Рэдагуйце калекцыі, з якімі гэты элемент знаходзіцца ў агульным доступе. Толькі карыстальнікі арганізацыі з доступам да гэтых калекцый змогуць бачыць гэты элемент." }, "deleteSelectedItemsDesc": { - "message": "Вы выбралі наступную колькасць элементаў для выдалення: $COUNT$ шт. Вы ўпэўнены, што хочаце выдаліць іх?", + "message": "Вы выбралі наступную колькасць элементаў для выдалення: $COUNT$ шт. Вы сапраўды хочаце выдаліць іх?", "placeholders": { "count": { "content": "$1", @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Паказваць распазнавальны відарыс побач з кожным лагінам." }, - "enableGravatars": { - "message": "Паказваць Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Выкарыстоўваць аватары з сайта gravatar.com." - }, "enableFullWidth": { "message": "Адлюстроўваць на ўсю шырыню макета", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Двухэтапны ўваход" }, + "twoStepLoginEnforcement": { + "message": "Прымусовы двухэтапны ўваход" + }, "twoStepLoginDesc": { "message": "Абараніце свой уліковы запіс з дапамогай дадатковага кроку праверкі падчас уваходу." }, - "twoStepLoginOrganizationDesc": { - "message": "Патрабаваць двухэтапны ўваход для карыстальнікаў вашай арганізацыі, які сканфігураваны на ўзроўні арганізацыі." + "twoStepLoginOrganizationDescStart": { + "message": "Забяспечыць параметры двухэтапнага ўваходу Bitwarden для ўдзельнікаў выкарыстоўваючы ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "палітыку двухэтапнага ўваходу" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Для прымусовага двухэтапнага ўваходу праз Duo, скарыстайцеся параметрам ніжэй." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Калі вы наладзілі SSO або плануеце гэта зрабіць, то двухэтапны ўваход можа быць рэалізаваны праз вашага пастаўшчыка ідэнтыфікацыйных даных." }, "twoStepLoginRecoveryWarning": { "message": "Уключэнне двухэтапнага ўваходу можа цалкам заблакіраваць доступ да ўліковага запісу Bitwarden. Код аднаўлення дае магчымасць атрымаць доступ да вашага ўліковага запісу ў выпадку, калі вы не можаце скарыстацца звычайным спосабам пастаўшчыка двухэтапнага ўваходу (напрыклад, вы згубілі сваю прыладу). Падтрымка Bitwarden не зможа вам дапамагчы, калі вы згубіце доступ да свайго ўліковага запісу. Мы рэкамендуем вам запісаць або раздрукаваць код аднаўлення і захоўваць яго ў надзейным месцы." @@ -1387,7 +1396,7 @@ "message": "У выпадку, калі вам неабходна дадаць іншую прыладу, ніжэй пазначаны QR-код (або ключы), якія патрабуюцца праграме аўтэнтыфікацыі." }, "twoStepDisableDesc": { - "message": "Вы ўпэўнены, што хочаце адключыць гэтага пастаўшчыка двухэтапнага ўваходу?" + "message": "Вы сапраўды хочаце адключыць гэтага пастаўшчыка двухэтапнага ўваходу?" }, "twoStepDisabled": { "message": "Пастаўшчык двухэтапнага ўваходу адключаны." @@ -1486,7 +1495,7 @@ "message": "Дадаць ключ бяспекі FIDO U2F у ваш уліковы запіс" }, "removeU2fConfirmation": { - "message": "Вы ўпэўнены, што хочаце выдаліць гэты ключ бяспекі?" + "message": "Вы сапраўды хочаце выдаліць гэты ключ бяспекі?" }, "twoFactorWebAuthnAdd": { "message": "Дадаць ключ бяспекі WebAuthn у ваш уліковы запіс" @@ -1547,6 +1556,10 @@ "message": "Выявіце і выпраўце недахопы ў бяспецы вашых уліковых запісаў, націснуўшы на справаздачы ніжэй.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Выявіце і выпраўце недахопы ў бяспецы ўліковых запісаў вашай арганізацыі, націснуўшы на справаздачы ніжэй.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Неабароненыя вэб-сайты" }, @@ -1916,13 +1929,13 @@ "message": "Аднавіць падпіску" }, "reinstateConfirmation": { - "message": "Вы ўпэўнены, што хочаце выдаліць запыт, які чакае скасавання і аднавіць сваю падпіску?" + "message": "Вы сапраўды хочаце выдаліць запыт, які чакае скасавання і аднавіць сваю падпіску?" }, "reinstated": { "message": "Падпіска была адноўлена." }, "cancelConfirmation": { - "message": "Вы ўпэўнены, што хочаце скасаваць? Вы страціце доступ да ўсіх функцый падпіскі ў канцы гэтага плацежнага перыяду." + "message": "Вы сапраўды хочаце скасаваць? Вы страціце доступ да ўсіх функцый падпіскі ў канцы гэтага плацежнага перыяду." }, "canceledSubscription": { "message": "Падпіска была скасавана." @@ -2296,7 +2309,7 @@ "message": "Выйсці" }, "leaveOrganizationConfirmation": { - "message": "Вы ўпэўнены, што хочаце выйсці з гэтай арганізацыі?" + "message": "Вы сапраўды хочаце выйсці з гэтай арганізацыі?" }, "leftOrganization": { "message": "Вы выйшлі з арганізацыі." @@ -2341,10 +2354,10 @@ "message": "Рэдагаваць групу" }, "deleteGroupConfirmation": { - "message": "Вы ўпэўнены, што хочаце выдаліць гэту групу?" + "message": "Вы сапраўды хочаце выдаліць гэту групу?" }, "removeUserConfirmation": { - "message": "Вы ўпэўнены, што хочаце выдаліць гэтага карыстальніка?" + "message": "Вы сапраўды хочаце выдаліць гэтага карыстальніка?" }, "removeOrgUserConfirmation": { "message": "Пры выдаленні ўдзельніка, ён больш не зможа атрымаць доступ да даных арганізацыі і гэта дзеянне з'яўляецца незваротным. Для таго, каб зноў дадаць удзельніка ў арганізацыю, яго неабходна будзе запрасіць паўторна." @@ -2383,7 +2396,7 @@ "message": "Рэдагаваць калекцыю" }, "deleteCollectionConfirmation": { - "message": "Вы ўпэўнены, што хочаце выдаліць гэту калекцыю?" + "message": "Вы сапраўды хочаце выдаліць гэту калекцыю?" }, "editUser": { "message": "Рэдагаваць карыстальніка" @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Прагледжаны нумар карткі для элемента $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Прагледжаны код бяспекі для элемента $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Мая арганізацыя" }, + "organizationInfo": { + "message": "Звесткі арганізацыі" + }, "deleteOrganization": { "message": "Выдаліць арганізацыю" }, @@ -3368,7 +3393,7 @@ "message": "Ненадзейны асноўны пароль" }, "weakMasterPasswordDesc": { - "message": "Асноўны пароль, які вы выбралі з'яўляецца ненадзейным. Для належнай абароны ўліковага запісу Bitwarden, вы павінны выкарыстоўваць надзейны асноўны пароль (або парольную фразу). Вы ўпэўнены, што хочаце выкарыстоўваць гэты асноўны пароль?" + "message": "Асноўны пароль, які вы выбралі з'яўляецца ненадзейным. Для належнай абароны ўліковага запісу Bitwarden, вы павінны выкарыстоўваць надзейны асноўны пароль (або парольную фразу). Вы сапраўды хочаце выкарыстоўваць гэты асноўны пароль?" }, "rotateAccountEncKey": { "message": "Таксама змяніць ключ шыфравання майго ўліковага запісу" @@ -3377,7 +3402,7 @@ "message": "Змяніць ключ шыфравання" }, "rotateEncKeyConfirmation": { - "message": "Вы ўпэўнены, што хочаце змяніць ключ шыфравання свайго ўліковага запісу?" + "message": "Вы сапраўды хочаце змяніць ключ шыфравання свайго ўліковага запісу?" }, "attachmentsNeedFix": { "message": "Гэты элемент мае старыя далучаныя файлы, якія неабходна выправіць." @@ -3568,7 +3593,7 @@ "message": "Назаўсёды выдаліць элементы" }, "permanentlyDeleteItemConfirmation": { - "message": "Вы ўпэўнены, што хочаце назаўсёды выдаліць гэты элемент?" + "message": "Вы сапраўды хочаце назаўсёды выдаліць гэты элемент?" }, "permanentlyDeletedItem": { "message": "Элемент выдалены назаўсёды" @@ -3577,7 +3602,7 @@ "message": "Элементы выдалены назаўсёды" }, "permanentlyDeleteSelectedItemsDesc": { - "message": "Вы выбралі наступную колькасць элементаў для выдалення: $COUNT$ шт. Вы ўпэўнены, што хочаце назаўсёды выдаліць іх?", + "message": "Вы выбралі наступную колькасць элементаў для выдалення: $COUNT$ шт. Вы сапраўды хочаце назаўсёды выдаліць іх?", "placeholders": { "count": { "content": "$1", @@ -3610,13 +3635,13 @@ "message": "Адноўленыя элементы" }, "restoreItemConfirmation": { - "message": "Вы ўпэўнены, што хочаце аднавіць гэты элемент?" + "message": "Вы сапраўды хочаце аднавіць гэты элемент?" }, "restoreItems": { "message": "Аднавіць элементы" }, "restoreSelectedItemsDesc": { - "message": "Вы выбралі наступную колькасць элементаў для аднаўлення: $COUNT$. Вы ўпэўнены, што хочаце аднавіць іх?", + "message": "Вы выбралі наступную колькасць элементаў для аднаўлення: $COUNT$. Вы сапраўды хочаце аднавіць іх?", "placeholders": { "count": { "content": "$1", @@ -3634,7 +3659,7 @@ } }, "vaultTimeoutLogOutConfirmation": { - "message": "Выхад з сістэмы скасуе ўсе магчымасці доступу да сховішча і запатрабуе аўтэнтыфікацыю праз інтэрнэт пасля завяршэння часу чакання. Вы ўпэўнены, што хочаце выкарыстоўваць гэты параметр?" + "message": "Выхад з сістэмы скасуе ўсе магчымасці доступу да сховішча і запатрабуе аўтэнтыфікацыю праз інтэрнэт пасля завяршэння часу чакання. Вы сапраўды хочаце выкарыстоўваць гэты параметр?" }, "vaultTimeoutLogOutConfirmationTitle": { "message": "Пацвярджэнне дзеяння часу чакання" @@ -3690,11 +3715,17 @@ "ssoIdentifierRequired": { "message": "Неабходны ідэнтыфікатар арганізацыі." }, + "ssoIdentifier": { + "message": "Ідэнтыфікатар SSO" + }, + "ssoIdentifierHint": { + "message": "Забяспечце гэтым ідэнтыфікатарам вашых удзельніка для ўваходу з SSO." + }, "unlinkSso": { "message": "Адлучыць SSO" }, "unlinkSsoConfirmation": { - "message": "Вы ўпэўнены, што хочаце адлучыць SSO для гэтай арганізацыі?" + "message": "Вы сапраўды хочаце адлучыць SSO для гэтай арганізацыі?" }, "linkSso": { "message": "Звязаць з SSO" @@ -3760,7 +3791,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deleteSendConfirmation": { - "message": "Вы ўпэўнены, што хочаце выдаліць гэты Send?", + "message": "Вы сапраўды хочаце выдаліць гэты Send?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "whatTypeOfSend": { @@ -3820,7 +3851,7 @@ "message": "Пароль выдалены" }, "removePasswordConfirmation": { - "message": "Вы ўпэўнены, што хочаце выдаліць пароль?" + "message": "Вы сапраўды хочаце выдаліць пароль?" }, "hideEmail": { "message": "Схаваць мой адрас электроннай пошты ад атрымальнікаў." @@ -3964,7 +3995,7 @@ "message": "Запытаць доступ" }, "requestAccessConfirmation": { - "message": "Вы ўпэўнены, што хочаце запытаць экстранны доступ? Вам будзе забяспечаны доступ (меркаваная колькасць дзён: $WAITTIME$) або калі карыстальнік уручную ўхваліць запыт.", + "message": "Вы сапраўды хочаце запытаць экстранны доступ? Вам будзе забяспечаны доступ (меркаваная колькасць дзён: $WAITTIME$) або калі карыстальнік уручную ўхваліць запыт.", "placeholders": { "waittime": { "content": "$1", @@ -3988,7 +4019,7 @@ "message": "Адхіліць" }, "approveAccessConfirmation": { - "message": "Вы ўпэўнены, што хочаце ўхваліць экстранны доступ? Гэта дазволіць карыстальніку $USER$ $ACTION$ ваш уліковы запіс.", + "message": "Вы сапраўды хочаце ўхваліць экстранны доступ? Гэта дазволіць карыстальніку $USER$ $ACTION$ ваш уліковы запіс.", "placeholders": { "user": { "content": "$1", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Дазволы" }, + "permission": { + "message": "Дазвол" + }, "managerPermissions": { "message": "Дазволы менеджара" }, @@ -4413,7 +4447,7 @@ "message": "Гэта дзеянне нельга ўжыць для ніводнага з выбраных карыстальнікаў." }, "removeUsersWarning": { - "message": "Вы ўпэўнены, што хочаце выдаліць наступных карыстальнікаў? Для завяршэння працэсу можа спатрэбіцца некалькі секунд і гэта дзеянне нельга перарваць або скасаваць." + "message": "Вы сапраўды хочаце выдаліць наступных карыстальнікаў? Для завяршэння працэсу можа спатрэбіцца некалькі секунд і гэта дзеянне нельга перарваць або скасаваць." }, "removeOrgUsersConfirmation": { "message": "Пасля выдалення ўдзельніка(-ў) ён згубіць доступ да даных арганізацыі і гэта дзеянне з'яўляецца незваротным. Для паўторнага дабаўлення ўдзельніка ў арганізацыю, яго неабходна будзе зноў запрасіць туды. Працэс можа заняць некалькі секунд і яго немагчыма перарваць або скасаваць." @@ -4496,6 +4530,10 @@ "clients": { "message": "Кліенты" }, + "client": { + "message": "Кліент", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Адміністратар пастаўшчыка" }, @@ -4542,7 +4580,7 @@ "message": "Мой пастаўшчык" }, "addOrganizationConfirmation": { - "message": "Вы ўпэўнены, што хочаце дадаць арганізацыю $ORGANIZATION$ у якасці кліента да пастаўшчыка $PROVIDER$?", + "message": "Вы сапраўды хочаце дадаць арганізацыю $ORGANIZATION$ у якасці кліента да пастаўшчыка $PROVIDER$?", "placeholders": { "organization": { "content": "$1", @@ -4591,7 +4629,7 @@ } }, "detachOrganizationConfirmation": { - "message": "Вы ўпэўнены, што хочаце адлучыць гэту арганізацыю? Арганізацыя працягне сваё існаванне, але больш не будзе кіравацца пастаўшчыком." + "message": "Вы сапраўды хочаце адлучыць гэту арганізацыю? Арганізацыя працягне сваё існаванне, але больш не будзе кіравацца пастаўшчыком." }, "add": { "message": "Дадаць" @@ -4877,7 +4915,7 @@ "message": "Выдаліць спансіраванне" }, "removeSponsorshipConfirmation": { - "message": "Пасля выдалення спонсарства, вы будзеце адказваць за гэту падпіску і звязаныя рахункі. Вы ўпэўнены, што хочаце працягнуць?" + "message": "Пасля выдалення спонсарства, вы будзеце адказваць за гэту падпіску і звязаныя рахункі. Вы сапраўды хочаце працягнуць?" }, "sponsorshipCreated": { "message": "Спансіраванне створана" @@ -4886,7 +4924,7 @@ "message": "Ліст адпраўлены" }, "revokeSponsorshipConfirmation": { - "message": "Пасля выдалення гэтага ўліковага запісу, спонсарства тарыфнага плана Bitwarden Families завяршыцца ў канцы плацежнага перыяду. У вас не будзе магчымасці скарыстацца новай спонсарскай прапановай, пакуль не завяршыцца тэрмін бягучай прапановы. Вы ўпэўнены, што хочаце працягнуць?" + "message": "Пасля выдалення гэтага ўліковага запісу, спонсарства тарыфнага плана Bitwarden Families завяршыцца ў канцы плацежнага перыяду. У вас не будзе магчымасці скарыстацца новай спонсарскай прапановай, пакуль не завяршыцца тэрмін бягучай прапановы. Вы сапраўды хочаце працягнуць?" }, "removeSponsorshipSuccess": { "message": "Спансіраванне выдалена" @@ -5300,7 +5338,7 @@ "message": "Праверка прылады абноўлена" }, "areYouSureYouWantToEnableDeviceVerificationTheVerificationCodeEmailsWillArriveAtX": { - "message": "Вы ўпэўнены, што хочаце ўключыць праверку прылады? Ліст з праверачным кодам будзе адпраўлены на: $EMAIL$", + "message": "Вы сапраўды хочаце ўключыць праверку прылады? Ліст з праверачным кодам будзе адпраўлены на: $EMAIL$", "placeholders": { "email": { "content": "$1", @@ -5339,7 +5377,7 @@ "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKeyWarning": { - "message": "Вы ўпэўнены, што хочаце змяніць ключ API для SCIM? Бягучы ключ не будзе больш працаваць для любых бягучых інтэграцый.", + "message": "Вы сапраўды хочаце змяніць ключ API для SCIM? Бягучы ключ не будзе больш працаваць для любых бягучых інтэграцый.", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateKey": { @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Даўжыня ўведзеных даных не можа перавышаць наступную колькасць сімвалаў: $COUNT$", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ полі(-ёў) вышэй патрабуе вашай увагі.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Уключана" }, + "members": { + "message": "Удзельнікі" + }, + "reporting": { + "message": "Справаздачы" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Колькасць карыстальнікаў" }, + "loggingInAs": { + "message": "Увайсці як" + }, + "notYou": { + "message": "Не вы?" + }, "multiSelectPlaceholder": { "message": "- Увядзіце для фільтрацыі -" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Ачысціць усё" + }, + "from": { + "message": "Ад" + }, + "to": { + "message": "Каму" + }, + "member": { + "message": "Удзельнік" + }, + "update": { + "message": "Абнавіць" + }, + "role": { + "message": "Роля" + }, + "canView": { + "message": "Можа праглядаць" + }, + "canViewExceptPass": { + "message": "Можа праглядаць (без пароляў)" + }, + "canEdit": { + "message": "Можа рэдагаваць" + }, + "canEditExceptPass": { + "message": "Можа рэдагаваць (без пароляў)" + }, + "group": { + "message": "Група" + }, + "groupAccessAll": { + "message": "Гэта група можа мець доступ і змяняць усе элементы." + }, + "memberAccessAll": { + "message": "Гэты ўдзельнік можа атрымліваць доступ і змяняць усе элементы." } } diff --git a/apps/web/src/locales/bg/messages.json b/apps/web/src/locales/bg/messages.json index c45ce7a04fe..308c87584c3 100644 --- a/apps/web/src/locales/bg/messages.json +++ b/apps/web/src/locales/bg/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Вписването с устройство трябва да е включено в настройките на мобилното приложение на Битуорден. Друга настройка ли търсите?" }, + "loginWithMasterPassword": { + "message": "Вписване с главната парола" + }, "createAccount": { "message": "Създаване на абонамент" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Показване на разпознаваемо изображение до всеки запис." }, - "enableGravatars": { - "message": "Включване на граватари", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Използване на иконки за потребители от сайта „gravatar.com“." - }, "enableFullWidth": { "message": "Извеждане на цяла широчина", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Двустепенно удостоверяване" }, + "twoStepLoginEnforcement": { + "message": "Задължително двустепенно удостоверяване" + }, "twoStepLoginDesc": { "message": "Допълнителна защита на абонамента чрез изискването на допълнително действие при вписване." }, - "twoStepLoginOrganizationDesc": { - "message": "Може да изискате двустепенна идентификация за всички потребители в организацията ви, като настроите доставчиците на ниво организация." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "За да направите двустепенното удостоверяване чрез Duo задължително, използвайте настройките по-долу." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Ако сте настроили еднократната идентификация, двустепенното удостоверяване може вече да е зададено като задължително от Вашия доставчик на удостоверителни данни." }, "twoStepLoginRecoveryWarning": { "message": "Включването на двустепенна идентификация може завинаги да предотврати вписването ви в абонамента към Битуорден. Кодът за възстановяване ще ви позволи да достъпите абонамента дори и да имате проблем с доставчика на двустепенна идентификация (напр. ако изгубите устройството си). Дори и екипът по поддръжката към няма да ви помогне в такъв случай. Силно препоръчваме да отпечатате или запишете кодовете и да ги пазете на надеждно място." @@ -1547,6 +1556,10 @@ "message": "Открийте и отстранете проблемите със защитата на профилите си като щракнете върху докладите по-долу.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Открийте и отстранете проблемите със защитата на профилите в организацията си като щракнете върху докладите по-долу.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Доклад за сайтове без защита" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Номерът на карта от запис $ID$ е прегледан.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Кодът за сигурност за запис № $ID$ е прегледан.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Моята организация" }, + "organizationInfo": { + "message": "Информация за организацията" + }, "deleteOrganization": { "message": "Изтриване на организация" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Идентификаторът на организация е задължителен." }, + "ssoIdentifier": { + "message": "Идентификатор за еднократна идентификация" + }, + "ssoIdentifierHint": { + "message": "Дайте този идентификатор на членовете си, за да могат да се вписват чрез еднократна идентификация." + }, "unlinkSso": { "message": "Прекъсване на еднократна идентификация" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Права" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Права на управителя" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Клиенти" }, + "client": { + "message": "Клиент", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Администратор на доставчика" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Полето не може да съдържа повече от $COUNT$ знака.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ поле(та) по-горе се нуждае/ят от вниманието Ви.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Включено" }, + "members": { + "message": "Членове" + }, + "reporting": { + "message": "Докладване" + }, "cardBrandMir": { "message": "Мир" }, "numberOfUsers": { "message": "Брой потребители" }, + "loggingInAs": { + "message": "Вписване като" + }, + "notYou": { + "message": "Това не сте Вие?" + }, "multiSelectPlaceholder": { "message": "-- Пишете тук за филтриране --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Изчистване на всичко" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Член" + }, + "update": { + "message": "Обновяване" + }, + "role": { + "message": "Роля" + }, + "canView": { + "message": "Може да преглежда" + }, + "canViewExceptPass": { + "message": "Може да преглежда, без пароли" + }, + "canEdit": { + "message": "Може да редактира" + }, + "canEditExceptPass": { + "message": "Може да редактира, без пароли" + }, + "group": { + "message": "Група" + }, + "groupAccessAll": { + "message": "Тази група има достъп до всички записи и може да ги редактира." + }, + "memberAccessAll": { + "message": "Този член има достъп до всички записи и може да ги редактира." } } diff --git a/apps/web/src/locales/bn/messages.json b/apps/web/src/locales/bn/messages.json index 9161cbc3440..09c39d19da8 100644 --- a/apps/web/src/locales/bn/messages.json +++ b/apps/web/src/locales/bn/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "অ্যাকাউন্ট তৈরি" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Show Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "দ্বি-পদক্ষেপের লগইন" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organization's users by configuring providers at the organization level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Setting up two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (example: you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecure websites" }, @@ -2491,7 +2504,7 @@ "message": "Logged in" }, "changedPassword": { - "message": "Account password saved" + "message": "Changed account password" }, "enabledUpdated2fa": { "message": "Two-step login saved" @@ -2500,7 +2513,7 @@ "message": "Two-step login turned off" }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2512,10 +2525,10 @@ "message": "Vault exported" }, "exportedOrganizationVault": { - "message": "Organization vault exported" + "message": "Exported organization vault." }, "editedOrgSettings": { - "message": "Organization settings saved" + "message": "Edited organization settings." }, "createdItemId": { "message": "Created item $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "আমার সংগঠন" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organization" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3133,7 +3158,7 @@ "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." }, "subscriptionUserSeats": { - "message": "Your subscription allows for a total of $COUNT$ users.", + "message": "Your subscription allows for a total of $COUNT$ members.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Organization identifier" }, "ssoLogInWithOrgIdentifier": { - "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + "message": "Log in using your organization's single sign-on portal. Please enter your organization's SSO identifier to begin." }, "enterpriseSingleSignOn": { "message": "Enterprise single sign-on" @@ -3688,7 +3713,13 @@ "message": "SSO validation failed" }, "ssoIdentifierRequired": { - "message": "Organization identifier is required." + "message": "Organization SSO identifier is required." + }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." }, "unlinkSso": { "message": "Unlink SSO" @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send removed", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/bs/messages.json b/apps/web/src/locales/bs/messages.json index a2a01b188dc..968990ebf34 100644 --- a/apps/web/src/locales/bs/messages.json +++ b/apps/web/src/locales/bs/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Create account" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Show Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Two-step login" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organization's users by configuring providers at the organization level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Setting up two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (example: you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecure websites" }, @@ -2491,7 +2504,7 @@ "message": "Logged in" }, "changedPassword": { - "message": "Account password saved" + "message": "Changed account password" }, "enabledUpdated2fa": { "message": "Two-step login saved" @@ -2500,7 +2513,7 @@ "message": "Two-step login turned off" }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2512,10 +2525,10 @@ "message": "Vault exported" }, "exportedOrganizationVault": { - "message": "Organization vault exported" + "message": "Exported organization vault." }, "editedOrgSettings": { - "message": "Organization settings saved" + "message": "Edited organization settings." }, "createdItemId": { "message": "Created item $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My organization" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organization" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3133,7 +3158,7 @@ "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." }, "subscriptionUserSeats": { - "message": "Your subscription allows for a total of $COUNT$ users.", + "message": "Your subscription allows for a total of $COUNT$ members.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Organization identifier" }, "ssoLogInWithOrgIdentifier": { - "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + "message": "Log in using your organization's single sign-on portal. Please enter your organization's SSO identifier to begin." }, "enterpriseSingleSignOn": { "message": "Enterprise single sign-on" @@ -3688,7 +3713,13 @@ "message": "SSO validation failed" }, "ssoIdentifierRequired": { - "message": "Organization identifier is required." + "message": "Organization SSO identifier is required." + }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." }, "unlinkSso": { "message": "Unlink SSO" @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send removed", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Broj korisnika" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/ca/messages.json b/apps/web/src/locales/ca/messages.json index 4d32b956dc4..e3e6c3f8f85 100644 --- a/apps/web/src/locales/ca/messages.json +++ b/apps/web/src/locales/ca/messages.json @@ -534,7 +534,7 @@ "message": "Esteu segur que voleu sobreescriure la contrasenya actual?" }, "editedFolder": { - "message": "Carpeta editada" + "message": "Carpeta guardada" }, "addedFolder": { "message": "Carpeta afegida" @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "L'inici de sessió amb el dispositiu ha d'estar activat a la configuració de l'aplicació mòbil Bitwarden. Necessiteu una altra opció?" }, + "loginWithMasterPassword": { + "message": "Inicia sessió amb la contrasenya mestra" + }, "createAccount": { "message": "Crea un compte" }, @@ -769,13 +772,13 @@ "message": "Inici de sessió no disponible" }, "noTwoStepProviders": { - "message": "Aquest compte té habilitat l'inici de sessió en dues passes, però aquest navegador web no admet cap dels dos proveïdors configurats." + "message": "Aquest compte té habilitat l'inici de sessió en dos passos, però aquest navegador web no admet cap dels dos proveïdors configurats." }, "noTwoStepProviders2": { "message": "Utilitzeu un navegador web compatible (com ara Chrome) o afegiu proveïdors addicionals que siguen compatibles amb tots els navegadors web (com una aplicació d'autenticació)." }, "twoStepOptions": { - "message": "Opcions d'inici de sessió en dues passes" + "message": "Opcions d'inici de sessió en dos passos" }, "recoveryCodeDesc": { "message": "Heu perdut l'accés a tots els vostres proveïdors de dos factors? Utilitzeu el vostre codi de recuperació per desactivar tots els proveïdors de dos factors del vostre compte." @@ -1013,7 +1016,7 @@ "description": "To clear something out. Example: To clear browser history." }, "accountUpdated": { - "message": "Compte actualitzat" + "message": "Compte guardat" }, "changeEmail": { "message": "Canvia el correu electrònic" @@ -1040,7 +1043,7 @@ "message": "Si es procedeix, es tancarà la vostra sessió actual i l'haureu de tornar a iniciar. Les sessions d'altres dispositius poden mantenir-se actives fins a una hora." }, "emailChanged": { - "message": "El correu electrònic s'ha canviat" + "message": "El correu electrònic s'ha guardat" }, "logBackIn": { "message": "Torneu a iniciar sessió." @@ -1145,7 +1148,7 @@ "message": "La supressió del compte és permanent. No es pot desfer." }, "accountDeleted": { - "message": "S'ha eliminat el compte" + "message": "S'ha suprimit el compte" }, "accountDeletedDesc": { "message": "El vostre compte s'ha tancat i s'han eliminat totes les dades associades." @@ -1166,7 +1169,7 @@ "message": "Hi ha hagut un problema amb les dades que heu intentat importar. Resoleu els errors que es mostren a continuació al fitxer font i torneu-ho a provar." }, "importSuccess": { - "message": "Les dades s'han importat amb èxit a la vostra caixa forta." + "message": "Les dades s'han importat amb èxit" }, "importWarning": { "message": "Esteu important dades a $ORGANIZATION$. Les vostres dades es poden compartir amb membres d'aquesta organització. Voleu continuar?", @@ -1193,10 +1196,10 @@ "message": "Seleccioneu el fitxer d'importació" }, "chooseFile": { - "message": "Choose File" + "message": "Trieu fitxer" }, "noFileChosen": { - "message": "No file chosen" + "message": "No s'ha triat cap fitxer" }, "orCopyPasteFileContents": { "message": "o copieu/enganxeu el contingut dels fitxers d'importació" @@ -1221,7 +1224,7 @@ "message": "Personalitzeu la vostra experiència de caixa forta web." }, "preferencesUpdated": { - "message": "Preferències actualitzades" + "message": "Preferències guardades" }, "language": { "message": "Idioma" @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Mostra una imatge reconeixible al costat de cada inici de sessió." }, - "enableGravatars": { - "message": "Habilita Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Utilitzeu imatges d'avatar carregades de gravatar.com." - }, "enableFullWidth": { "message": "Habilita la disposició de l'amplada completa", "description": "Allows scaling the web vault UI's width" @@ -1289,16 +1285,29 @@ } }, "domainsUpdated": { - "message": "Dominis actualitzats" + "message": "Dominis guardats" }, "twoStepLogin": { "message": "Inici de sessió en dues passes" }, + "twoStepLoginEnforcement": { + "message": "Aplicació d'inici de sessió en dos passos" + }, "twoStepLoginDesc": { "message": "Protegiu el vostre compte exigint un pas addicional en iniciar sessió." }, - "twoStepLoginOrganizationDesc": { - "message": "Demana un inici de sessió en dues passes per als usuaris de la vostra organització mitjançant la configuració de proveïdors a nivell de l'organització." + "twoStepLoginOrganizationDescStart": { + "message": "Apliqueu les opcions d'inici de sessió en dos passos de Bitwarden per als membres mitjançant la ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Política d'inici de sessió en dos passos" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Per aplicar l'inici de sessió en dos passos mitjançant Duo, utilitzeu les opcions següents." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Si heu configurat l'SSO o teniu previst fer-ho, és possible que l'inici de sessió en dos passos ja s'aplique a través del vostre proveïdor d'identitat." }, "twoStepLoginRecoveryWarning": { "message": "Si habiliteu l'inici de sessió en dues passes, pot bloquejar-vos de manera definitiva el compte de Bitwarden. Un codi de recuperació us permet accedir al vostre compte en cas que no pugueu utilitzar el proveïdor d'inici de sessió en dues passes (p. Ex. Perdre el dispositiu). El suport de Bitwarden no podrà ajudar-vos si perdeu l'accés al vostre compte. Us recomanem que escriviu o imprimiu el codi de recuperació i el mantingueu en un lloc segur." @@ -1348,7 +1357,7 @@ "message": "Revoca l'accés" }, "twoStepLoginProviderEnabled": { - "message": "Aquest proveïdor d'inici de sessió en dues passes està habilitat al vostre compte." + "message": "Aquest proveïdor d'inici de sessió en dos passos està habilitat al vostre compte." }, "twoStepLoginAuthDesc": { "message": "Introduïu la vostra contrasenya mestra per modificar la configuració d'inici de sessió en dues passes." @@ -1387,10 +1396,10 @@ "message": "En cas que hàgeu d'afegir-lo a un altre dispositiu, a continuació teniu el codi QR (o clau) requerit per l'aplicació autenticadora." }, "twoStepDisableDesc": { - "message": "Esteu segur que voleu inhabilitar aquest proveïdor d'inici de sessió en dues passes?" + "message": "Esteu segur que voleu inhabilitar aquest proveïdor d'inici de sessió en dos passos?" }, "twoStepDisabled": { - "message": "El proveïdor d'inici de sessió en dues passes està inhabilitat." + "message": "El proveïdor d'inici de sessió en dos passos està inhabilitat." }, "twoFactorYubikeyAdd": { "message": "Afegiu una nova YubiKey al vostre compte" @@ -1408,7 +1417,7 @@ "message": "Guardeu el formulari." }, "twoFactorYubikeyWarning": { - "message": "A causa de les limitacions de la plataforma, les YubiKeys no es poden utilitzar en totes les aplicacions de Bitwarden. Heu d'habilitar un altre proveïdor d'inici de sessió en dues passes per accedir al compte quan no es puguen utilitzar les YubiKeys. Plataformes compatibles:" + "message": "A causa de les limitacions de la plataforma, les YubiKeys no es poden utilitzar en totes les aplicacions de Bitwarden. Heu d'habilitar un altre proveïdor d'inici de sessió en dos passos per accedir al compte quan no es puguen utilitzar les YubiKeys. Plataformes compatibles:" }, "twoFactorYubikeySupportUsb": { "message": "Caixa forta web, aplicació d'escriptori, CLI i totes les extensions de navegador en un dispositiu amb un port USB que puga acceptar la vostra YubiKey." @@ -1492,7 +1501,7 @@ "message": "Afegiu una clau de seguretat de WebAuthn al vostre compte" }, "readKey": { - "message": "Llegeix la clau" + "message": "Llig la clau" }, "keyCompromised": { "message": "La clau està compromesa." @@ -1510,7 +1519,7 @@ "message": "Guardeu el formulari." }, "twoFactorU2fWarning": { - "message": "A causa de les limitacions de la plataforma, FIDO U2F no es pot utilitzar en totes les aplicacions de Bitwarden. Heu d'habilitar un altre proveïdor d'inici de sessió en dues passes perquè pugueu accedir al vostre compte quan FIDO U2F no es puga utilitzar. Plataformes compatibles:" + "message": "A causa de les limitacions de la plataforma, FIDO U2F no es pot utilitzar en totes les aplicacions de Bitwarden. Heu d'habilitar un altre proveïdor d'inici de sessió en dos passos perquè pugueu accedir al vostre compte quan FIDO U2F no es puga utilitzar. Plataformes compatibles:" }, "twoFactorU2fSupportWeb": { "message": "Caixa forta web i extensions de navegador en un escriptori/portàtil amb un navegador compatible amb U2F (Chrome, Opera, Vivaldi, o Firefox amb FIDO U2F activat)." @@ -1519,13 +1528,13 @@ "message": "S'està esperant que toqueu el botó de la vostra clau de seguretat" }, "twoFactorU2fClickSave": { - "message": "Feu clic al botó \"Guarda\" que apareix a continuació per habilitar aquesta clau de seguretat per iniciar sessió en dues passes." + "message": "Feu clic al botó \"Guarda\" que apareix a continuació per habilitar aquesta clau de seguretat per iniciar sessió en dos passos." }, "twoFactorU2fProblemReadingTryAgain": { "message": "Hi ha hagut un problema en llegir la clau de seguretat. Torneu-ho a provar." }, "twoFactorWebAuthnWarning": { - "message": "A causa de les limitacions de la plataforma, WebAuthn no es pot utilitzar en totes les aplicacions Bitwarden. Heu d’habilitar un altre proveïdor d’inici de sessió en dues passas perquè pugueu accedir al vostre compte quan no es puga utilitzar WebAuthn. Plataformes compatibles:" + "message": "A causa de les limitacions de la plataforma, WebAuthn no es pot utilitzar en totes les aplicacions Bitwarden. Heu d’habilitar un altre proveïdor d’inici de sessió en dos passos perquè pugueu accedir al vostre compte quan no es puga utilitzar WebAuthn. Plataformes compatibles:" }, "twoFactorWebAuthnSupportWeb": { "message": "Caixa forta web i extensions de navegador en un escriptori/portàtil amb un navegador compatible amb WebAuthn (Chrome, Opera, Vivaldi, o Firefox amb FIDO U2F activat)." @@ -1534,7 +1543,7 @@ "message": "El codi de recuperació d'inici de sessió en dues passes de Bitwarden" }, "twoFactorRecoveryNoCode": { - "message": "Encara no heu habilitat cap proveïdor d'inici de sessió en dues passes. Després d'activar-lo, podeu consultar ací el codi de recuperació." + "message": "Encara no heu habilitat cap proveïdor d'inici de sessió en dos passos. Després d'activar-lo, podeu consultar ací el codi de recuperació." }, "printCode": { "message": "Imprimeix el codi", @@ -1547,6 +1556,10 @@ "message": "Identifiqueu i tanqueu els forats de seguretat dels comptes en línia fent clic en els informes següents.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identifiqueu i tanqueu els forats de seguretat dels comptes en línia fent clic en els informes següents.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Llocs web no segurs" }, @@ -1572,13 +1585,13 @@ "message": "Inici de sessió inactiu en dos passos" }, "inactive2faReportDesc": { - "message": "L'inici de sessió en dues passes afegeix una capa de protecció als comptes. Activeu l'inici de sessió en dues passes mitjançant Bitwarden Authenticator per a aquests comptes o utilitzeu un mètode alternatiu." + "message": "L'inici de sessió en dos passos afegeix una capa de protecció als comptes. Activeu l'inici de sessió en dos passos mitjançant Bitwarden Authenticator per a aquests comptes o utilitzeu un mètode alternatiu." }, "inactive2faFound": { "message": "S'han trobat registres sense 2FA" }, "inactive2faFoundDesc": { - "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-step login (according to 2fa.directory). To further protect these accounts, you should set up two-step login.", + "message": "Hem trobat $COUNT$ llocs web a la vostra caixa forta que no es poden configurar amb l'autenticació de dos factors (d'acord amb 2fa.directory). Per protegir encara més aquests comptes, haureu d'habilitar l'autenticació de dos factors.", "placeholders": { "count": { "content": "$1", @@ -2494,13 +2507,13 @@ "message": "S'ha canviat la contrasenya del compte." }, "enabledUpdated2fa": { - "message": "Inici de sessió en dues passes habilitat/actualitzat." + "message": "Inici de sessió en dos passos guardat" }, "disabled2fa": { - "message": "S'ha inhabilitat l'inici de sessió en dues passes." + "message": "S'ha inhabilitat l'inici de sessió en dos passos" }, "recovered2fa": { - "message": "S'ha recuperat el compte des de l'inici de sessió en dues passes." + "message": "S'ha recuperat el compte des de l'inici de sessió en dos passos." }, "failedLogin": { "message": "S'ha produït un error d'inici de sessió amb una contrasenya incorrecta." @@ -2509,7 +2522,7 @@ "message": "S'ha produït un error amb un inici de sessió en dues passes incorrecte." }, "exportedVault": { - "message": "Caixa forta exportada." + "message": "S'ha exportat la caixa forta" }, "exportedOrganizationVault": { "message": "Caixa forta de l’organització exportada." @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Número de targeta vist per a l'article $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Codi de seguretat vist de l’element $ID$.", "placeholders": { @@ -2977,7 +2999,7 @@ "message": "Recupera l'inici de sessió en dues passes del compte" }, "twoStepRecoverDisabled": { - "message": "S'ha inhabilitat l'inici de sessió en dues passes al vostre compte." + "message": "S'ha inhabilitat l'inici de sessió en dos passos al vostre compte." }, "learnMore": { "message": "Més informació" @@ -2989,11 +3011,14 @@ "message": "Si el vostre compte existeix, rebreu un correu electrònic amb més instruccions." }, "deleteRecoverConfirmDesc": { - "message": "Heu sol·licitat suprimir el compte de Bitwarden. Feu clic al botó seguüent per confirmar-ho." + "message": "Heu sol·licitat suprimir el compte de Bitwarden. Feu clic al botó següent per confirmar-ho." }, "myOrganization": { "message": "La meua organització" }, + "organizationInfo": { + "message": "Informació de l'organització" + }, "deleteOrganization": { "message": "Suprimeix l'organització" }, @@ -3025,7 +3050,7 @@ "message": "S'ha suprimit l'organització i totes les dades associades." }, "organizationUpdated": { - "message": "S'ha actualitzat l'organització" + "message": "S'ha guardat l'organització" }, "taxInformation": { "message": "Informació fiscal" @@ -3038,7 +3063,7 @@ "description": "A billing plan/package. For example: Families, Teams, Enterprise, etc." }, "changeBillingPlan": { - "message": "Canvi de pla", + "message": "Pla d'actualització", "description": "A billing plan/package. For example: Families, Teams, Enterprise, etc." }, "changeBillingPlanUpgrade": { @@ -3062,7 +3087,7 @@ "message": "Baixa factura" }, "verifyBankAccount": { - "message": "Comproveu compte" + "message": "Comproveu compte bancari" }, "verifyBankAccountDesc": { "message": "Hem realitzat dos dipòsits en el vostre compte bancari (pot tardar entre 1-2 dies laborables). Introduïu aquests imports per verificar el compte bancari." @@ -3122,11 +3147,11 @@ "message": "Cost potencial màxim per plaça" }, "addSeats": { - "message": "Afegeix reserves", + "message": "Afegeix places", "description": "Seat = User Seat" }, "removeSeats": { - "message": "Suprimeix llocs", + "message": "Suprimeix places", "description": "Seat = User Seat" }, "subscriptionDesc": { @@ -3160,7 +3185,7 @@ "message": "Els ajustos a la vostra subscripció donaran lloc a canvis prorratejats als vostres totals de facturació. Si els nous usuaris convidats superen les vostres places de subscripció, rebreu immediatament un càrrec prorratejat pels usuaris addicionals." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Els ajustaments a la vostra subscripció es traduiran en canvis prorratejats en els vostres totals de facturació. Si els usuaris recentment convidats excedeixen les vostres places de subscripció, rebreu immediatament un càrrec previst dels usuaris addicionals fins que s'aconseguisca arribar al vostre límit de places ($MAX$).", + "message": "Els ajustos a la vostra subscripció donaran lloc a canvis prorratejats en els vostres totals de facturació. Si els usuaris recentment convidats excedeixen les vostres places de subscripció, rebreu immediatament un càrrec previst dels usuaris addicionals fins que s'aconseguisca arribar al vostre límit de places ($MAX$).", "placeholders": { "max": { "content": "$1", @@ -3205,10 +3230,10 @@ } }, "seatsToAdd": { - "message": "Reserves a afegir" + "message": "Places a afegir" }, "seatsToRemove": { - "message": "Reserves a suprimir" + "message": "Places a suprimir" }, "seatsAddNote": { "message": "Si afegiu reserves d'usuari, es generaran ajustos al total de facturació i carregarem el mètode de pagament immediatament al fitxer. El primer càrrec serà prorratejat per a la resta del cicle de facturació actual." @@ -3232,7 +3257,7 @@ "message": "Actualitza clau" }, "updateEncryptionKey": { - "message": "Actualitzeu la clau de xifratge" + "message": "Actualitza la clau de xifratge" }, "updateEncryptionKeyShortDesc": { "message": "Esteu fent servir un esquema de xifrage antiquat." @@ -3479,7 +3504,7 @@ "message": "Els membres de l’organització que no tinguen activat l’inici de sessió en dos passos per al seu compte personal s'eliminaran de l’organització i rebran un correu electrònic que els notificarà sobre el canvi." }, "twoStepLoginPolicyUserWarning": { - "message": "Eres membre d’una organització que necessita l’inici de sessió en dues passes per estar habilitat al vostre compte d’usuari. Si desactiveu tots els proveïdors d’inici de sessió en dues passes, sereu eliminats automàticament d’aquestes organitzacions." + "message": "Eres membre d’una organització que necessita l’inici de sessió en dos passos per estar habilitat al vostre compte d’usuari. Si desactiveu tots els proveïdors d’inici de sessió en dos passos, sereu eliminats automàticament d’aquestes organitzacions." }, "passwordGeneratorPolicyDesc": { "message": "Estableix els requisits mínims per a la configuració del generador de contrasenyes." @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Cal identificador d’organització." }, + "ssoIdentifier": { + "message": "Identificador SSO" + }, + "ssoIdentifierHint": { + "message": "Proporcioneu aquest identificador als vostres membres per iniciar sessió amb SSO." + }, "unlinkSso": { "message": "Desenllaça SSO" }, @@ -3736,7 +3767,7 @@ "message": "Text" }, "createSend": { - "message": "Crea un nou Send", + "message": "Nou Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { @@ -3748,7 +3779,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Send editat", + "message": "Send guardat", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deletedSend": { @@ -4038,7 +4069,7 @@ "message": "Els usuaris de l’organització que poden gestionar les polítiques d'aquesta, estan exempts de la seua aplicació." }, "sendDisabled": { - "message": "Send desactivat", + "message": "Send suprimit", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permisos" }, + "permission": { + "message": "Permisos" + }, "managerPermissions": { "message": "Permisos de l'administrador" }, @@ -4172,10 +4206,10 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTextDesc": { - "message": "El text que voleu enviar." + "message": "El text que voleu pel Send." }, "sendFileDesc": { - "message": "El fitxer que voleu enviar." + "message": "El fitxer que voleu pel Send." }, "copySendLinkOnSave": { "message": "Copie l'enllaç per compartir aquest Send al meu porta-retalls després de guardar-lo." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Administrador del proveïdor" }, @@ -4658,7 +4696,7 @@ "message": "Prohibeix als usuaris exportar les dades de la seua caixa forta privada." }, "vaultExportDisabled": { - "message": "L'exportació de la caixa forta està Inhabilitada" + "message": "L'exportació de la caixa forta s'ha suprimit" }, "personalVaultExportPolicyInEffect": { "message": "Una o més polítiques d'organització us impedeixen exportar la vostra caixa forta." @@ -4691,7 +4729,7 @@ "message": "ID de Client" }, "clientSecret": { - "message": "Client Secret" + "message": "Secret de client" }, "metadataAddress": { "message": "Adreça de metadades" @@ -4931,7 +4969,7 @@ "message": "Abandona l'organització" }, "removeMasterPassword": { - "message": "Suprimiu la contrasenya mestra" + "message": "Suprimeix la contrasenya mestra" }, "removedMasterPassword": { "message": "S'ha suprimit la contrasenya mestra." @@ -4985,7 +5023,7 @@ "message": "Connector de claus inhabilitat" }, "keyConnectorWarning": { - "message": "Una vegada els membres comencen a utilitzarel connector de claus, la vostra organització no pot tornar al desxifrat de la contrasenya mestra. Continueu només si us sentiu còmode implementant i gestionant un servidor de claus." + "message": "Una vegada els membres comencen a utilitzar el connector de claus, la vostra organització no pot tornar al desxifrat de la contrasenya mestra. Continueu només si us sentiu còmode implementant i gestionant un servidor de claus." }, "migratedKeyConnector": { "message": "S'ha migrat al connector claus" @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "L'entrada no ha de superar $COUNT$ caràcters de longitud.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ camps de dalt necessiten la vostra atenció.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Activat" }, + "members": { + "message": "Membres" + }, + "reporting": { + "message": "Informes" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Nombre d'usuaris" }, + "loggingInAs": { + "message": "Has iniciat sessió com" + }, + "notYou": { + "message": "No sou vosaltres?" + }, "multiSelectPlaceholder": { "message": "-- Escriviu per filtrar --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Esborra-ho tot" + }, + "from": { + "message": "De" + }, + "to": { + "message": "A" + }, + "member": { + "message": "Membre" + }, + "update": { + "message": "Actualitza" + }, + "role": { + "message": "Rol" + }, + "canView": { + "message": "Pot veure" + }, + "canViewExceptPass": { + "message": "Pot veure, excepte les contrasenyes" + }, + "canEdit": { + "message": "Pot editar" + }, + "canEditExceptPass": { + "message": "Pot editar, excepte les contrasenyes" + }, + "group": { + "message": "Grup" + }, + "groupAccessAll": { + "message": "Aquest grup pot accedir i modificar tots els elements." + }, + "memberAccessAll": { + "message": "Aquest usuari pot accedir i modificar tots els elements." } } diff --git a/apps/web/src/locales/cs/messages.json b/apps/web/src/locales/cs/messages.json index 6d0219a7999..2da886dc61a 100644 --- a/apps/web/src/locales/cs/messages.json +++ b/apps/web/src/locales/cs/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Vytvořit účet" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Zobrazit rozeznatelný obrázek vedle každého přihlášení." }, - "enableGravatars": { - "message": "Povolit službu Gravatar", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Použije profilový obrázek načtený z gravatar.com." - }, "enableFullWidth": { "message": "Zapnout rozvržení na celou šířku stránky", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Dvoufázové přihlášení" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Zabezpečte svůj účet vyžadováním dodatečného kroku při přihlašování." }, - "twoStepLoginOrganizationDesc": { - "message": "Vyžadovat dvoufázové přihlášení pro uživatele vaší organizace nastavením poskytovatelů na úrovni organizace." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Povolením dvoufázového přihlášení může dojít k trvalému uzamčení vašeho účtu. Obnovovací kód umožňuje přístup do vašeho účtu i v případě, pokud již nemůžete použít svůj normální způsob dvoufázového přihlášení (např. ztráta zařízení). Pokud ztratíte přístup k vašemu účtu, nebude vám schopna pomoci ani zákaznická podpora Bitwardenu. Doporučujeme si proto kód pro obnovení zapsat nebo vytisknout a uložit jej na bezpečném místě." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Hlášení o nezabezpečených webech" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Bezpečnostní kód pro položku $ID$ byl zobrazen.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Má organizace" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Smazat organizaci" }, @@ -3112,7 +3137,7 @@ "message": "Zadejte ID instalace" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3157,10 +3182,10 @@ "message": "Pro další pomoc se správou vašeho předplatného kontaktujte prosím zákaznickou podporu." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Je vyžadován identifikátor organizace." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Odebrat podnikové přihlášení" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Oprávnění" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Klienti" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Administrátor poskytovatele" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ výše uvedených polí vyžaduje vaši pozornost.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Zapnuto" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/da/messages.json b/apps/web/src/locales/da/messages.json index 27a671f3cff..5ac7fabfef6 100644 --- a/apps/web/src/locales/da/messages.json +++ b/apps/web/src/locales/da/messages.json @@ -47,10 +47,10 @@ "message": "Notater" }, "customFields": { - "message": "Brugerdefinerede felter" + "message": "Tilpassede felter" }, "cardholderName": { - "message": "Kortholdernavn" + "message": "Kortholders navn" }, "number": { "message": "Nummer" @@ -62,7 +62,7 @@ "message": "Udløb" }, "securityCode": { - "message": "Kortverifikationskode (CVC)" + "message": "Kortverifikationsværdi (CVC)" }, "identityName": { "message": "Identitetsnavn" @@ -149,7 +149,7 @@ "message": "Mappe" }, "newCustomField": { - "message": "Nyt brugerdefineret felt" + "message": "Nyt tilpasset felt" }, "value": { "message": "Værdi" @@ -209,7 +209,7 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Matchmetode", + "message": "Matchdetektering", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { @@ -223,7 +223,7 @@ "message": "Slå synlighed til/fra" }, "toggleCollapse": { - "message": "Fold sammen/fold ud", + "message": "Fold sammen/ud", "description": "Toggling an expand/collapse state." }, "generatePassword": { @@ -285,7 +285,7 @@ "message": "Søg i boks" }, "allItems": { - "message": "Alle elementer" + "message": "Alle emner" }, "favorites": { "message": "Favoritter" @@ -366,10 +366,10 @@ "message": "Vælg" }, "addItem": { - "message": "Tilføj element" + "message": "Tilføj emne" }, "editItem": { - "message": "Redigér element" + "message": "Redigér emne" }, "viewItem": { "message": "Vis emne" @@ -464,10 +464,10 @@ "message": "Vedhæftning slettet" }, "deleteAttachmentConfirmation": { - "message": "Er du sikker på du vil slette denne vedhæftning?" + "message": "Sikker på, at denne vedhæftning skal slettes?" }, "attachmentSaved": { - "message": "Vedhæftningen er blevet gemt." + "message": "Vedhæftning gemt" }, "file": { "message": "Fil" @@ -476,16 +476,16 @@ "message": "Vælg en fil." }, "maxFileSize": { - "message": "Maksimum filstørrelse er 500 MB." + "message": "Maks. filstørrelse er 500 MB." }, "updateKey": { - "message": "Du kan ikke bruge denne funktion, før du opdaterer din krypteringsnøgle." + "message": "Denne funktion kan ikke bruges, før du har opdateret din krypteringsnøgle." }, "addedItem": { - "message": "Tilføjede element" + "message": "Emne tilføjet" }, "editedItem": { - "message": "Redigerede element" + "message": "Emne gemt" }, "movedItemToOrg": { "message": "$ITEMNAME$ flyttet til $ORGNAME$", @@ -510,7 +510,7 @@ } }, "deleteItem": { - "message": "Slet element" + "message": "Slet emne" }, "deleteFolder": { "message": "Slet mappe" @@ -519,46 +519,46 @@ "message": "Slet vedhæftning" }, "deleteItemConfirmation": { - "message": "Er du sikker på, at du sende til papirkurven?" + "message": "Send til papirkurven, sikker?" }, "deletedItem": { - "message": "Element sendt til papirkurven" + "message": "Emne sendt til papirkurv" }, "deletedItems": { - "message": "Elementer sendt til papirkurven" + "message": "Emner sendt til papirkurv" }, "movedItems": { - "message": "Flyttede elementer" + "message": "Emner flyttet" }, "overwritePasswordConfirmation": { - "message": "Er du sikker på, at du vil overskrive den aktuelle adgangskode?" + "message": "Sikker på, at den aktuelle adgangskode skal overskrives?" }, "editedFolder": { - "message": "Redigerede mappe" + "message": "Mappe gemt" }, "addedFolder": { - "message": "Tilføjede mappe" + "message": "Mappe tilføjet" }, "deleteFolderConfirmation": { - "message": "Er du sikker på du vil slette denne mappe?" + "message": "Sikker på, denne mappe skal slettes?" }, "deletedFolder": { - "message": "Slettede mappe" + "message": "Mappe slettet" }, "loggedOut": { "message": "Logget ud" }, "loginExpired": { - "message": "Din login-session er udløbet." + "message": "Login-session udløbet." }, "logOutConfirmation": { - "message": "Er du sikker på, at du vil logge ud?" + "message": "Sikker på, at du vil logge ud?" }, "logOut": { "message": "Log ud" }, "ok": { - "message": "Ok" + "message": "OK" }, "yes": { "message": "Ja" @@ -567,13 +567,16 @@ "message": "Nej" }, "loginOrCreateNewAccount": { - "message": "Log ind eller opret en ny konto for at få adgang til din sikre boks." + "message": "Log ind eller opret en ny konto for at tilgå din sikre boks." }, "loginWithDevice": { "message": "Log ind med enhed" }, "loginWithDeviceEnabledInfo": { - "message": "Log ind med enhed skal være aktiveret i indstillingerne for Bitwarden-mobilappen. Har du brug for en anden mulighed?" + "message": "Log ind med enhed skal være opsat i indstillingerne i Bitwarden mobil-appen. Behov for en anden mulighed?" + }, + "loginWithMasterPassword": { + "message": "Log ind med hovedadgangskoden" }, "createAccount": { "message": "Opret konto" @@ -594,46 +597,46 @@ "message": "Indsend" }, "emailAddressDesc": { - "message": "Du bruger din e-mailadresse til at logge ind." + "message": "Din e-mailadresse vil blive brugt til indlogning." }, "yourName": { "message": "Dit navn" }, "yourNameDesc": { - "message": "Hvad skal vi kalde dig?" + "message": "Hvad vil du kaldes?" }, "masterPass": { "message": "Hovedadgangskode" }, "masterPassDesc": { - "message": "Hovedadgangskoden er den adgangskode, du bruger til at få adgang til din boks. Det er meget vigtigt, at du ikke glemmer din hovedadgangskode. Der er ingen måde hvorpå koden kan genoprettes, i tilfælde af at du glemmer den." + "message": "Hovedadgangskoden er den adgangskode, du bruger, når du tilgår din boks. Det er meget vigtigt, at hovedadgangskoden ikke glemmes, da der ikke er nogen måde, hvorpå den kan genoprettes." }, "masterPassImportant": { "message": "Hovedadgangskoder kan ikke gendannes, hvis du glemmer dem!" }, "masterPassHintDesc": { - "message": "Et tip til hovedadgangskoden kan hjælpe dig med at huske din adgangskode, hvis du glemmer den." + "message": "Et hovedadgangskode-tip kan bidrage til at komme i tanke om adgangskoden, hvis den glemmes." }, "reTypeMasterPass": { - "message": "Gentast hovedadgangskode" + "message": "Angiv hovedadgangskoden igen" }, "masterPassHint": { - "message": "Hovedadgangskodetip (valgfri)" + "message": "Hovedadgangskode-tip (valgfrit)" }, "masterPassHintLabel": { - "message": "Hovedadgangskodetip" + "message": "Hovedadgangskode-tip" }, "settings": { "message": "Indstillinger" }, "passwordHint": { - "message": "Adgangskodetip" + "message": "Adgangskode-tip" }, "enterEmailToGetHint": { - "message": "Indtast din kontos e-mailadresse for at modtage dit hovedadgangskodetip." + "message": "Angiv din kontos e-mailadresse for at modtage hovedadgangskode-tip." }, "getMasterPasswordHint": { - "message": "Få hovedadgangskodetip" + "message": "Få hovedadgangskode-tip" }, "emailRequired": { "message": "E-mailadresse er påkrævet." @@ -651,7 +654,7 @@ "message": "Hovedadgangskoden skal være på mindst 8 tegn." }, "masterPassDoesntMatch": { - "message": "De to hovedadgangskoder matcher ikke." + "message": "Hovedadgangskoderne matcher ikke." }, "newAccountCreated": { "message": "Din nye konto er oprettet! Du kan nu logge ind." @@ -660,19 +663,19 @@ "message": "Konto oprettet." }, "masterPassSent": { - "message": "Vi har sendt dig en e-mail med dit hovedadgangskodetip." + "message": "En e-mail med dit hovedadgangskode-tip er sendt." }, "unexpectedError": { - "message": "Der opstod en uventet fejl." + "message": "En uventet fejl opstod." }, "emailAddress": { - "message": "Emailadresse" + "message": "E-mailadresse" }, "yourVaultIsLocked": { "message": "Din boks er låst. Bekræft din hovedadgangskode for at fortsætte." }, "unlock": { - "message": "Lås op" + "message": "Oplås" }, "loggedInAsEmailOn": { "message": "Logget ind som $EMAIL$ på $HOSTNAME$.", @@ -691,13 +694,13 @@ "message": "Ugyldig hovedadgangskode" }, "invalidFilePassword": { - "message": "Ugyldig filadgangskode. Brug venligst den adgangskode, du indtastede, da du oprettede eksportfilen." + "message": "Ugyldig filadgangskode. Brug samme adgangskode, som da du oprettede eksportfilen." }, "lockNow": { "message": "Lås nu" }, "noItemsInList": { - "message": "Der er ingen elementer at vise." + "message": "Der er ingen emner at vise." }, "noCollectionsInList": { "message": "Der er ingen samlinger at vise." @@ -715,7 +718,7 @@ "message": "Ny organisation" }, "noOrganizationsList": { - "message": "Du tilhører ikke nogen organisationer. Organisationer giver dig mulighed for at dele elementer med andre brugere på en sikker måde." + "message": "Du tilhører ikke nogen organisation. Organisationer muliggør sikker deling af emner med andre brugere." }, "notificationSentDevice": { "message": "En notifikation er sendt til din enhed." @@ -730,10 +733,10 @@ } }, "enterVerificationCodeApp": { - "message": "Indtast den 6-cifrede verifikationskode fra din autentificeringsapp." + "message": "Angiv den 6-cifrede bekræftelseskode fra godkendelses-appen." }, "enterVerificationCodeEmail": { - "message": "Indtast den 6-cifrede verifikationskode, der blev sendt til $EMAIL$.", + "message": "Angiv den 6-cifrede bekræftelseskode tilsendt $EMAIL$.", "placeholders": { "email": { "content": "$1", @@ -742,7 +745,7 @@ } }, "verificationCodeEmailSent": { - "message": "Bekræftelsesmail sendt til $EMAIL$.", + "message": "Bekræftelsese-mail sendt til $EMAIL$.", "placeholders": { "email": { "content": "$1", @@ -754,67 +757,67 @@ "message": "Husk mig" }, "sendVerificationCodeEmailAgain": { - "message": "Send verifikationskode-email igen" + "message": "Send bekræftelseskode-email igen" }, "useAnotherTwoStepMethod": { - "message": "Brug en anden to-trins-loginmetode" + "message": "Brug en anden totrins-login metode" }, "insertYubiKey": { - "message": "Indsæt din YubiKey i din computers USB-port, og tryk derefter på dens knap." + "message": "Indsæt din YubiKey i computerens USB-port, tryk dernæst på dens knap." }, "insertU2f": { - "message": "Indsæt din sikkerhedsnøgle i din computers USB-port. Hvis den har en knap, tryk på den." + "message": "Indsæt din sikkerhedsnøgle i computerens USB-port. Har den en knap, tryk på den." }, "loginUnavailable": { - "message": "Login ikke tilgængelig" + "message": "Login utilgængelig" }, "noTwoStepProviders": { - "message": "Denne konto har to-trins login aktiveret, men ingen af de konfigurerede to-trins udbydere understøttes af denne webbrowser." + "message": "Denne konto har totrins-login aktiveret, men ingen af de opsatte totrinsudbydere understøttes af denne webbrowser." }, "noTwoStepProviders2": { - "message": "Du skal bruge en understøttet webbrowser (såsom Chrome) og/eller tilføje ekstra udbydere, der understøttes bedre på tværs af webbrowsere (f.eks. en autentificeringsapp)." + "message": "Benyt en understøttet webbrowser (såsom Chrome) og/eller tilføj ekstra udbydere, som er bedre understøttet på tværs af webbrowsere (f.eks. en godkendelses-app)." }, "twoStepOptions": { - "message": "To-trins-login indstillinger" + "message": "Totrins-login indstillinger" }, "recoveryCodeDesc": { - "message": "Mistet adgang til alle dine to-faktor-udbydere? Brug din genoprettelseskode til at deaktivere alle to-faktor udbydere på din konto." + "message": "Mistet adgang til alle totrinsudbyderene? Brug din genoprettelseskode til at deaktivere dem alle på kontoen." }, "recoveryCodeTitle": { "message": "Gendannelseskode" }, "authenticatorAppTitle": { - "message": "Autentificerings-app" + "message": "Godkendelses-app" }, "authenticatorAppDesc": { - "message": "Brug en autentificeringsapp (f.eks. Authy eller Google Autentificering) til at generere tidsbaserede bekræftelseskoder.", + "message": "Benyt en godkendelses-app (såsom Authy eller Google Authenticator) til at generere tidsbaserede bekræftelseskoder.", "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." }, "yubiKeyTitle": { - "message": "YubiKey OTP sikkerhedsnøgle" + "message": "YubiKey OTP-sikkerhedsnøgle" }, "yubiKeyDesc": { - "message": "Brug en YubiKey til at få adgang til din konto. Virker med YubiKey 4 serien, 5 serien og NEO enheder." + "message": "Benyt en YubiKey for at tilgå din konto. Fungerer med YubiKey 4- og 5-serien samt NEO-enheder." }, "duoDesc": { - "message": "Bekræft med Duo Security ved hjælp af Duo Mobile app, SMS, telefonopkald eller U2F sikkerhedsnøgle.", + "message": "Bekræft med Duo Security vha. Duo Mobile-appen, SMS, telefonopkald eller U2F-sikkerhedsnøgle.", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "duoOrganizationDesc": { - "message": "Bekræft med Duo Security for din organisation ved hjælp af Duo Mobile app, SMS, telefonopkald eller U2F-sikkerhedsnøgle.", + "message": "Bekræft med Duo Security for din organisation vha. Duo Mobile-appen, SMS, telefonopkald eller U2F-sikkerhedsnøgle.", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "u2fDesc": { - "message": "Brug hvilken som helst FIDO U2F-aktiveret sikkerhedsnøgle til at få adgang til din konto." + "message": "Benyt enhver FIDO U2F-kompatibel sikkerhedsnøgle for at tilgå din konto." }, "u2fTitle": { - "message": "FIDO U2F sikkerhedsnøgle" + "message": "FIDO U2F-sikkerhedsnøgle" }, "webAuthnTitle": { "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Brug en hvilken som helst WebAuthn-aktiveret sikkerhedsnøgle til at få adgang til din konto." + "message": "Benyt enhver WebAuthn-kompatibel sikkerhedsnøgle for at tilgå din konto." }, "webAuthnMigrated": { "message": "(Migreret fra FIDO)" @@ -835,16 +838,16 @@ "message": "Organisationer" }, "moveToOrgDesc": { - "message": "Vælg den organisation, som du vil flytte dette emne til. Flytning overfører ejerskab af emnet til organisationen, og du vil efter flytningen ikke længere være den direkte ejer af emnet." + "message": "Vælg den organisation, til hvilken dette emne ønskes flyttet. Flytning overfører ejerskab af emnet til organisationen, og du vil efter flytningen ikke længere være den direkte ejer af emnet." }, "moveManyToOrgDesc": { - "message": "Vælg en organisation, som du vil flytte disse emner til. Flytning overfører ejerskabet af emnerne til organisationen, og du vil efter flytningen ikke længere være den direkte ejer af disse emner." + "message": "Vælg organisationen, til hvilken disse emner ønskes flyttet. Flytning til en organisation overfører ejerskabet af emnerne til denne organisation, og du vil efter flytningen ikke længere være den direkte ejer af disse emner." }, "collectionsDesc": { - "message": "Redigér de samlinger, som dette element deles med. Kun organisationsbrugere med adgang til disse samlinger vil kunne se dette element." + "message": "Redigér de samlinger, med hvilke dette emne deles. Kun organisationsbrugere med adgang til disse samlinger vil kunne se dette emne." }, "deleteSelectedItemsDesc": { - "message": "Du har valgt $COUNT$ element(er), der skal slettes. Er du sikker på, at du vil slette alle disse elementer?", + "message": "$COUNT$ emne(r) markeret til sletning. Fortsæt med sletningen?", "placeholders": { "count": { "content": "$1", @@ -853,7 +856,7 @@ } }, "moveSelectedItemsDesc": { - "message": "Vælg en mappe, som du vil flytte de(t) $COUNT$ valgte element(er) til.", + "message": "Vælg en mappe, hvortil de(t) $COUNT$ valgte emne(r) ønskes flyttet.", "placeholders": { "count": { "content": "$1", @@ -862,7 +865,7 @@ } }, "moveSelectedItemsCountDesc": { - "message": "Du har valgt $COUNT$ emne(r). $MOVEABLE_COUNT$ emne(r) kan flyttes til en organisation, $NONMOVEABLE_COUNT$ kan ikke.", + "message": "$COUNT$ emne(r) valgt, hvoraf $MOVEABLE_COUNT$ kan flyttes til en organisation, mens $NONMOVEABLE_COUNT$ ikke kan.", "placeholders": { "count": { "content": "$1", @@ -888,16 +891,16 @@ "message": "Advarsel" }, "confirmVaultExport": { - "message": "Bekræft Boks-eksport" + "message": "Bekræft eksport af boks" }, "exportWarningDesc": { - "message": "Denne eksport indeholder dine boksdata i ukrypteret form. Du bør ikke gemme eller sende den eksporterede fil over usikre kanaler (f.eks. e-mail). Slet den straks efter at du er færdig med at bruge den." + "message": "Denne eksport indeholder boksdataene i ukrypteret form, og eksportfilen bør hverken gemmes eller sendes via usikre kanaler (såsom e-mail). Slet den straks efter du er færdig med at bruge den." }, "encExportKeyWarningDesc": { - "message": "Denne eksport krypterer dine data vha. din kontos krypteringsnøgle. Roterer du på et tidspunkt denne kontokrypteringsnøgle, skal du eksportere igen, da du ikke vil kunne dekryptere denne eksportfil." + "message": "Denne eksport krypterer dataene vha. din kontokrypteringsnøgle. Roteres denne kontokrypteringsnøgle på et tidspunkt, skal der eksporteres igen, da du ikke vil kunne dekryptere denne eksportfil." }, "encExportAccountWarningDesc": { - "message": "Kontokrypteringsnøgler er unikke for hver Bitwarden-brugerkonto, så du kan ikke importere en krypteret eksport til en anden konto." + "message": "Kontokrypteringsnøgler er unikke for hver Bitwarden-brugerkonto, så man kan ikke importere en krypteret eksport til en anden konto." }, "export": { "message": "Eksportér" @@ -930,7 +933,7 @@ "message": "Brug din kontos krypteringsnøgle til at kryptere eksporten og begrænse importen til udelukkende den aktuelle Bitwarden-konto." }, "passwordProtectedOptionDescription": { - "message": "Opret en adgangskode til at kryptere eksporten og importér den til enhver Bitwarden-konto ved hjælp af adgangskoden til dekryptering." + "message": "Opsæt en adgangskode til både at kryptere eksporten samt dekryptere denne ved import til enhver Bitwarden-konto." }, "fileTypeHeading": { "message": "Filtype" @@ -939,7 +942,7 @@ "message": "Kontosikkerhedskopi" }, "passwordProtected": { - "message": "Kodeordsbeskyttet" + "message": "Adgangskodebeskyttet" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { "message": "“Filadgangskode” og “Bekræft filadgangskode“ matcher ikke." @@ -951,7 +954,7 @@ "message": "Denne fil er adgangskodebeskyttet. Angiv filadgangskoden for at importere data." }, "exportSuccess": { - "message": "Dine boksdata er blevet eksporteret." + "message": "Boksdata eksporteret" }, "passwordGenerator": { "message": "Adgangskodegenerator" @@ -976,11 +979,11 @@ "message": "Længde" }, "uppercase": { - "message": "Store bogstaver (A-Z)", + "message": "Majuskler (A-Z)", "description": "Include uppercase letters in the password generator." }, "lowercase": { - "message": "Små bogstaver (a-z)", + "message": "Minuskler (a-z)", "description": "Include lowercase letters in the password generator." }, "numbers": { @@ -1013,22 +1016,22 @@ "description": "To clear something out. Example: To clear browser history." }, "accountUpdated": { - "message": "Konto opdateret" + "message": "Konto gemt" }, "changeEmail": { - "message": "Skift email" + "message": "Skift e-mail" }, "changeEmailTwoFactorWarning": { - "message": "Hvis du fortsætter, ændres din kontos e-mailadresse. Det ændrer ikke den e-mailadresse, der bruges til to-faktor-godkendelse. Du kan ændre denne e-mailadresse i indstillingerne for to-trins login." + "message": "Fortsættes, skiftes e-mailadressen for kontoen. Der skiftes ikke e-mailadresse for totrins-login godkendelse, denne kan skiftes i indstillingerne for totrins-login." }, "newEmail": { - "message": "Ny email" + "message": "Ny e-mail" }, "code": { "message": "Kode" }, "changeEmailDesc": { - "message": "Vi har sendt en bekræftelseskode til $EMAIL$. Tjek venligst din e-mail for denne kode og indtast den nedenfor for at afslutte e-mailadresseændringen.", + "message": "En bekræftelseskode er sendt til $EMAIL$. Tjek din e-mail for denne kode og angiv den nedenfor for at afslutte e-mailadresseændringen.", "placeholders": { "email": { "content": "$1", @@ -1037,25 +1040,25 @@ } }, "loggedOutWarning": { - "message": "Ved at fortsætte vil du blive logget ud af din nuværende session, og du skal logge ind igen. Aktive sessioner på andre enheder kan fortsat forblive aktive i op til én time." + "message": "Fortsættes, logges du ud af denne session og vil skulle logge ind igen. Aktive sessioner på andre enheder kan forblive aktive i op til én time." }, "emailChanged": { - "message": "Email ændret" + "message": "E-mail gemt" }, "logBackIn": { - "message": "Log venligst ind igen." + "message": "Log ind igen." }, "logBackInOthersToo": { - "message": "Log venligst ind igen. Hvis du bruger andre Bitwarden-applikationer, så log ud og ind igen på dem også." + "message": "Log ind igen. Bruger du andre Bitwarden-applikationer, så log også ud og ind igen på disse." }, "changeMasterPassword": { "message": "Skift hovedadgangskode" }, "masterPasswordChanged": { - "message": "Hovedadgangskode ændret" + "message": "Hovedadgangskode gemt" }, "currentMasterPass": { - "message": "Nuværende hovedadgangskode" + "message": "Aktuel hovedadgangskode" }, "newMasterPass": { "message": "Ny hovedadgangskode" @@ -1067,13 +1070,13 @@ "message": "Indstillinger for krypteringsnøgle" }, "kdfAlgorithm": { - "message": "KDF algoritme" + "message": "KDF-algoritme" }, "kdfIterations": { - "message": "KDF iterationer" + "message": "KDF-iterationer" }, "kdfIterationsDesc": { - "message": "Flere KDF iterationer kan hjælpe med at beskytte din hovedadgangskode imod brute force angreb. Vi anbefaler en værdi på $VALUE$ eller mere.", + "message": "Flere KDF-iterationer kan øge beskyttelsen af hovedadgangskoden imod brute force-angreb. En værdi på $VALUE$ eller højere anbefales.", "placeholders": { "value": { "content": "$1", @@ -1094,7 +1097,7 @@ "message": "Ændre KDF" }, "encKeySettingsChanged": { - "message": "Krypteringsnøgleindstillinger ændret" + "message": "Indstillinger for krypteringsnøgle gemt" }, "dangerZone": { "message": "Farezone" @@ -1103,16 +1106,16 @@ "message": "Pas på, disse handlinger kan ikke fortrydes!" }, "deauthorizeSessions": { - "message": "Fjern godkendelsen fra sessioner" + "message": "Fjern sessionsgodkendelser" }, "deauthorizeSessionsDesc": { - "message": "Bekymret for om din konto er logget ind på en anden enhed? Fortsæt nedenfor for at fjerne godkendelsen for alle computere eller enheder, som du tidligere har brugt. Dette sikkerhedstrin anbefales, hvis du tidligere har brugt en offentlig computer eller ved et uheld har gemt dit kodeord på en enhed, der ikke er din. Dette trin fjerner også alle tidligere huskede to-trins-login sessioner." + "message": "Bekymret for om kontoen er logget ind på en anden enhed? Fortsæt nedenfor for at fjerne godkendelsen for alle tidligere anvendte enhedstyper. Dette sikkerhedstrin tilrådes, hvis man tidligere har anvendt en offentlig computer eller ved et uheld har gemt sin adgangskode på en enhed, der ikke er ens egen. Dette trin rydder også alle tidligere lagrede totrins-login sessioner." }, "deauthorizeSessionsWarning": { - "message": "Ved at fortsætte vil du også blive logget ud af din nuværende session, og du skal logge ind igen. Du bliver også bedt om to-trins login igen, hvis det er aktiveret. Aktive sessioner på andre enheder kan fortsat forblive aktive i op til én time." + "message": "Fortsættes, logges man også ud af den nuværende session og vil skulle logge ind igen. Der anmodes også om totrins-login igen, såfremt funktionen er opsat. Aktive sessioner på andre enheder vil kunne forblive aktive i op til én time." }, "sessionsDeauthorized": { - "message": "Godkendelsen er fjernet fra alle sessioner" + "message": "Godkendelser for alle sessioner fjernet" }, "purgeVault": { "message": "Tøm boks" @@ -1133,7 +1136,7 @@ "message": "Tømning af din boks er permanent. Det kan ikke fortrydes." }, "vaultPurged": { - "message": "Din boks er blevet tømt." + "message": "Boks er tømt." }, "deleteAccount": { "message": "Slet konto" @@ -1166,7 +1169,7 @@ "message": "Der var et problem med de data, du forsøgte at importere. Ret nedenstående fejl i din kildefil, og prøv igen." }, "importSuccess": { - "message": "Data er blevet importeret til din boks med success." + "message": "Data er nu importeret" }, "importWarning": { "message": "Du importerer data til $ORGANIZATION$. Dine data kan blive delt med medlemmer af denne organisation. Vil du fortsætte?", @@ -1221,7 +1224,7 @@ "message": "Tilpas din web-boks oplevelse." }, "preferencesUpdated": { - "message": "Præferencer opdateret" + "message": "Præferencer gemt" }, "language": { "message": "Sprog" @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Vis et genkendeligt billede ud for hvert login." }, - "enableGravatars": { - "message": "Vis Gravatarer", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Brug avatar billeder hentet fra gravatar.com." - }, "enableFullWidth": { "message": "Vis layout med fuld bredde", "description": "Allows scaling the web vault UI's width" @@ -1262,7 +1258,7 @@ "message": "Globale ækvivalente domæner" }, "customEqDomains": { - "message": "Brugerdefinerede ækvivalente domæner" + "message": "Tilpassede ækvivalente domæner" }, "exclude": { "message": "Udeluk" @@ -1274,13 +1270,13 @@ "message": "Tilpas" }, "newCustomDomain": { - "message": "Nyt brugerdefineret domæne" + "message": "Nyt tilpasset domæne" }, "newCustomDomainDesc": { "message": "Indtast en liste over domæner adskilt af kommaer. Kun \"grund\"-domæner er tilladt. Indtast ikke underdomæner. F.eks. Indtast \"google.com\" i stedet for \"www.google.com\". Du kan også indtaste \"androidapp://package.name\" for at knytte en androidapp til andre website-domæner." }, "customDomainX": { - "message": "Brugerdefineret domæne $INDEX$", + "message": "Tilpasset domæne $INDEX$", "placeholders": { "index": { "content": "$1", @@ -1289,19 +1285,32 @@ } }, "domainsUpdated": { - "message": "Domæner opdateret" + "message": "Domæner gemt" }, "twoStepLogin": { - "message": "To-trins login" + "message": "Totrins-login" + }, + "twoStepLoginEnforcement": { + "message": "Totrins-login håndhævelse" }, "twoStepLoginDesc": { "message": "Gør din konto sikrere ved at kræve et ekstra trin, når du logger ind." }, - "twoStepLoginOrganizationDesc": { - "message": "Kræv to-trins login for din organisations brugere ved at konfigurere udbydere på organisationsniveau." + "twoStepLoginOrganizationDescStart": { + "message": "Håndhæv Bitwarden totrins-login indstillinger for medlemmer vha. ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Totrins-login politik" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Brug mulighederne nedenfor for at håndhæve totrins-login gennem Duo." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Er SSO opsat, eller planlægges opsat, håndhæves totrins-login muligvis allerede gennem identitetsudbyderen." }, "twoStepLoginRecoveryWarning": { - "message": "Aktivering af to-trins login kan permanent låse dig ud af din Bitwarden-konto. En gendannelseskode giver dig mulighed for at få adgang til din konto, hvis du ikke længere kan bruge din normale to-trins login-leverandør (f.eks. hvis du mister din enhed). Bitwarden-support kan ikke hjælpe dig, hvis du mister adgangen til din konto. Vi anbefaler at du nedskriver eller udskriver genoprettelseskoden og gemmer den på et sikkert sted." + "message": "Opsætning af totrins-login kan permanent låse en bruger ude af sin Bitwarden-konto. En gendannelseskode muliggør kontoadgang, såfremt den normale totrins-loginudbyder ikke længere kan bruges (f.eks. ved tab af en enhed). Bitwarden-supporten kan ikke hjælpe ved mistet kontoadgang. Det anbefales at nedskrive/udskrive gendannelseskoden og gemmer denne et sikkert sted." }, "viewRecoveryCode": { "message": "Vis gendannelseskode" @@ -1348,19 +1357,19 @@ "message": "Fjern Adgang" }, "twoStepLoginProviderEnabled": { - "message": "Denne to-trins-login udbyder er aktiveret på din konto." + "message": "Denne totrins-loginudbyder er aktiveret på kontoen." }, "twoStepLoginAuthDesc": { - "message": "Indtast din hovedadgangskode for at ændre to-trin-login indstillinger." + "message": "Angiv hovedadgangskoden for at ændre indstillinger for totrins-login." }, "twoStepAuthenticatorDesc": { - "message": "Følg disse trin for at konfigurere to-trins-login med en autentiseringsapp:" + "message": "Følg disse trin for at opsætte totrins-login vha. en godkendelses-app:" }, "twoStepAuthenticatorDownloadApp": { - "message": "Download en to-trins-autentiseringsapp" + "message": "Download en totrins godkendelses-app" }, "twoStepAuthenticatorNeedApp": { - "message": "Brug for en to-trins-autentiseringsapp? Download en af følgende" + "message": "Behov for en totrins godkendelses-app? Download en af følgende" }, "iosDevices": { "message": "iOS-enheder" @@ -1387,10 +1396,10 @@ "message": "Hvis du har brug for at tilføje den til en anden enhed, er nedenstående QR-koden (eller nøglen), der kræves af din autentificeringsapp." }, "twoStepDisableDesc": { - "message": "Er du sikker på, at du vil deaktivere denne to-trins-login udbyder?" + "message": "Sikker på, at denne totrins-loginudbyder skal deaktiveres?" }, "twoStepDisabled": { - "message": "To-trins-login udbyder deaktiveret." + "message": "Totrins-loginudbyder deaktiveret." }, "twoFactorYubikeyAdd": { "message": "Tilføj en ny YubiKey til din konto" @@ -1408,7 +1417,7 @@ "message": "Gem formularen." }, "twoFactorYubikeyWarning": { - "message": "På grund af platformbegrænsninger kan YubiKeys ikke bruges på alle Bitwarden-applikationer. Du bør aktivere en anden to-trins login udbyder, så du kan få adgang til din konto, når YubiKeys ikke kan benyttes. Understøttede platforme:" + "message": "Grundet platformsbegrænsninger kan YubiKeys ikke bruges i alle Bitwarden-applikationer. Man bør opsætter en anden totrins-loginudbyder, så man kan tilgå sin konto, når YubiKeys ikke kan benyttes. Understøttede platforme:" }, "twoFactorYubikeySupportUsb": { "message": "Web-boks, desktop-program, CLI og alle browserudvidelser på en enhed med en USB-port, der kan benyttes af din YubiKey." @@ -1471,7 +1480,7 @@ "message": "API værtsnavn" }, "twoFactorEmailDesc": { - "message": "Følg disse trin for at konfigurere to-trins-login med e-mail:" + "message": "Følg disse trin for at opsætte totrins-login vha. e-mail:" }, "twoFactorEmailEnterEmail": { "message": "Indtast den e-mail, som du ønsker skal modtage verifikationskoder" @@ -1510,7 +1519,7 @@ "message": "Gem formularen." }, "twoFactorU2fWarning": { - "message": "På grund af platformbegrænsninger kan FIDO U2F ikke bruges på alle Bitwarden-applikationer. Du bør aktivere en anden to-trins login udbyder, så du kan få adgang til din konto, når FIDO U2F ikke kan benyttes. Understøttede platforme:" + "message": "Grundet platformsbegrænsninger kan FIDO U2F ikke bruges i alle Bitwarden-applikationer. Man bør opsætte en anden totrins-loginudbyder, så man kan tilgå sin konto, når FIDO U2F ikke kan benyttes. Understøttede platforme:" }, "twoFactorU2fSupportWeb": { "message": "Web-boks og browserudvidelser på en desktop/laptop med en U2F-aktiveret browser (Chrome, Opera, Vivaldi eller Firefox med FIDO U2F aktiveret)." @@ -1519,22 +1528,22 @@ "message": "Venter på at du trykker på knappen på din sikkerhedsnøgle" }, "twoFactorU2fClickSave": { - "message": "Klik på \"Gem\" knappen nedenfor for at aktivere denne sikkerhedsnøgle til to-trins login." + "message": "Klik på knappen \"Gem\" nedenfor for at aktivere denne sikkerhedsnøgle til totrins-login." }, "twoFactorU2fProblemReadingTryAgain": { "message": "Der opstod et problem med at læse sikkerhedsnøglen. Prøv igen." }, "twoFactorWebAuthnWarning": { - "message": "På grund af platformsbegrænsninger kan WebAuthn ikke bruges på alle Bitwarden-applikationer. Du bør aktivere en anden to-trins loginudbyder, så du kan få adgang til din konto, når WebAuthn ikke kan benyttes. Understøttede platforme:" + "message": "Grundet platformsbegrænsninger kan WebAuthn ikke bruges i alle Bitwarden-applikationer. Man bør opsætte en anden totrins-loginudbyder, så man kan tilgå sin konto, når WebAuthn ikke kan benyttes. Understøttede platforme:" }, "twoFactorWebAuthnSupportWeb": { "message": "Web-boks og browserudvidelser på en stationær/bærbar computer med en WebAuthn-aktiveret browser (Chrome, Opera, Vivaldi eller Firefox med FIDO U2F aktiveret)." }, "twoFactorRecoveryYourCode": { - "message": "Din Bitwarden to-trins-login gendannelseskode" + "message": "Bitwarden totrins-login gendannelseskoden" }, "twoFactorRecoveryNoCode": { - "message": "Du har ikke aktiveret nogle to-trins-login-udbydere endnu. Når du har aktiveret en to-trins-login-udbyder, kan du se din gendannelseskode her." + "message": "Der er ikke opsat nogle totrins-loginudbydere endnu. Efter at have opsat én, kan man se sin gendannelseskode her." }, "printCode": { "message": "Udskriv kode", @@ -1547,6 +1556,10 @@ "message": "Identificér og luk sikkerhedshuller i dine onlinekonti ved at klikke på rapporterne nedenfor.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identificér og luk sikkerhedshuller i organisationskonti ved at klikke på rapporterne nedenfor.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Usikre hjemmesider" }, @@ -1569,16 +1582,16 @@ "message": "Ingen elementer i din boks har ikke-sikrede URI'er." }, "inactive2faReport": { - "message": "Inaktive to-trins login" + "message": "Inaktive totrins-login" }, "inactive2faReportDesc": { - "message": "To-trins login tilføjer et lag af beskyttelse til dine konti. Slå to-trins login til ved hjælp af Bitwarden Authenticator for disse konti, eller brug en alternativ metode." + "message": "Med totrins-login føjer man et beskyttelseslag til sine konti. Opsæt totrins-login vha. Bitwarden Authenticator for disse konti, eller brug en alternativ metode." }, "inactive2faFound": { - "message": "Logins uden 2FA fundet" + "message": "Logins uden totrinsopsætning fundet" }, "inactive2faFoundDesc": { - "message": "Vi fandt $COUNT$ websted(er) i din boks, der muligvis ikke er konfigureret med to-faktor autentificering (ifølge 2fa.directory). For yderligere at beskytte disse konti bør du aktivere to-faktor autentificering.", + "message": "$COUNT$ websted(er) fundet i boksen, som muligvis ikke er opsat med totrins-login (jf. 2fa.directory). For yderligere at beskytte disse konti, bør totrins-login aktiveres.", "placeholders": { "count": { "content": "$1", @@ -1587,7 +1600,7 @@ } }, "noInactive2fa": { - "message": "Der blev ikke fundet nogen hjemmesider i din boks med manglende konfiguration af to-faktor autentificering." + "message": "Ingen websteder med manglende opsætning af totrins-login fundet i boksen." }, "instructions": { "message": "Instruktioner" @@ -1749,11 +1762,11 @@ "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." }, "accountBalance": { - "message": "Kontobalance", + "message": "Kontosaldo", "description": "Financial term. In the case of Bitwarden, a positive balance means that you owe money, while a negative balance means that you have a credit (Bitwarden owes you money)." }, "addCredit": { - "message": "Indbetal beløb", + "message": "Tilføj beløb", "description": "Add more credit to your account's balance." }, "amount": { @@ -1774,16 +1787,16 @@ "description": "Another way of saying \"Get a Premium membership\"" }, "premiumUpdated": { - "message": "Du har opgraderet til premium." + "message": "Du har opgraderet til Premium." }, "premiumUpgradeUnlockFeatures": { - "message": "Opgradér din konto til et premium-medlemskab og lås op for nogle fantastiske ekstra funktioner." + "message": "Opgradér din konto til et Premium-medlemskab og oplås nogle fantastiske ekstrafunktioner." }, "premiumSignUpStorage": { "message": "1 GB krypteret lager til vedhæftede filer." }, "premiumSignUpTwoStep": { - "message": "Yderligere to-trins-loginmuligheder såsom YubiKey, FIDO U2F og Duo." + "message": "Yderligere totrins login-muligheder, såsom YubiKey, FIDO U2F og Duo." }, "premiumSignUpEmergency": { "message": "Nødadgang" @@ -1798,7 +1811,7 @@ "message": "Prioriteret kundeservice." }, "premiumSignUpFuture": { - "message": "Alle fremtidige premium-funktioner. Mere kommer snart!" + "message": "Alle fremtidige Premium-funktioner. Flere kommer snart!" }, "premiumPrice": { "message": "Alt dette for kun $PRICE$ /år!", @@ -1813,10 +1826,10 @@ "message": "Tilføjelser" }, "premiumAccess": { - "message": "Premium adgang" + "message": "Premium-adgang" }, "premiumAccessDesc": { - "message": "Du kan tilføje premium adgang til alle medlemmer af din organisation for $PRICE$ /$INTERVAL$.", + "message": "Premium-adgang kan tilføjes for alle medlemmer af din organisation for $PRICE$ /$INTERVAL$.", "placeholders": { "price": { "content": "$1", @@ -1925,7 +1938,7 @@ "message": "Er du sikker på at du vil opsige? Du vil miste adgangen til alle abonnementsfunktionerne ved afslutningen af denne faktureringsperiode." }, "canceledSubscription": { - "message": "Abonnementet er blevet opsagt." + "message": "Abonnementet er opsagt" }, "neverExpires": { "message": "Udløber aldrig" @@ -2066,7 +2079,7 @@ } }, "uploadLicenseFilePremium": { - "message": "For at opgradere din konto til et premium-medlemskab skal du uploade en gyldig licensfil." + "message": "For at opgradere din konto til et Premium-medlemskab, så upload en gyldig licensfil." }, "uploadLicenseFileOrg": { "message": "For at oprette en lokal-hosted organisation, skal du uploade en gyldig licensfil." @@ -2087,22 +2100,22 @@ "message": "Denne konto ejes af en virksomhed." }, "billingEmail": { - "message": "Fakturerings-email" + "message": "Faktureringse-mail" }, "businessName": { "message": "Firmanavn" }, "chooseYourPlan": { - "message": "Vælg dit abonnement" + "message": "Vælg abonnementstype" }, "users": { "message": "Brugere" }, "userSeats": { - "message": "Antal brugere" + "message": "Antal brugerpladser" }, "additionalUserSeats": { - "message": "Yderligere brugere" + "message": "Yderligere brugerpladser" }, "userSeatsDesc": { "message": "# brugere" @@ -2224,13 +2237,13 @@ "message": "Lokal-hosting (valgfri)" }, "usersGetPremium": { - "message": "Brugere får adgang til premium-funktioner" + "message": "Brugere får adgang til Premium-funktioner" }, "controlAccessWithGroups": { - "message": "Kontroller brugeradgang med grupper" + "message": "Styr brugeradgang via grupper" }, "syncUsersFromDirectory": { - "message": "Synkronisér dine brugere og grupper fra et kartotek" + "message": "Synk brugerne og grupperne via et kartotek" }, "trackAuditLogs": { "message": "Spor brugerhandlinger med revisionslogfiler" @@ -2290,7 +2303,7 @@ "message": "Din nye organisation er klar til brug!" }, "organizationUpgraded": { - "message": "Din organisation er blevet opgraderet." + "message": "Organisation opgraderet" }, "leave": { "message": "Forlad" @@ -2404,7 +2417,7 @@ } }, "userUsingTwoStep": { - "message": "Denne bruger benytter to-trins login for at beskytte kontoen." + "message": "Denne bruger benytter totrins-login for at beskytte kontoen." }, "userAccessAllItems": { "message": "Denne bruger kan få adgang til og ændre alle elementer." @@ -2494,19 +2507,19 @@ "message": "Ændrede konto kodeord." }, "enabledUpdated2fa": { - "message": "Aktiverede/opdaterede to-trins login." + "message": "Totrins-login gemt" }, "disabled2fa": { - "message": "Deaktiverede to-trins-login." + "message": "Totrins-login deaktiveret" }, "recovered2fa": { - "message": "Gendannede konto fra to-trins-login." + "message": "Konto gendannet fra totrins-login" }, "failedLogin": { "message": "Loginforsøg mislykkedes med forkert adgangskode." }, "failedLogin2fa": { - "message": "Loginforsøg mislykkedes med forkert to-trins-login." + "message": "Loginforsøg mislykkedes med forkert totrins-login." }, "exportedVault": { "message": "Eksporterede boks." @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viste sikkerhedskode til element $ID$.", "placeholders": { @@ -2971,13 +2993,13 @@ "message": "Husk e-mail" }, "recoverAccountTwoStepDesc": { - "message": "Hvis du ikke kan få adgang til din konto via dine normale to-trins-login metoder, kan du bruge din to-trins-login gendannelseskode til at deaktivere alle to-trins-udbydere på din konto." + "message": "Kan man ikke tilgå sin konto via de normale totrins-login metoder, kan man bruge sin totrins-login gendannelseskode til at deaktivere alle totrinsudbydere på sin konto." }, "recoverAccountTwoStep": { - "message": "Gendan to-trins-login på konto" + "message": "Gendan totrins-login på konto" }, "twoStepRecoverDisabled": { - "message": "To-trins-login er blevet deaktiveret på din konto." + "message": "Totrins-login er deaktiveret på kontoen." }, "learnMore": { "message": "Få mere at vide" @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Min organisation" }, + "organizationInfo": { + "message": "Organisationsinfo" + }, "deleteOrganization": { "message": "Slet organisation" }, @@ -3025,7 +3050,7 @@ "message": "Organisationen og alle tilknyttede data er blevet slettet." }, "organizationUpdated": { - "message": "Organisation opdateret" + "message": "Organisation gemt" }, "taxInformation": { "message": "Skatteoplysninger" @@ -3038,7 +3063,7 @@ "description": "A billing plan/package. For example: Families, Teams, Enterprise, etc." }, "changeBillingPlan": { - "message": "Upgradér abonnement", + "message": "Opgradér abonnementstype", "description": "A billing plan/package. For example: Families, Teams, Enterprise, etc." }, "changeBillingPlanUpgrade": { @@ -3071,10 +3096,10 @@ "message": "Betaling med en bankkonto er kun tilgængelig for kunder i USA. Du bliver bedt om at bekræfte din bankkonto. Vi vil lave to små indskud inden for de næste 1-2 hverdage. Indtast disse beløb på organisationens faktureringsside for at bekræfte bankkontoen." }, "verifyBankAccountFailureWarning": { - "message": "Udelades det at bekræfte bankkontoen resulterer det i en manglende betaling, og dit abonnement deaktiveres." + "message": "Undlades bekræftelse af bankkontoen, vil betaling ikke ske, og abonnementet suspenderes." }, "verifiedBankAccount": { - "message": "Bankkonto er blevet bekræftet." + "message": "Bankkonto bekræftet" }, "bankAccount": { "message": "Bankkonto" @@ -3115,7 +3140,7 @@ "message": "Indstil en pladsgrænse for dit abonnement. Når denne grænse er nået, vil du ikke kunne invitere nye brugere." }, "maxSeatLimit": { - "message": "Maksimal pladsgrænse (valgfrit)", + "message": "Pladskvote (valgfrit)", "description": "Upper limit of seats to allow through autoscaling" }, "maxSeatCost": { @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Dit abonnement giver mulighed for i alt $COUNT$ brugere. Dit abonnement er sponsoreret og faktureret til en ekstern organisation.", + "message": "Dit abonnement muliggør i alt $COUNT$ brugere. Abonnement er sponsoreret og faktureres til en ekstern organisation.", "placeholders": { "count": { "content": "$1", @@ -3232,7 +3257,7 @@ "message": "Opdatér nøgle" }, "updateEncryptionKey": { - "message": "Opdatér Krypteringsnøgle" + "message": "Opdatér krypteringsnøgle" }, "updateEncryptionKeyShortDesc": { "message": "Du bruger i øjeblikket en forældet krypteringsmetode." @@ -3328,10 +3353,10 @@ "description": "ex. Date this password was updated" }, "organizationIsDisabled": { - "message": "Organisationen er deaktiveret." + "message": "Organisation suspenderet" }, "disabledOrganizationFilterError": { - "message": "Elementer i deaktiverede organisationer kan ikke tilgås. Kontakt din organisationsejer for at få hjælp." + "message": "Emner i deaktiverede organisationer kan ikke tilgås. Kontakt oganisationsejeren for hjælp." }, "licenseIsExpired": { "message": "Licensen er udløbet." @@ -3476,10 +3501,10 @@ "message": "Kræv at medlemmer opsætter totrins-login." }, "twoStepLoginPolicyWarning": { - "message": "Organisationsmedlemmer, som ikke er ejere eller administratorer og ikke har totrins-login aktiveret på deres konto, vil blive fjernet fra organisationen og vil modtage en e-mail med besked om ændringen." + "message": "Organisationsmedlemmer (bortset fra ejere/administratorer), som ikke har totrins-login aktiveret på deres konto, fjernes fra organisationen og underrettes om ændringen pr. e-mail." }, "twoStepLoginPolicyUserWarning": { - "message": "Du er medlem af en organisation, der kræver at to-trins login er aktiveret på din brugerkonto. Hvis du deaktiverer alle to-trins login-udbydere, fjernes du automatisk fra disse organisationer." + "message": "Du er medlem af en organisation, der kræver to-trins login opsat for brugerkonti. Deaktiverer du alle totrins-loginudbydere, fjernes du automatisk fra disse organisationer." }, "passwordGeneratorPolicyDesc": { "message": "Angiv krav til adgangskodegenerator." @@ -3688,7 +3713,13 @@ "message": "SSO validering mislykkedes" }, "ssoIdentifierRequired": { - "message": "Organisationsidentifikator er påkrævet." + "message": "Organisationsidentifikator kræves." + }, + "ssoIdentifier": { + "message": "SSO-identifikator" + }, + "ssoIdentifierHint": { + "message": "Oplys dette ID til medlemmerne til brug for indlogning med SSO." }, "unlinkSso": { "message": "Fjern SSO tilknytning" @@ -3709,13 +3740,13 @@ "message": "Din nuværende organisation har en politik, der ikke tillader dig at deltage i mere end en organisation. Kontakt din organisations administratorer, eller tilmeld dig fra en anden Bitwarden-konto." }, "singleOrgPolicyWarning": { - "message": "Organisationsmedlemmer, der ikke er ejere eller administratorer og allerede er medlem af en anden organisation, fjernes fra din organisation." + "message": "Organisationsmedlemmer, som ikke er ejere eller admins og allerede medlem af en anden organisation, fjernes fra organisationen." }, "requireSso": { "message": "Kræv single sign-on-godkendelse" }, "requireSsoPolicyDesc": { - "message": "Kræv at medlemmer logger på med virksomheds Single Sign-On-metoden." + "message": "Kræv at medlemmer logger ind vha. virksomheds Single Sign-On metoden." }, "prerequisite": { "message": "Forudsætning" @@ -3724,10 +3755,10 @@ "message": "Enkel organisation virksomhedspolitikken skal være aktiveret, før denne politik aktiveres." }, "requireSsoPolicyReqError": { - "message": "Enkelt organisationspolitik er ikke aktiveret." + "message": "Single organization-politik er ikke opsat." }, "requireSsoExemption": { - "message": "Organisationsejere og administratorer er undtaget fra denne politik." + "message": "Denne politik håndhæves ikke for organisationsejere og -admins." }, "sendTypeFile": { "message": "Fil" @@ -3736,7 +3767,7 @@ "message": "Tekst" }, "createSend": { - "message": "Opret ny Send", + "message": "Ny Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { @@ -3744,11 +3775,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Send oprettet", + "message": "Send gemt", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Send opdateret", + "message": "Send gemt", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deletedSend": { @@ -3782,14 +3813,14 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "maxAccessCount": { - "message": "Maksimal antal tilgange" + "message": "Maksimalt adgangsantal" }, "maxAccessCountDesc": { "message": "Hvis opsat, vil brugere ikke længere kunne tilgå denne Send, når det maksimale adgangsantal er nået.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Aktuelt antal tilgange" + "message": "Aktuelt adgangsantal" }, "sendPasswordDesc": { "message": "Valgfrit brugeradgangskodekrav for tilgang til denne Send.", @@ -3810,7 +3841,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "copySendLink": { - "message": "Kopiér Send link", + "message": "Kopiér Send-link", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "removePassword": { @@ -3851,11 +3882,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendProtectedPasswordDontKnow": { - "message": "Kender du ikke adgangskoden? Bed afsenderen om den nødvendige adgangskode for at få adgang til denne Send.", + "message": "Kender ikke adgangskoden? Bed afsenderen om adgangskoden, der kræves for at tilgå denne Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendHiddenByDefault": { - "message": "Denne Send er som standard skjult. Du kan skifte synlighed ved hjælp af knappen nedenfor.", + "message": "Denne Send er som standard skjult. Dens synlighed kan ændres vha. knappen nedenfor.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "downloadFile": { @@ -3874,13 +3905,13 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "emergencyAccess": { - "message": "Nødtilgang" + "message": "Nødadgang" }, "emergencyAccessDesc": { "message": "Tildel og håndtér nødadgang for betroede kontakter. Betroede kontakter kan anmode om adgang til enten at se eller overtage din konto i nødstilfælde. Besøg vores hjælpeside for mere information og detaljer om, hvordan nul-videndeling fungerer." }, "emergencyAccessOwnerWarning": { - "message": "Du er ejer af en eller flere organisationer. Hvis du tildeler overtagelsesadgang til en nødkontakt, kan de bruge alle dine tilladelser som ejer efter en overtagelse." + "message": "Du er ejer af en eller flere organisationer. Tildeler du overtagelsesrettighed til en nødkontakt, kan vedkommende bruge alle dine tilladelser som ejer efter en overtagelse." }, "trustedEmergencyContacts": { "message": "Betroede nødkontakter" @@ -4001,7 +4032,7 @@ } }, "emergencyApproved": { - "message": "Nødadgang godkendt." + "message": "Nødadgang godkendt" }, "emergencyRejected": { "message": "Nødadgang afvist" @@ -4038,11 +4069,11 @@ "message": "Organisationsbrugere, der kan håndtere organisationens politikker, er undtaget fra denne politiks håndhævelse." }, "sendDisabled": { - "message": "Send deaktiveret", + "message": "Send fjernet", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { - "message": "Du kan grundet en virksomhedspolitik kun slette en eksisterende Send.", + "message": "Grundet en virksomhedspolitik kan kun en eksisterende Send slettes.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptions": { @@ -4091,6 +4122,9 @@ "permissions": { "message": "Tilladelser" }, + "permission": { + "message": "Tilladelse" + }, "managerPermissions": { "message": "Bestyrer-tilladelser" }, @@ -4116,10 +4150,10 @@ "message": "Opret nye samlinger" }, "editAnyCollection": { - "message": "Redigér en samling" + "message": "Redigér enhver samling" }, "deleteAnyCollection": { - "message": "Slet en samling" + "message": "Slet enhver samling" }, "manageAssignedCollections": { "message": "Håndtér tildelte samlinger" @@ -4158,10 +4192,10 @@ "message": "En organisationspolitik påvirker dine ejerskabsmuligheder." }, "personalOwnershipPolicyInEffectImports": { - "message": "En organisationspolitik har deaktiveret import af emner til din personlige boks." + "message": "En organisationspolitik hindrer import af emner til den personlige boks." }, "personalOwnershipCheckboxDesc": { - "message": "Deaktivér personligt ejerskab for organisationsbrugere" + "message": "Fjern personligt ejerskab for organisationsbrugere" }, "textHiddenByDefault": { "message": "Når Send tilgås, skjul som standard teksten", @@ -4496,6 +4530,10 @@ "clients": { "message": "Klienter" }, + "client": { + "message": "Klient", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Udbyder admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input må maks. udgøre $COUNT$ tegn.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ felt(er) ovenfor kræver din opmærksomhed.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Til" }, + "members": { + "message": "Medlemmer" + }, + "reporting": { + "message": "Rapportering" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Antal brugere" }, + "loggingInAs": { + "message": "Logger ind som" + }, + "notYou": { + "message": "Ikke dig?" + }, "multiSelectPlaceholder": { "message": "-- Type at filtrere --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Ryd alt" + }, + "from": { + "message": "Fra" + }, + "to": { + "message": "Til" + }, + "member": { + "message": "Medlem" + }, + "update": { + "message": "Opdatér" + }, + "role": { + "message": "Rolle" + }, + "canView": { + "message": "Kan se" + }, + "canViewExceptPass": { + "message": "Kan se, undtagen adgangskoder" + }, + "canEdit": { + "message": "Kan redigere" + }, + "canEditExceptPass": { + "message": "Kan redigere, undtagen adgangskoder" + }, + "group": { + "message": "Gruppe" + }, + "groupAccessAll": { + "message": "Denne gruppe kan tilgå og ændre alle emner." + }, + "memberAccessAll": { + "message": "Dette medlem kan tilgå og ændre alle emner." } } diff --git a/apps/web/src/locales/de/messages.json b/apps/web/src/locales/de/messages.json index e0a228f8a75..73f2b544577 100644 --- a/apps/web/src/locales/de/messages.json +++ b/apps/web/src/locales/de/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Mit Gerät anmelden muss in den Einstellungen der Bitwarden Mobile App aktiviert sein. Brauchst du eine andere Möglichkeit?" }, + "loginWithMasterPassword": { + "message": "Mit Master-Passwort anmelden" + }, "createAccount": { "message": "Konto erstellen" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Ein wiedererkennbares Bild neben jeden Zugangsdaten anzeigen." }, - "enableGravatars": { - "message": "Gravatare aktivieren", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Nutze Profilbilder von gravatar.com." - }, "enableFullWidth": { "message": "Darstellung in voller Breite aktivieren", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Zwei-Faktor-Authentifizierung" }, + "twoStepLoginEnforcement": { + "message": "Erzwungene Zwei-Faktor-Authentifizierung" + }, "twoStepLoginDesc": { "message": "Sichern Sie Ihr Konto mit Zwei-Faktor-Authentifizierung." }, - "twoStepLoginOrganizationDesc": { - "message": "Zwei-Faktor-Authentifizierung für die Benutzer Ihrer Organisation verlangen, indem Sie Anbieter auf Organisationsebene konfigurieren." + "twoStepLoginOrganizationDescStart": { + "message": "Erzwinge Zwei-Faktor-Authentifizierung in Bitwarden für Mitglieder durch Verwendung der ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Richtlinie für Zwei-Faktor-Authentifizierung" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Verwende die folgenden Optionen, um Zwei-Faktor-Authentifizierung über Duo zu erzwingen." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Wenn SSO eingerichtet oder dies geplant ist, wird die Zwei-Faktor-Authentifizierung möglicherweise bereits über den Identity Provider erzwungen." }, "twoStepLoginRecoveryWarning": { "message": "Durch die Aktivierung der Zwei-Faktor-Authentifizierung könnten Sie sich dauerhaft aus Ihrem Bitwarden-Konto aussperren. Ein Wiederherstellungscode ermöglicht es Ihnen, auf Ihr Konto zuzugreifen, falls Sie Ihren normalen Zwei-Faktor-Anbieter nicht mehr verwenden können (z.B. wenn Sie Ihr Gerät verlieren). Der Bitwarden-Support kann Ihnen nicht helfen, wenn Sie den Zugang zu Ihrem Konto verlieren. Wir empfehlen Ihnen, den Wiederherstellungscode aufzuschreiben oder auszudrucken und an einem sicheren Ort aufzubewahren." @@ -1547,6 +1556,10 @@ "message": "Identifiziere und schließe Sicherheitslücken in deinen Online-Konten, indem du auf die Berichte unten klickst.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identifiziere und schließe Sicherheitslücken in den Konten deiner Organisation, indem du auf die folgenden Berichte klickst.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Bericht über ungesicherte Websites" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Kartennummer für Eintrag $ID$ angesehen.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Sicherheitscode für Eintrag $ID$ angesehen.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Meine Organisation" }, + "organizationInfo": { + "message": "Organisationsinfo" + }, "deleteOrganization": { "message": "Organisation löschen" }, @@ -3368,7 +3393,7 @@ "message": "Schwaches Master-Passwort" }, "weakMasterPasswordDesc": { - "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" + "message": "Das Master-Passwort, das du gewählt hast, ist schwach. Du solltest ein starkes Master-Passwort (oder eine Passphrase) auswählen, um dein Bitwarden-Konto richtig zu schützen. Bist du sicher, dass du dieses Master-Passwort verwenden willst?" }, "rotateAccountEncKey": { "message": "Auch den Verschlüsselungscode meines Kontos aktualisieren" @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Unternehmenskennung ist erforderlich." }, + "ssoIdentifier": { + "message": "SSO-Kennung" + }, + "ssoIdentifierHint": { + "message": "Gib den Mitgliedern diese ID, um sich mit SSO anzumelden." + }, "unlinkSso": { "message": "SSO Verknüpfung aufheben" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Berechtigungen" }, + "permission": { + "message": "Berechtigung" + }, "managerPermissions": { "message": "Manager-Berechtigungen" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Kunden" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Anbieter-Administrator" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Die Eingabe darf nicht länger als $COUNT$ Zeichen sein.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ Feld(er) oben benötigt deine Aufmerksamkeit.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Ein" }, + "members": { + "message": "Mitglieder" + }, + "reporting": { + "message": "Bericht" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Anzahl der Benutzer" }, + "loggingInAs": { + "message": "Einloggen als" + }, + "notYou": { + "message": "Nicht du?" + }, "multiSelectPlaceholder": { "message": "-- Typ zum Filtern --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Alles löschen" + }, + "from": { + "message": "Von" + }, + "to": { + "message": "Bis" + }, + "member": { + "message": "Mitglied" + }, + "update": { + "message": "Aktualisierung" + }, + "role": { + "message": "Rolle" + }, + "canView": { + "message": "Darf anzeigen" + }, + "canViewExceptPass": { + "message": "Darf anzeigen, Passwörter ausgenommen" + }, + "canEdit": { + "message": "Darf bearbeiten" + }, + "canEditExceptPass": { + "message": "Darf bearbeiten, Passwörter ausgenommen" + }, + "group": { + "message": "Gruppe" + }, + "groupAccessAll": { + "message": "Diese Gruppe darf auf alle Einträge zugreifen und diese ändern." + }, + "memberAccessAll": { + "message": "Dieses Mitglied darf auf alle Elemente zugreifen und diese ändern." } } diff --git a/apps/web/src/locales/el/messages.json b/apps/web/src/locales/el/messages.json index 826f582e067..ee4f1426f01 100644 --- a/apps/web/src/locales/el/messages.json +++ b/apps/web/src/locales/el/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Δημιουργία Λογαριασμού" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Ενεργοποίηση Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Χρήση εικόνων avatar από gravatar.com." - }, "enableFullWidth": { "message": "Ενεργοποίηση διάταξης πλήρους πλάτους", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Σύνδεση σε δύο βήματα" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Ασφαλίστε το λογαριασμό σας απαιτώντας ένα επιπλέον βήμα κατά τη σύνδεση." }, - "twoStepLoginOrganizationDesc": { - "message": "Απαιτήστε σύνδεση σε δύο βήματα για τους χρήστες του οργανισμού σας, ρυθμίζοντας τους παρόχους σε επίπεδο οργανισμού." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Η ενεργοποίηση σύνδεσης δύο βημάτων μπορεί να κλειδώσει οριστικά το λογαριασμό σας από το Bitwarden. Ένας κωδικός ανάκτησης σάς επιτρέπει να έχετε πρόσβαση στον λογαριασμό σας σε περίπτωση που δεν μπορείτε πλέον να χρησιμοποιήσετε τη σύνδεση δύο βημάτων (π. χ. χάνετε τη συσκευή σας). Η υποστήριξη πελατών του Bitwarden δεν θα είναι σε θέση να σας βοηθήσει αν χάσετε την πρόσβαση στο λογαριασμό σας. Συνιστούμε να γράψετε ή να εκτυπώσετε τον κωδικό ανάκτησης και να τον φυλάξετε σε ασφαλές μέρος." @@ -1547,6 +1556,10 @@ "message": "Προσδιορίστε και κλείστε τα κενά ασφαλείας στους online λογαριασμούς σας κάνοντας κλικ στις παρακάτω αναφορές.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Αναφορά Μη-Ασφαλών Ιστοσελίδων" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Προβεβλημένος κωδικός ασφαλείας για το στοιχείο $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Ο οργανισμός μου" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Διαγραφή Οργανισμού" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Απαιτείται αναγνωριστικό οργανισμού." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Αποσύνδεση SSO" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Άδειες" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Πελάτες" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Διαχειριστής Παρόχου" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Αριθμός χρηστών" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json index c874fcf6ad3..8fe03453b3f 100644 --- a/apps/web/src/locales/en/messages.json +++ b/apps/web/src/locales/en/messages.json @@ -587,12 +587,15 @@ "loginOrCreateNewAccount": { "message": "Log in or create a new account to access your secure vault." }, - "loginWithDevice" : { + "loginWithDevice": { "message": "Log in with device" }, "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Create account" }, @@ -735,7 +738,7 @@ "noOrganizationsList": { "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." }, - "notificationSentDevice":{ + "notificationSentDevice": { "message": "A notification has been sent to your device." }, "versionNumber": { @@ -1575,6 +1578,10 @@ "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden personal or organization Vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecure websites" }, @@ -2519,7 +2526,7 @@ "message": "Logged in" }, "changedPassword": { - "message": "Account password saved" + "message": "Changed account password" }, "enabledUpdated2fa": { "message": "Two-step login saved" @@ -2528,7 +2535,7 @@ "message": "Two-step login turned off" }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2540,10 +2547,10 @@ "message": "Vault exported" }, "exportedOrganizationVault": { - "message": "Organization vault exported" + "message": "Exported organization vault." }, "editedOrgSettings": { - "message": "Organization settings saved" + "message": "Edited organization settings." }, "createdItemId": { "message": "Created item $ID$.", @@ -2611,6 +2618,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -3023,7 +3039,7 @@ "message": "My organization" }, "organizationInfo": { - "message": "Organization Info" + "message": "Organization info" }, "deleteOrganization": { "message": "Delete organization" @@ -3698,7 +3714,7 @@ "message": "Organization identifier" }, "ssoLogInWithOrgIdentifier": { - "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + "message": "Log in using your organization's single sign-on portal. Please enter your organization's SSO identifier to begin." }, "enterpriseSingleSignOn": { "message": "Enterprise single sign-on" @@ -3719,7 +3735,13 @@ "message": "SSO validation failed" }, "ssoIdentifierRequired": { - "message": "Organization identifier is required." + "message": "Organization SSO identifier is required." + }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." }, "ssoIdentifier": { "message": "SSO Identifier" @@ -4330,7 +4352,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4339,7 +4361,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -5460,6 +5482,12 @@ "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, diff --git a/apps/web/src/locales/en_GB/messages.json b/apps/web/src/locales/en_GB/messages.json index 2d44c173684..aea05dbf573 100644 --- a/apps/web/src/locales/en_GB/messages.json +++ b/apps/web/src/locales/en_GB/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be enabled in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Create account" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognisable image next to each login." }, - "enableGravatars": { - "message": "Show Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Two-step login" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organisation's users by configuring providers at the organisation level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (e.g. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecure Websites" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My organisation" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organisation" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Organisation identifier is required." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Unlink SSO" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider Admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/en_IN/messages.json b/apps/web/src/locales/en_IN/messages.json index 56d8bf940fb..04e039f3a7a 100644 --- a/apps/web/src/locales/en_IN/messages.json +++ b/apps/web/src/locales/en_IN/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Create account" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Enable Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Enable full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Two-step login" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organisation's users by configuring providers at the organisation level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (e.g. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecured websites report" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My organisation" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organisation" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation ID" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Organisation identifier is required." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Unlink SSO" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/eo/messages.json b/apps/web/src/locales/eo/messages.json index 88a28706610..9b42192d80e 100644 --- a/apps/web/src/locales/eo/messages.json +++ b/apps/web/src/locales/eo/messages.json @@ -209,11 +209,11 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Detektilo de interrespondo", + "message": "Eltrovado de kongruo", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { - "message": "Implicita detektilo de interrespondo", + "message": "Implicita eltrovado de kongruo", "description": "Default URI match detection for auto-fill." }, "never": { @@ -570,11 +570,14 @@ "message": "Ensalutu aŭ kreu novan konton por aliri vian sekuran trezorejon." }, "loginWithDevice": { - "message": "Log in with device" + "message": "Saluti kun la aparato" }, "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Saluti kun la ĉefpasvorto" + }, "createAccount": { "message": "Krei konton" }, @@ -603,7 +606,7 @@ "message": "Kiel ni nomu vin?" }, "masterPass": { - "message": "Majstra Pasvorto" + "message": "Ĉefpasvorto" }, "masterPassDesc": { "message": "La ĉefa pasvorto estas la pasvorto, kiun vi uzas por aliri vian trezorejon. Tre gravas, ke vi ne forgesu vian ĉefan pasvorton. Ne eblas retrovi la pasvorton, se vi forgesos ĝin." @@ -651,7 +654,7 @@ "message": "Master password must be at least 8 characters long." }, "masterPassDoesntMatch": { - "message": "La konfirmo de la ĉefa pasvorto ne interrespondas." + "message": "La konfirmo de la ĉefa pasvorto ne kongruas." }, "newAccountCreated": { "message": "Via nova konto kreiĝis! Vi nun povas ensaluti." @@ -915,7 +918,7 @@ "message": "This password will be used to export and import this file" }, "confirmMasterPassword": { - "message": "Confirm master password" + "message": "Konfirmi la ĉefpasvorton" }, "confirmFormat": { "message": "Confirm format" @@ -1184,7 +1187,7 @@ "message": "Nenio estis importita." }, "importEncKeyError": { - "message": "Eraro de deĉifrado de la elportaĵo. Via ŝlosilo de ĉifrado ne interrespondas kun la ŝlosilo de ĉifrado uzita por elporti la datenon." + "message": "Eraro de ĉifrado de la elporta dosiero. Via ŝlosilo de ĉifrado ne kongruas kun la ŝlosilo de ĉifrado uzita por elporti la datumojn." }, "selectFormat": { "message": "Elektu la formaton de la importa dosiero" @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Ebligi Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Uzu avatarajn bildojn ŝarĝitajn de gravatar.com." - }, "enableFullWidth": { "message": "Ebligi plenan larĝan aranĝon", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Du-ŝtupa saluto" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Sekurigu vian konton postulante plian paŝon kiam vi ensalutas." }, - "twoStepLoginOrganizationDesc": { - "message": "Postuli du-paŝan ensaluton por la uzantoj de via organizo per agordo de provizantoj je la organiza nivelo." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Ebligi du-paŝan ensaluton povas konstante elŝlosi vin el via Bitwarden-konto. Rekuperiga kodo permesas vin aliri vian konton, se vi ne plu povas uzi vian normalan du-paŝan ensalutan provizanton (ekz. vi perdas Bitwarden-subteno ne povos helpi vin se vi perdos aliron al via konto. Ni rekomendas al vi skribi aŭ presi la reakiran kodon kaj konservi ĝin en sekura loko. " @@ -1531,7 +1540,7 @@ "message": "Web vault and browser extensions on a desktop/laptop with a WebAuthn supported browser (Chrome, Opera, Vivaldi, or Firefox with FIDO U2F turned on)." }, "twoFactorRecoveryYourCode": { - "message": "Via kodo de senpaneigo de la du-ŝtupa saluto de Bitwarden" + "message": "Via kodo de senpaneigo de du-ŝtupa saluto de Bitwarden" }, "twoFactorRecoveryNoCode": { "message": "Vi ankoraŭ ne ebligis du-paŝajn ensalutajn provizantojn. Post kiam vi ebligis du-ŝtupan ensalut-provizanton, vi povas kontroli ĉi tie vian reakiran kodon." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Raporto pri Nesekurigitaj Retejoj" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Vidiĝis sekureca kodo de ero $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Mia Organizo" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Forigi Organizon" }, @@ -3112,7 +3137,7 @@ "message": "Enigu vian instalan identigilon" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "La identigilo de la organizo estas postulata." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Malkonekti SSO" }, @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permesoj" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Administranto de Provizanto" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Ŝaltita" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Nombro de uzantoj" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/es/messages.json b/apps/web/src/locales/es/messages.json index e878d003fde..63384e8f304 100644 --- a/apps/web/src/locales/es/messages.json +++ b/apps/web/src/locales/es/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Iniciar sesión con el dispositivo debe estar habilitado en los ajustes de la aplicación móvil Bitwarden. ¿Necesitas otra opción?" }, + "loginWithMasterPassword": { + "message": "Iniciar sesión con contraseña maestra" + }, "createAccount": { "message": "Crear cuenta" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Mostrar una imagen reconocible junto a cada inicio de sesión." }, - "enableGravatars": { - "message": "Habilitar Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Usa imágenes de avatares cargadas desde gravatar.com." - }, "enableFullWidth": { "message": "Habilitar diseño de ancho completo", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Autenticación en dos pasos" }, + "twoStepLoginEnforcement": { + "message": "Inicio de sesión en dos pasos" + }, "twoStepLoginDesc": { "message": "Protege tu cuenta requiriendo un paso adicional a la hora de acceder." }, - "twoStepLoginOrganizationDesc": { - "message": "Requiere autenticación en dos pasos para los usuarios de tu organización configurando los proveedores a nivel de organización." + "twoStepLoginOrganizationDescStart": { + "message": "Forzar opciones de inicio de sesión en dos pasos de Bitwarden para los miembros mediante el uso del ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Política de acceso en dos pasos" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Para hacer cumplir el inicio de sesión en dos pasos a través de Duo, utilice las siguientes opciones." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Si tiene la configuración de SSO o planea hacerlo, puede que el inicio de sesión en dos pasos ya se ejecute a través de su proveedor de identidad." }, "twoStepLoginRecoveryWarning": { "message": "Habilitar la autenticación en dos pasos puede impedirte acceder permanentemente a tu cuenta de Bitwarden. Un código de recuperación te permite acceder a la cuenta en caso de que no puedas usar más tu proveedor de autenticación en dos pasos (ej. si pierdes tu dispositivo). El soporte de Bitwarden no será capaz de asistirte si pierdes acceso a tu cuenta. Te recomendamos que escribas o imprimas este código y lo guardes en un lugar seguro." @@ -1547,6 +1556,10 @@ "message": "Identifique y cierre las lagunas de seguridad en sus cuentas en línea haciendo clic en los siguientes informes.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identifique y cierre las lagunas de seguridad en las cuentas de su organización haciendo clic en los siguientes informes.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Informes de sitios web no seguros" }, @@ -1578,7 +1591,7 @@ "message": "Inicios de sesión sin 2FA encontrados" }, "inactive2faFoundDesc": { - "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-step login (according to 2fa.directory). To further protect these accounts, you should set up two-step login.", + "message": "Hemos encontrado $COUNT$ sitios web en tu bóveda que pueden no estar configurados con inicio de sesión en dos pasos (de acuerdo a 2fa. irectory). Para proteger aún más estas cuentas, debe configurar el inicio de sesión en dos pasos.", "placeholders": { "count": { "content": "$1", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Número de tarjeta visto para el elemento $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Código de seguridad para el elemento $ID$ visto.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Mi organización" }, + "organizationInfo": { + "message": "Información de la organización" + }, "deleteOrganization": { "message": "Eliminar organización" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Se requiere un identificador de organización." }, + "ssoIdentifier": { + "message": "Identificador SSO" + }, + "ssoIdentifierHint": { + "message": "Proporcione este ID a sus miembros para iniciar sesión con SSO." + }, "unlinkSso": { "message": "Desenlazar SSO" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permisos" }, + "permission": { + "message": "Permiso" + }, "managerPermissions": { "message": "Permisos del Administrador" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Clientes" }, + "client": { + "message": "Cliente", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Administrador del Proveedor" }, @@ -4742,7 +4780,7 @@ "message": "Algoritmo mínimo de firma entrante" }, "spWantAssertionsSigned": { - "message": "Expect signed assertions" + "message": "Esperar afirmaciones firmadas" }, "spValidateCertificates": { "message": "Validar certificado" @@ -5066,7 +5104,7 @@ "message": "La sincronización de facturación proveé planes Famliares gratuitos para los miembros y facilidades de facturación avanzada, conectando la bóveda autoalojada de Bitwarden al servidor en la nube de Bitwarden." }, "billingSyncKeyDesc": { - "message": "A billing sync token from your cloud organization's subscription settings is required to complete this form." + "message": "Para completar este formulario se requiere un token de sincronización de facturación de la configuración de suscripción de su organización en la nube." }, "billingSyncKey": { "message": "Token de sincronización de facturación" @@ -5199,17 +5237,17 @@ "message": "Tipo de nombre de usuario" }, "plusAddressedEmail": { - "message": "Plus addressed email", + "message": "Correo electrónico más dirigido", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { - "message": "Use your email provider's sub-addressing capabilities." + "message": "Utiliza las capacidades de subdireccionamiento de tu proveedor de correo electrónico." }, "catchallEmail": { - "message": "Catch-all email" + "message": "Correo catch-all" }, "catchallEmailDesc": { - "message": "Use your domain's configured catch-all inbox." + "message": "Utiliza la bandeja de entrada global configurada de tu dominio." }, "random": { "message": "Aleatorio", @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "La entrada no debe exceder los $COUNT$ caracteres de longitud.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ campo(s) anteriores necesitan su atención.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Activado" }, + "members": { + "message": "Miembros" + }, + "reporting": { + "message": "Informando" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Número de usuarios" }, + "loggingInAs": { + "message": "Iniciando sesión como" + }, + "notYou": { + "message": "¿No eres tú?" + }, "multiSelectPlaceholder": { "message": "-- Escriba para filtrar --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Borrar todo" + }, + "from": { + "message": "De" + }, + "to": { + "message": "A" + }, + "member": { + "message": "Miembro" + }, + "update": { + "message": "Actualizar" + }, + "role": { + "message": "Rol" + }, + "canView": { + "message": "Puede ver" + }, + "canViewExceptPass": { + "message": "Puede ver, excepto contraseñas" + }, + "canEdit": { + "message": "Puede editar" + }, + "canEditExceptPass": { + "message": "Puede editar, excepto contraseñas" + }, + "group": { + "message": "Grupo" + }, + "groupAccessAll": { + "message": "Este grupo puede acceder y modificar todos los elementos." + }, + "memberAccessAll": { + "message": "Este miembro puede acceder y modificar todos los elementos." } } diff --git a/apps/web/src/locales/et/messages.json b/apps/web/src/locales/et/messages.json index 078232e8c96..fe5b609fb6e 100644 --- a/apps/web/src/locales/et/messages.json +++ b/apps/web/src/locales/et/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Logi sisse ülemparooliga" + }, "createAccount": { "message": "Konto loomine" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Kuva iga kirje kõrval lehekülje ikooni." }, - "enableGravatars": { - "message": "Luba Gravatarid", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Luba avatari pildid, mida laaditakse lehelt gravatar.com." - }, "enableFullWidth": { "message": "Lülita sisse veebihoidla laiem vaade", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Kaheastmeline kinnitamine" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Kaitse oma kontot, nõudes sisselogimisel lisakinnitust." }, - "twoStepLoginOrganizationDesc": { - "message": "Nõua organisatsiooni liikmetelt kaheastmelist kinnitamist, seadistades taolise teenuse pakkujad organisatsiooni tasemel." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Kaheastmelise kinnitamine aktiveerimine võib luua olukorra, kus sul on võimatu oma Bitwardeni kontosse sisse logida. Näiteks kui kaotad oma nutiseadme. Taastamise kood võimaldab aga kontole ligi pääseda ka olukorras, kus kaheastmelist kinnitamist ei ole võimalik läbi viia. Sellistel juhtudel ei saa ka Bitwardeni klienditugi sinu kontole ligipääsu taastada. Selle tõttu soovitame taastekoodi välja printida ja seda turvalises kohas hoida." @@ -1547,6 +1556,10 @@ "message": "Kasuta allolevaid raporteid, et oma kontode sisukorda kontrollida.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Ebaturvalise veebilehtede raport" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Vaatas kirje $ID$ turvakoodi.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Minu organisatsioon" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Kustuta organisatsioon" }, @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Nõutud on organisatsioon identifikaator." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Ühenda SSO lahti" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Õigused" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ välja vajab sinu tähelepanu.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Kasutajate arv" }, + "loggingInAs": { + "message": "Sisselogimas kui" + }, + "notYou": { + "message": "Pole sina?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/eu/messages.json b/apps/web/src/locales/eu/messages.json index 40bac466ac3..2879afce9b0 100644 --- a/apps/web/src/locales/eu/messages.json +++ b/apps/web/src/locales/eu/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Bitwarden mugikorreko aplikazioaren konfigurazioan, gailuarekin saioa hastea gaituta egon behar du. Beste aukerarik behar duzu?" }, + "loginWithMasterPassword": { + "message": "Hasi saioa pasahitz nagusiarekin" + }, "createAccount": { "message": "Sortu kontua" }, @@ -1193,10 +1196,10 @@ "message": "Hautatu inportazio fitxategia" }, "chooseFile": { - "message": "Choose File" + "message": "Hautatu fitxategia" }, "noFileChosen": { - "message": "No file chosen" + "message": "Ez da fitxategirik hautatu" }, "orCopyPasteFileContents": { "message": "edo kopiatu/pegatu inportazio fitxategiaren edukia" @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Erakutsi irudi bat saio-hasiera bakoitzaren ondoan." }, - "enableGravatars": { - "message": "Erakutsi gravatarrak", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Erabili gravatar.com-etik hartutako avatar irudiak." - }, "enableFullWidth": { "message": "Erabili zabalera osoko diseinua", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Bi urratseko saio hasiera" }, + "twoStepLoginEnforcement": { + "message": "Bi urratseko saio hasiera aplikatu" + }, "twoStepLoginDesc": { "message": "Ziurtatu zure kontua saioa hastean beste urrats bat egitea eskatuz." }, - "twoStepLoginOrganizationDesc": { - "message": "Zure erakundeko erabiltzaileentzat bi urratseko saio hasiera bidez hasi behar da saioa, hornitzaileak erakundearen mailan konfiguratuz." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Bi urratseko saio hasiera gaitzeak betirako blokea dezake Bitwarden kontura sartzea. Berreskuratze-kode baten bidez, zure kontura sar zaitezke, bi urratseko saio hasierako hornitzailea erabili ezin baduzu (adb. gailua galtzen baduzu). Bitwarden-ek ezingo dizu lagundu zure konturako sarbidea galtzen baduzu. Berreskuratze-kodea idatzi edo inprimatzea eta leku seguruan edukitzea gomendatzen dugu." @@ -1547,6 +1556,10 @@ "message": "Identifikatu eta itxi lineako kontuetako segurtasun hutsuneak, ondorengo txostenetan klik eginez.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Webgune ez seguruak" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "$ID$ elementuko segurtasun-kodea ikusia.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Nire erakundea" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Ezabatu erakundea" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Erakundearen identifikatzailea beharrezkoa da." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "SSO deskonektatu" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Baimenak" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Kudeatu baimenak" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Bezeroa" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Hornitzailearen kudeatzailea" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ eremuk zure arreta behar dute.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Piztuta" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Erabiltzaile kopurua" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/fi/messages.json b/apps/web/src/locales/fi/messages.json index 64743f0ab2d..55c79f9b322 100644 --- a/apps/web/src/locales/fi/messages.json +++ b/apps/web/src/locales/fi/messages.json @@ -10,7 +10,7 @@ } }, "whatTypeOfItem": { - "message": "Minkä tyyppinen kohde tämä on?" + "message": "Mikä on kohteen tyyppi?" }, "name": { "message": "Nimi" @@ -143,7 +143,7 @@ "message": "Erääntymisvuosi" }, "authenticatorKeyTotp": { - "message": "Todennusmenetelmän avain (TOTP)" + "message": "2FA-todentajan avain (TOTP)" }, "folder": { "message": "Kansio" @@ -485,7 +485,7 @@ "message": "Kohde lisättiin" }, "editedItem": { - "message": "Kohdetta muokattiin" + "message": "Kohde tallennettiin" }, "movedItemToOrg": { "message": "$ITEMNAME$ siirrettiin organisaatiolle $ORGNAME$", @@ -528,7 +528,7 @@ "message": "Kohteet siirrettiin roskakoriin" }, "movedItems": { - "message": "Kohteet siirretty" + "message": "Kohteet siirrettiin" }, "overwritePasswordConfirmation": { "message": "Haluatko varmasti korvata nykyisen salasanan?" @@ -537,7 +537,7 @@ "message": "Kansio tallennettiin" }, "addedFolder": { - "message": "Kansio lisätty" + "message": "Kansio lisättiin" }, "deleteFolderConfirmation": { "message": "Haluatko varmasti poistaa kansion?" @@ -573,10 +573,13 @@ "message": "Laitteella kirjautuminen" }, "loginWithDeviceEnabledInfo": { - "message": "Laitteella kirjautuminen otettava käyttöön Bitwardenin mobiilisovelluksen asetuksista. Tarvitsetko eri vaihtoehdon?" + "message": "Laitteella kirjautuminen on määritettävä Bitwardenin mobiilisovelluksen asetuksista. Tarvitsetko toisen vaihtoehdon?" + }, + "loginWithMasterPassword": { + "message": "Kirjaudu pääsalasanalla" }, "createAccount": { - "message": "Luo tili" + "message": "Luo uusi tili" }, "newAroundHere": { "message": "Oletko uusi täällä?" @@ -630,7 +633,7 @@ "message": "Salasanavihje" }, "enterEmailToGetHint": { - "message": "Syötä tilisi sähköpostiosoite saadaksesi pääsalasanasi vihjeen." + "message": "Syötä tilisi sähköpostiosoite saadaksesi pääsalasanan vihjeen." }, "getMasterPasswordHint": { "message": "Pyydä pääsalasanan vihjettä" @@ -672,7 +675,7 @@ "message": "Holvi on lukittu. Jatka vahvistamalla pääsalasanasi." }, "unlock": { - "message": "Avaa" + "message": "Avaa holvi" }, "loggedInAsEmailOn": { "message": "Kirjautuneena tunnuksella $EMAIL$ palveluun $HOSTNAME$.", @@ -811,7 +814,7 @@ "message": "FIDO U2F ‑todennuslaite" }, "webAuthnTitle": { - "message": "FIDO2 WebAuthn" + "message": "FIDO2 WebAuthn -todennuslaite" }, "webAuthnDesc": { "message": "Avaa tilisi millä tahansa WebAuthn‑yhteensopivalla todennuslaitteella." @@ -820,7 +823,7 @@ "message": "(siirretty FIDO:sta)" }, "emailTitle": { - "message": "Sähköpostiosoite" + "message": "Sähköposti" }, "emailDesc": { "message": "Todennuskoodit lähetetään sinulle sähköpostitse." @@ -1052,7 +1055,7 @@ "message": "Vaihda pääsalasana" }, "masterPasswordChanged": { - "message": "Pääsalasana vaihdettiin" + "message": "Pääsalasana tallennettiin" }, "currentMasterPass": { "message": "Nykyinen pääsalasana" @@ -1064,7 +1067,7 @@ "message": "Vahvista uusi pääsalasana" }, "encKeySettings": { - "message": "Salausavaimen asetukset" + "message": "Salausavainten asetukset" }, "kdfAlgorithm": { "message": "KDF-algoritmi" @@ -1094,7 +1097,7 @@ "message": "Vaihda KDF-asetuksia" }, "encKeySettingsChanged": { - "message": "Salausavaimen asetuksia muutettiin" + "message": "Salausavainten asetukset tallennettiin" }, "dangerZone": { "message": "Vaaravyöhyke" @@ -1109,7 +1112,7 @@ "message": "Oletko huolissasi, että tilisi on kirjautuneena muissa laitteissa? Jatka alla kirjataksesi ulos kaikki aiemmin käyttämäsi tietokoneet ja muut laitteet. Tämä turvallisuustoimenpide on suositeltava, jos olet aiemmin käyttänyt esimerkiksi julkista tietokonetta tai vahingossa tallentanut kirjautumisesi laitteeseen, joka ei ole sinun. Tämä mitätöi myös kaikki aiemmin muistetut kaksivaiheiset kirjautumiset." }, "deauthorizeSessionsWarning": { - "message": "Jatkamalla kirjaudut ulos nykyisestä istunnostasi ja joudut kirjautumaan uudelleen. Myös kaksivaiheinen kirjautuminen on tehtävä uudelleen. Aktiiviset istunnot toisilla laitteilla saattavat pysyä aktiivisina vielä tunnin ajan." + "message": "Jatkaminen uloskirjaa kaikki nykyiset istunnot pakottaen uudelleenkirjautumisen sekä kaksivaiheinen kirjautumisen. Muiden laitteiden aktiiviset istunnot saattavat toimia vielä tunnin ajan." }, "sessionsDeauthorized": { "message": "Kaikki istunnot mitätöitiin" @@ -1121,7 +1124,7 @@ "message": "Organisaation holvi tyhjennetty." }, "vaultAccessedByProvider": { - "message": "Todentaja on käyttänyt holvia." + "message": "Ylläpito on käyttänyt holvia." }, "purgeVaultDesc": { "message": "Jatka alla poistaaksesi kaikki holvisi kohteet ja kansiot. Kohteita, jotka on jaettu ja kuuluvat organisaatiolle, ei poisteta." @@ -1218,7 +1221,7 @@ "message": "Asetukset" }, "preferencesDesc": { - "message": "Muokkaa verkkoholvisi käyttökokemusta." + "message": "Muokkaa verkkoholvin käyttökokemusta." }, "preferencesUpdated": { "message": "Asetukset tallennettiin" @@ -1227,20 +1230,13 @@ "message": "Kieli" }, "languageDesc": { - "message": "Vaihda verkkoholvissa käytettävää kieltä." + "message": "Vaihda verkkoholvissa käytettävä kieli." }, "enableFavicon": { "message": "Näytä verkkosivustojen kuvakkeet" }, "faviconDesc": { - "message": "Näytä tunnistettava kuva jokaiselle kirjautumistiedolle." - }, - "enableGravatars": { - "message": "Näytä Gravatarit", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Käytä avatar-profiilikuvia Gravatar.com-palvelusta." + "message": "Näytä tunnistettava kuvake jokaiselle kirjautumistiedolle." }, "enableFullWidth": { "message": "Käytä täyden leveyden asettelua", @@ -1277,7 +1273,7 @@ "message": "Lisää oma verkkotunnus" }, "newCustomDomainDesc": { - "message": "Syötä verkkotunnukset pilkulla eroteltuina. Vain \"juuritason\" verkkotunnukset sallitaan, ei aliverkkotunnuksia. Eli syötä esimerkiksi \"www.google.com\" sijasta \"google.com\". Voit syöttää myös \"androidapp://package.name\" -muotoisia osoitteita yhdistääksesi Android-sovelluksia verkkotunnuksiin." + "message": "Syötä verkkotunnukset pilkulla eroteltuina. Vain ns. juuritason verkkotunnukset sallitaan, ei aliverkkotunnuksia. Eli syötä esimerkiksi osoitteen \"www.google.com\" sijaan \"google.com\". Voit syöttää myös \"androidapp://package.name\" -muotoisia osoitteita liittääksesi Android-sovelluksia verkkotunnuksiin." }, "customDomainX": { "message": "Oma verkkotunnus $INDEX$", @@ -1292,22 +1288,35 @@ "message": "Verkkotunnukset tallennettiin" }, "twoStepLogin": { - "message": "Kaksivaiheinen kirjautuminen" + "message": "Kaksivaiheinen kirjautuminen (2FA)" + }, + "twoStepLoginEnforcement": { + "message": "Kaksivaiheisen kirjautumisen pakotus" }, "twoStepLoginDesc": { "message": "Suojaa tilisi vaatimalla sisäänkirjautumiseen toinen todennusvaihe." }, - "twoStepLoginOrganizationDesc": { - "message": "Vaadi kaksivaiheinen kirjautuminen organisaatiosi käyttäjille määrittämällä todentajat organisaation tasolla." + "twoStepLoginOrganizationDescStart": { + "message": "Pakota Bitwardenin kaksivaiheiset kirjautumisvaihtoehdot jäsenille, jotka käyttävät ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Kaksivaiheisen kirjautumisen käytäntö" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Pakota kaksivaiheinen kirjautuminen Duon välityksellä alla olevilla vaihtoehdoilla." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Jos olet määrittänyt SSO:n tai aiot määrittää sen, on kaksivaiheinen kirjautuminen saatettu jo pakottaa identiteettitoimittajasi kautta." }, "twoStepLoginRecoveryWarning": { - "message": "Kaksivaiheisen kirjautumisen käyttöönotto voi lukita sinut pysyvästi ulos Bitwaren-tililtäsi. Palautuskoodi mahdollistaa pääsyn tilillesi myös silloin, kun et voi käyttää normaaleja kaksivaiheisen kirjautumisen todentajiasi (esim. hävität todennuslaitteesi tai se varastetaan). Myöskään Bitwardenin tuki ei voi auttaa sinua, jos menetät pääsyn tillesi. Suosittelemme, että kirjoitat muistiin tai tulostat palautuskoodin ja pidät sen tallessa turvallisessa paikassa (esim. kassakaapissa tai pankin tallelokerossa)." + "message": "Kaksivaiheisen kirjautumisen käyttöönotto voi lukita sinut pysyvästi ulos Bitwaren-tililtäsi. Palautuskoodi mahdollistaa pääsyn tilillesi myös silloin, kun et voi käyttää normaaleja kaksivaiheisen kirjautumisen todentajiasi (esim. kadotat todennuslaitteesi tai se varastetaan). Myöskään Bitwardenin tuki ei voi auttaa sinua, jos menetät pääsyn tillesi. Suosittelemme, että kirjoitat palautuskoodin muistiin tai tulostat sen ja säilytät sitä turvallisessa paikassa (esim. kassakaapissa tai pankin tallelokerossa)." }, "viewRecoveryCode": { "message": "Näytä palautuskoodi" }, "providers": { - "message": "Todennustarjoajat", + "message": "Todentajat", "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." }, "enable": { @@ -1453,7 +1462,7 @@ "message": "Jos jokin YubiKey-todennuslaitteesi tukee NFC-tekniikkaa (kuten YubiKey NEO), näytetään mobiililaitteissa kehote NFC:n ollessa käytettävissä." }, "yubikeysUpdated": { - "message": "YubiKey-todennuslaitteet päivitetty" + "message": "YubiKey-todennuslaitteet päivitettiin" }, "disableAllKeys": { "message": "Poista kaikki todennuslaitteet käytöstä" @@ -1519,7 +1528,7 @@ "message": "Odotetaan, että painat todennuslaitteesi painiketta" }, "twoFactorU2fClickSave": { - "message": "Klikkaa alta \"Tallenna\" käyttääksesi tätä todennuslaitetta kaksivaiheiseen kirjautumiseen." + "message": "Paina alta \"Tallenna\" käyttääksesi tätä todennuslaitetta kaksivaiheiseen kirjautumiseen." }, "twoFactorU2fProblemReadingTryAgain": { "message": "Todennuslaittetta luettaessa havaittiin ongelma. Yritä uudelleen." @@ -1534,7 +1543,7 @@ "message": "Bitwardenin kaksivaiheisen kirjautumisen palautuskoodisi" }, "twoFactorRecoveryNoCode": { - "message": "Et ole vielä ottanut käyttöön yhtään kaksivaiheisen kirjautumisen tadentajaa. Otettuasi todennusmenetelmän käyttöön, löydät palautuskoodin täältä." + "message": "Et ole vielä ottanut käyttöön yhtään kaksivaiheisen kirjautumisen todentajaa. Otettuasi todentajan käyttöön, löydät palautuskoodin täältä." }, "printCode": { "message": "Tulosta koodi", @@ -1547,14 +1556,18 @@ "message": "Tunnista ja paikkaa verkkopalvelutunnustesi tietoturva-aukkoja painamalla alla olevia raportteja.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Tunnista ja sulje aukot organisaatiosi tietoturvassa alla olevien raporttien avulla.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Suojaamattomat sivustot" }, "unsecuredWebsitesReportDesc": { - "message": "Osoitteet, jotka alkavat http://, eivät hyödynnä parasta mahdollista salausta. Vaihda tällaiset kirjatumisosoitteet https://-muotoisiksi turvallisempaa selausta varten." + "message": "URL-osoitteet, jotka alkavat http://, eivät hyödynnä parasta mahdollista salausta. Vaihda tällaiset kirjatumisosoitteet https://-muotoisiksi turvallisempaa selausta varten." }, "unsecuredWebsitesFound": { - "message": "Löydettiin suojaamattomia verkkosivustoja" + "message": "Suojaamattomia verkkosivustoja löytyi" }, "unsecuredWebsitesFoundDesc": { "message": "Löysimme holvistasi $COUNT$ kohdetta suojaamattomilla URI-osoitteilla. Sinun tulisi muuttaa niiden URI suojattuun \"https://\" -muotoon, jos sivusto tukee sitä.", @@ -1572,13 +1585,13 @@ "message": "Tunnusten 2FA-tila" }, "inactive2faReportDesc": { - "message": "Kaksivaiheinen kirjautuminen (2FA) lisää tileillesi yhden suojaustason. Voit käyttää kaksivaiheiseen kirjautumiseen Bitwardenin todentajaa tai vaihtoehtoisia menetelmiä." + "message": "Kaksivaiheinen kirjautuminen (2FA) lisää tileillesi yhden suojaustason. Määritä kaksivaiheinen kirjautuminen näille tileille Bitwardenin todentajalla tai käytä vaihtoehtoisia menetelmiä." }, "inactive2faFound": { - "message": "Tunnuksia ilman kaksivaiheista kirjautumista löytyi" + "message": "Löytyi kirjautumistietoja, joille ei ole määritetty kaksivaiheista kirjautumista" }, "inactive2faFoundDesc": { - "message": "Löysimme holvistasi $COUNT$ sivustoa, joita ei ehkä ole määritetty käyttämään kaksivaiheista kirjautumista (2fa.directory -sivuston mukaan). Suojataksesi nämä tilit paremmin, sinun tulisi ottaa kaksivaiheinen kirjautuminen käyttöön.", + "message": "Löysimme holvistasi $COUNT$ sivustoa, joita ei ehkä ole määritetty käyttämään kaksivaiheista kirjautumista (2fa.directory-sivuston mukaan). Suojataksesi nämä tilit paremmin, sinun tulisi ottaa kaksivaiheinen kirjautuminen käyttöön.", "placeholders": { "count": { "content": "$1", @@ -1587,7 +1600,7 @@ } }, "noInactive2fa": { - "message": "Holvistasi ei löytynyt sivustoja, joille ei ole määritetty kaksivaiheista kirjautumista." + "message": "Holvistasi ei löytynyt kirjautumistietoja, joille ei ole määritetty kaksivaiheista kirjautumista." }, "instructions": { "message": "Ohjeet" @@ -1898,7 +1911,7 @@ "message": "Maksukortti" }, "paypalClickSubmit": { - "message": "Kirjaudu PayPal-tilillesi painamalla PayPal-painiketta ja sitten alta \"Jatka\"." + "message": "Kirjaudu PayPal-tilillesi painamalla PayPal-painiketta ja paina sitten alta \"Jatka\"." }, "cancelSubscription": { "message": "Irtisano tilaus" @@ -1907,7 +1920,7 @@ "message": "Tilaus irtisanottiin." }, "pendingCancellation": { - "message": "Odottaa peruutusta" + "message": "Odottaa irtisanomista" }, "subscriptionPendingCanceled": { "message": "Tilaus on merkitty päättymään kuluvan laskutuskauden lopussa." @@ -1925,7 +1938,7 @@ "message": "Haluatko varmasti irtisanoa tilauksen? Menetät pääsyn kaikkiin tilauksen tarjoamiin ominaisuuksiin kuluvan laskutuskauden lopussa." }, "canceledSubscription": { - "message": "Tilaus irtisanottiin." + "message": "Tilaus irtisanottiin" }, "neverExpires": { "message": "Ei eräänny koskaan" @@ -1946,10 +1959,10 @@ "message": "Päivitä lisenssi" }, "updatedLicense": { - "message": "Lisenssi päivitetty" + "message": "Lisenssi päivitettiin" }, "manageSubscription": { - "message": "Hallinnoi tilausta" + "message": "Hallitse tilausta" }, "storage": { "message": "Tallennustila" @@ -2024,7 +2037,7 @@ } }, "gbStorageAdd": { - "message": "Lisättävän tallennustilan määrä (Gt)" + "message": "Lisättävä tallennustila, Gt" }, "gbStorageRemove": { "message": "Poistettava tallennustila, Gt" @@ -2048,7 +2061,7 @@ "message": "Ota yhteyttä asiakaspalveluun" }, "updatedPaymentMethod": { - "message": "Maksutapa päivitetty." + "message": "Maksutapa päivitettiin" }, "purchasePremium": { "message": "Osta Premium" @@ -2224,7 +2237,7 @@ "message": "Suoritus omassa palvelinympäristössä (valinnainen)" }, "usersGetPremium": { - "message": "Käyttäjät saavat käyttöoikeuden Premium-ominaisuuksiin" + "message": "Käyttäjät saavat Premium-ominaisuuksien käyttöoikeuden" }, "controlAccessWithGroups": { "message": "Hallinnoi käyttäjien oikeuksia ryhmillä" @@ -2290,7 +2303,7 @@ "message": "Uusi organisaatiosi on valmis käyttöön!" }, "organizationUpgraded": { - "message": "Organisaatiosi päivitettiin." + "message": "Organisaatio päivitettiin" }, "leave": { "message": "Eroa" @@ -2311,7 +2324,7 @@ "message": "Hanki sovellukset" }, "loggedInAs": { - "message": "Kirjautuneena käyttäjänä" + "message": "Kirjautuneena" }, "eventLogs": { "message": "Tapahtumalokit" @@ -2488,19 +2501,19 @@ "message": "Verkkoholvi" }, "loggedIn": { - "message": "Kirjautui sisään." + "message": "Kirjautui sisään" }, "changedPassword": { - "message": "Tilin salasana vaihdettiin." + "message": "Tilin salasana vaihdettiin" }, "enabledUpdated2fa": { - "message": "Kaksivaiheinen kirjautuminen otettiin käyttöön/päivitettiin." + "message": "Kaksivaiheinen kirjautuminen tallennettiin" }, "disabled2fa": { - "message": "Kaksivaiheinen kirjautuminen poistettiin käytöstä." + "message": "Kaksivaiheinen kirjautuminen poistettiin käytöstä" }, "recovered2fa": { - "message": "Tili vapautettiin kaksivaiheisesta kirjautumisesta." + "message": "Tili vapautettiin kaksivaiheisesta kirjautumisesta" }, "failedLogin": { "message": "Sisäänkirjautumisyritys epäonnistui väärän salasanan vuoksi." @@ -2509,13 +2522,13 @@ "message": "Kirjautuminen epäonnistui virheellisen kaksivaiheisen kirjautumisen todennuksen vuoksi." }, "exportedVault": { - "message": "Holvi viety." + "message": "Holvi vietiin" }, "exportedOrganizationVault": { - "message": "Organisaation holvi viety." + "message": "Organisaation holvi vietiin" }, "editedOrgSettings": { - "message": "Organisaation asetuksia muokattiin." + "message": "Organisaation asetukset tallennettiin" }, "createdItemId": { "message": "Kohde $ID$ luotu.", @@ -2554,7 +2567,7 @@ } }, "viewAllLoginOptions": { - "message": "Näytä kaikki kirjautumisvaihtoehdot" + "message": "Näytä kaikki kirjautumisvalinnat" }, "viewedItemId": { "message": "Kohdetta $ID$ tarkasteltu.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Tarkasteltiin kohteen $ID$ korttinumeroa.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Tarkasteltiin kohteen $ID$ turvakoodia.", "placeholders": { @@ -2869,7 +2891,7 @@ "message": "Muokkaa ryhmiä, joihin tämä käyttäjä kuuluu." }, "invitedUsers": { - "message": "Kutsutut käyttäjät." + "message": "Käyttäjät kutsuttiin" }, "resendInvitation": { "message": "Lähetä kutsu uudelleen" @@ -2878,7 +2900,7 @@ "message": "Lähetä sähköposti uudelleen" }, "hasBeenReinvited": { - "message": "$USER$ kutsuttiin uudelleen.", + "message": "$USER$ kutsuttiin uudelleen", "placeholders": { "user": { "content": "$1", @@ -2893,7 +2915,7 @@ "message": "Vahvista käyttäjä" }, "hasBeenConfirmed": { - "message": "$USER$ vahvistettiin.", + "message": "$USER$ vahvistettiin", "placeholders": { "user": { "content": "$1", @@ -2932,7 +2954,7 @@ "message": "Sähköpostiosoitettasi ei voitu vahvistaa. Yritä lähettää uusi vahvistussähköposti." }, "emailVerificationRequired": { - "message": "Sähköpostiosoitteen vahvistus vaaditaan" + "message": "Sähköpostiosoite on vahvistettava" }, "emailVerificationRequiredDesc": { "message": "Sinun on vahvistettava sähköpostiosoitteesi käyttääksesi tätä ominaisuutta." @@ -2974,10 +2996,10 @@ "message": "Jos et pääse tilillesi käyttämilläsi kaksivaiheisen kirjautumisen todentajilla, voit kaksivaiheisen kirjautumisen palautuskoodilla poistaa kaikki tilillesi määritetyt todentajat käytöstä." }, "recoverAccountTwoStep": { - "message": "Vapauta tilin kaksivaiheinen kirjautuminen" + "message": "Vapauta tili kaksivaiheisesta kirjautumisesta" }, "twoStepRecoverDisabled": { - "message": "Kaksivaiheinen kirjautuminen on poistettu tililtäsi käytöstä." + "message": "Kaksivaiheinen kirjautuminen poistettiin käytöstä tililtäsi." }, "learnMore": { "message": "Lue lisää" @@ -2989,11 +3011,14 @@ "message": "Jos tilisi on olemassa, olemme lähettäneet sinulle lisäohjeita sähköpostitse." }, "deleteRecoverConfirmDesc": { - "message": "Olet pyytänyt Bitwarden-tilisi poistoa. Vahvista painamalla alla olevaa painiketta." + "message": "Olet pyytänyt Bitwarden-tilisi poistoa. Vahvista alla olevalla painikeella." }, "myOrganization": { "message": "Oma organisaatio" }, + "organizationInfo": { + "message": "Organisaation tiedot" + }, "deleteOrganization": { "message": "Poista organisaatio" }, @@ -3025,7 +3050,7 @@ "message": "Organisaatio ja kaikki siihen liittyvät tiedot on poistettu." }, "organizationUpdated": { - "message": "Organisaatio päivitettiin" + "message": "Organisaatio tallennettiin" }, "taxInformation": { "message": "Verotiedot" @@ -3106,7 +3131,7 @@ "message": "Yritys tai yhteisö" }, "bankAccountTypeIndividual": { - "message": "Yksityinen" + "message": "Henkilökohtainen" }, "enterInstallationId": { "message": "Syötä asennuksesi ID-tunnus" @@ -3148,7 +3173,7 @@ "message": "Tilauksen käyttäjäpaikat" }, "subscriptionUpdated": { - "message": "Tilaus päivitetty" + "message": "Tilaus päivitettiin" }, "additionalOptions": { "message": "Lisävalinnat" @@ -3316,7 +3341,7 @@ "message": "Selaimen sivupäivityksen yhteydessä" }, "dateUpdated": { - "message": "Päivitetty", + "message": "Päivitettiin", "description": "ex. Date this item was updated" }, "dateCreated": { @@ -3337,7 +3362,7 @@ "message": "Lisenssi on erääntynyt." }, "updatedUsers": { - "message": "Päivitetyt käyttäjät" + "message": "Käyttäjät päivitettiin" }, "selected": { "message": "Valittu" @@ -3542,10 +3567,10 @@ "message": "Holvin aikakatkaisutoiminto" }, "vaultTimeoutActionLockDesc": { - "message": "Holvisi käyttö edellyttää pääsalasanaa tai muuta avaustapaa." + "message": "Vaadi pääsalasana tai jokin vaihtoehtoinen avaustapa, kun holvi avataan uudelleen." }, "vaultTimeoutActionLogOutDesc": { - "message": "Holvisi käyttö edellyttää uutta todennusta." + "message": "Vaadi uusi todennus, kun holvi avataan uudelleen." }, "lock": { "message": "Lukitse", @@ -3634,7 +3659,7 @@ } }, "vaultTimeoutLogOutConfirmation": { - "message": "Uloskirjautuminen estää pääsyn holviisi ja vaatii ajan umpeuduttua todennuksen internet-yhteyden välityksellä. Haluatko varmasti käyttää tätä asetusta?" + "message": "Uloskirjautuminen estää pääsyn holviisi ja vaatii ajan umpeuduttua todennuksen Internet-yhteyden välityksellä. Haluatko varmasti käyttää tätä asetusta?" }, "vaultTimeoutLogOutConfirmationTitle": { "message": "Aikakatkaisutoiminnon vahvistus" @@ -3652,7 +3677,7 @@ "message": "ALV/GST-verotustunniste" }, "taxInfoUpdated": { - "message": "Verotiedot päivitetty." + "message": "Verotiedot päivitettiin" }, "setMasterPassword": { "message": "Aseta pääsalasana" @@ -3682,7 +3707,7 @@ "message": "Kertakirjautumisen (SSO) todennus SAML 2.0 ja OpenID Connect -todentajilla" }, "includeEnterprisePolicies": { - "message": "Yrityksen käytännöt" + "message": "Yritykskäytännöt" }, "ssoValidationFailed": { "message": "Kertakirjautumisen (SSO) todennus epäonnistui" @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Organisaation tunniste vaaditaan." }, + "ssoIdentifier": { + "message": "SSO-tunniste" + }, + "ssoIdentifierHint": { + "message": "Ilmoita jäsenillesi tämä tunniste SSO-kirjautumista varten." + }, "unlinkSso": { "message": "Poista kertakirjautumisen (SSO) liitos" }, @@ -3715,7 +3746,7 @@ "message": "Vaadi kertakirjautumisen (SSO) todennus" }, "requireSsoPolicyDesc": { - "message": "Vaadi jäseniä kirjautumaan käyttäen yrityksen kertakirjautumista (SSO)." + "message": "Vaadi jäseniä kirjautumaan käyttäen yrityksen määrittämää kertakirjautumista (SSO)." }, "prerequisite": { "message": "Edellytys" @@ -3724,7 +3755,7 @@ "message": "\"Yksittäinen organisaatio\" -käytäntö on otettava käyttöön ennen tämän käytännön käyttöönottoa." }, "requireSsoPolicyReqError": { - "message": "\"Yksittäinen organisaatio\" -käytäntö ei ole käytössä." + "message": "\"Yksittäinen organisaatio\" -käytäntöä ei ole määritetty." }, "requireSsoExemption": { "message": "Organisaation omistajat ja ylläpitäjät on vapautettu tämän käytännön piiristä." @@ -3736,7 +3767,7 @@ "message": "Teksti" }, "createSend": { - "message": "Luo uusi Send", + "message": "Uusi Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { @@ -3744,11 +3775,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Luotiin Send", + "message": "Send tallennettiin", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Sendiä muokattiin", + "message": "Send tallennettiin", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deletedSend": { @@ -3877,7 +3908,7 @@ "message": "Varmuuskäyttö" }, "emergencyAccessDesc": { - "message": "Myönnä ja hallinnoi luotettujen kontaktien varmuuskäyttöoikeuksia. Luotetut kontaktit voivat anoa oikeutta tilisi tarkasteluun tai hallintaan ongelmatilanteissa. Käy ohjesivullamme saadaksesi lisätietoja ja tarkempia tietoja siitä, miten Zero Knowledge -jako toimii (englanniksi)." + "message": "Myönnä ja hallinnoi luotettujen kontaktien varmuuskäyttöoikeuksia. Luotetut kontaktit voivat anoa oikeutta tilisi tarkasteluun tai hallintaan ongelmatilanteissa. Käy ohjesivullamme saadaksesi lisätietoja ja tarkempia tietoja siitä, miten Zero Knowledge -jako toimii." }, "emergencyAccessOwnerWarning": { "message": "Olet yhden tai useamman organisaation omistaja. Jos myönnät varmuuskontaktille hallintaoikeuden, on heillä haltuunoton jälkeen samat oikeudet." @@ -3907,10 +3938,10 @@ "message": "Kutsu uusi varmuuskontakti syöttämällä alle hänen Bitwarden-tilinsä sähköpostiosoite. Jos hänellä ei vielä ole Bitwarden-tiliä, pyydetään häntä luomaan uusi tili." }, "emergencyAccessRecoveryInitiated": { - "message": "Varmuuskäyttö aloitettu" + "message": "Varmuuskäyttö aloitettiin" }, "emergencyAccessRecoveryApproved": { - "message": "Varmuuskäyttö sallittu" + "message": "Varmuuskäyttö sallittiin" }, "viewDesc": { "message": "Voi tarkastella kaikkia holvisi kohteita." @@ -4001,7 +4032,7 @@ } }, "emergencyApproved": { - "message": "Varmuuskäyttö sallittu." + "message": "Varmuuskäyttö sallittiin" }, "emergencyRejected": { "message": "Varmuuskäyttö hylätty." @@ -4025,7 +4056,7 @@ "message": "Organisaation omistajat ja ylläpitäjät on vapautettu tämän käytännön piiristä." }, "personalOwnershipSubmitError": { - "message": "Yrityksen asettaman käytännön johdosta kohteiden tallennus omaan holviisi ei ole mahdollista. Muuta omistusasetus organisaatiolle ja valitse käytettävissä olevista kokoelmista." + "message": "Yrityskäytännön johdosta kohteiden tallennus henkilökohtaiseen holviin ei ole mahdollista. Muuta omistusasetus organisaatiolle ja valitse käytettävissä olevista kokoelmista." }, "disableSend": { "message": "Poista Send" @@ -4035,14 +4066,14 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Käytäntöä ei pakoteta käyttöön niille organisaation käyttäjille, joilla on organisaation käytäntöjen hallintaoikeudet." + "message": "Käytäntöä ei pakoteta käyttöön niille organisaation käyttäjille, joilla on organisaatiokäytäntöjen hallintaoikeudet." }, "sendDisabled": { - "message": "Send on poistettu käytöstä", + "message": "Send poistettiin", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { - "message": "Yrityksen käytännön vuoksi voit poistaa vain olemassa olevan Sendin.", + "message": "Yrityskäytännön vuoksi voit poistaa vain olemassa olevan Sendin.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptions": { @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Käytäntöä ei pakoteta käyttöön niille organisaation käyttäjille, joilla on organisaation käytäntöjen hallintaoikeudet." + "message": "Käytäntöä ei pakoteta käyttöön niille organisaation käyttäjille, joilla on organisaatiokäytäntöjen hallintaoikeudet." }, "disableHideEmail": { "message": "Näytä jäsenen sähköpostiosoite aina vastaanottajien ohessa, kun Send luodaan tai sitä muokataan.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Käyttöoikeudet" }, + "permission": { + "message": "Käyttöoikeus" + }, "managerPermissions": { "message": "Valvojan oikeudet" }, @@ -4158,7 +4192,7 @@ "message": "Organisaatiokäytäntö vaikuttaa omistajuusvalintoihisi." }, "personalOwnershipPolicyInEffectImports": { - "message": "Organisaation käytäntö estää kohteiden tuonnin henkilökohtaiseen holviisi." + "message": "Organisaatiokäytäntö estää kohteiden tuonnin henkilökohtaiseen holviisi." }, "personalOwnershipCheckboxDesc": { "message": "Poista henkilökohtaisen omistajuuden valinta käytöstä organisaation käyttäjiltä" @@ -4260,13 +4294,13 @@ "message": "Tapahtui virhe tallennettaessa poisto- ja erääntymisajankohtia." }, "webAuthnFallbackMsg": { - "message": "Vahvista kaksivaiheinen kirjautuminen (2FA) klikkaamalla alla olevaa painiketta." + "message": "Vahvista kaksivaiheinen kirjautuminen (2FA) alla olevalla painikeella." }, "webAuthnAuthenticate": { "message": "WebAuthn-todennus" }, "webAuthnNotSupported": { - "message": "WebAuthn ei ole tuettu tässä selaimessa." + "message": "WebAuthn-todennusta ei tueta tässä selaimessa." }, "webAuthnSuccess": { "message": "WebAuthn-todennus onnistui! Voit sulkea välilehden." @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "Käyttäjä $ID$ erosi salasanan palautusavusta.", + "message": "Käyttäjä $ID$ poistui salasanan palautusavusta.", "placeholders": { "id": { "content": "$1", @@ -4377,7 +4411,7 @@ "message": "Vanhoja organisaation käyttäjiä ei liitetä salasanan palautusapuun takautuvasti, vaan heidän on itse liityttävä siihen ennen kuin ylläpitäjät voivat palauttaa heidän pääsalasanojaan." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Vaadi uusien käyttäjien automaattinen liitos" + "message": "Liitä uudet käyttäjät automaattisesti" }, "resetPasswordAutoEnrollInviteWarning": { "message": "Organisaatiolla on käytäntö, joka liittää tilisi automaattisesti salasanan palautusapuun. Liitos sallii organisaation ylläpitäjien vaihtaa pääsalasanasi." @@ -4425,7 +4459,7 @@ "message": "Teema" }, "themeDesc": { - "message": "Valitse verkkoholvin teema." + "message": "Valitse verkkoholvin ulkoasuteema." }, "themeSystem": { "message": "Järjestelmä" @@ -4443,22 +4477,22 @@ "message": "Joukkotoiminnon tila" }, "bulkConfirmMessage": { - "message": "Vahvistus onnistui." + "message": "Vahvistus onnistui" }, "bulkReinviteMessage": { - "message": "Uuudelleenkutsu onnistui." + "message": "Uuudelleenkutsu onnistui" }, "bulkRemovedMessage": { "message": "Poisto onnistui." }, "bulkRevokedMessage": { - "message": "Organisaation käyttöoikeus peruttiin onnistuneesti" + "message": "Organisaation käyttöoikeus peruttiin" }, "bulkRestoredMessage": { "message": "Organisaation käyttöoikeuden palautus onnistui" }, "bulkFilteredMessage": { - "message": "Ohitettu, ei koske tätä toimintoa." + "message": "Ohitettu, ei koske tätä toimintoa" }, "fingerprint": { "message": "Sormenjälki" @@ -4496,6 +4530,10 @@ "clients": { "message": "Asiakkaat" }, + "client": { + "message": "Asiakas", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Todentajan ylläpitäjä" }, @@ -4512,7 +4550,7 @@ "message": "Kutsu todentajallesi uusi käyttäjä syöttämällä alle hänen Bitwarden-tilinsä sähköpostiosoite. Jos hänellä ei vielä ole Bitwarden-tiliä, pyydetään häntä luomaan uusi tili." }, "joinProvider": { - "message": "Liity todennustarjoajaan" + "message": "Liity todentajaan" }, "joinProviderDesc": { "message": "Sinut on kutsuttu liittymään yllä mainittuun todentajaan. Hyväksyäksesi kutsun, sinun on kirjauduttava tilillesi tai luotava uusi Bitwarden-tili." @@ -4527,7 +4565,7 @@ "message": "Sinulla on kutsunsa hyväksyneitä käyttäjiä, jotka on vielä vahvistettava. Käyttäjät eivät voi käyttää todentajaa ennen vahvistusta." }, "provider": { - "message": "Todennustarjoaja" + "message": "Todentaja" }, "newClientOrganization": { "message": "Uusi asiakasorganisaatio" @@ -4539,7 +4577,7 @@ "message": "Lisää olemassa oleva organisaatio" }, "myProvider": { - "message": "Oma todennustarjoaja" + "message": "Oma todentaja" }, "addOrganizationConfirmation": { "message": "Haluatko varmasti lisätä organisaation $ORGANIZATION$ todentajan $PROVIDER$ asiakkaaksi?", @@ -4570,7 +4608,7 @@ "message": "Todentaja on jäädytetty" }, "providerUpdated": { - "message": "Todentaja on päivitetty" + "message": "Todentaja tallennettiin" }, "yourProviderIs": { "message": "Todentajasi on $PROVIDER$. Heillä on hallinta- ja laskutusoikeudet organisaatioosi.", @@ -4597,16 +4635,16 @@ "message": "Lisää" }, "updatedMasterPassword": { - "message": "Pääsalasana on päivitetty" + "message": "Pääsalasana päivitettiin" }, "updateMasterPassword": { "message": "Päivitä pääsalasana" }, "updateMasterPasswordWarning": { - "message": "Organisaatiosi ylläpito on hiljattain vaihtanut pääsalasanasi. Käyttääksesi holvia, on sinun päivitettävä se nyt. Tämä uloskirjaa kaikki nykyiset istunnot pakottaen uudelleenkirjautumisen. Muiden laitteiden aktiiviset istunnot saattavat toimia vielä tunnin ajan." + "message": "Organisaatiosi ylläpito on hiljattain vaihtanut pääsalasanasi. Käyttääksesi holvia, sinun on vaihdettava se nyt. Tämä uloskirjaa kaikki nykyiset istunnot pakottaen uudelleenkirjautumisen. Muiden laitteiden aktiiviset istunnot saattavat toimia vielä tunnin ajan." }, "masterPasswordInvalidWarning": { - "message": "Pääsalasanasi ei vastaa organisaation käytäntöä. Liittyäksesi organisaatioon, on sinun päivitettävä se nyt. Tämä uloskirjaa kaikki nykyiset istunnot pakottaen uudelleenkirjautumisen. Muiden laitteiden aktiiviset istunnot saattavat toimia vielä tunnin ajan." + "message": "Pääsalasanasi ei vastaa organisaatiokäytäntöä. Liittyäksesi organisaatioon, on sinun päivitettävä se nyt. Tämä uloskirjaa kaikki nykyiset istunnot pakottaen uudelleenkirjautumisen. Muiden laitteiden aktiiviset istunnot saattavat toimia vielä tunnin ajan." }, "maximumVaultTimeout": { "message": "Holvin aikakatkaisu" @@ -4658,10 +4696,10 @@ "message": "Älä salli jäseniä viemästä yksityisten holviensa tietoja." }, "vaultExportDisabled": { - "message": "Holvin vienti on poistettu käytöstä" + "message": "Holvin vienti poistettiin" }, "personalVaultExportPolicyInEffect": { - "message": "Yksi tai useampi organisaation käytäntö estää henkilökohtaisen holvisi viennin." + "message": "Yksi tai useampi organisaatiokäytäntö estää henkilökohtaisen holvisi viennin." }, "selectType": { "message": "Valitse SSO-tyyppi" @@ -4673,7 +4711,7 @@ "message": "OpenID Connect -määritykset" }, "samlSpConfig": { - "message": "SAML-todennustarjoajan määritykset" + "message": "SAML-palveluntarjoajan määritykset" }, "samlIdpConfig": { "message": "SAML-tunnistustietojen tarjoajan määritykset" @@ -4736,10 +4774,10 @@ "message": "Outbound Signing -algoritmi" }, "spSigningBehavior": { - "message": "Signing-käyttäytyminen" + "message": "Allekirjoituskäyttäytyminen" }, "spMinIncomingSigningAlgorithm": { - "message": "Pienin sallittu Incoming Signing -algoritmi" + "message": "Pienin saapuva allekirjoitusalgoritmi" }, "spWantAssertionsSigned": { "message": "Odota Assertion-lähetysten allekirjoitusta" @@ -4754,16 +4792,16 @@ "message": "Sidontatyyppi" }, "idpSingleSignOnServiceUrl": { - "message": "Single Sign On Service URL" + "message": "Kertakirjautumispalvelun URL" }, "idpSingleLogoutServiceUrl": { - "message": "Single Log Out Service URL" + "message": "Single log-out service URL" }, "idpX509PublicCert": { "message": "Julkinen X509 -varmenne" }, "idpOutboundSigningAlgorithm": { - "message": "Outbound Signing -algoritmi" + "message": "Lähtevä allekirjoitusalgoritmi" }, "idpAllowUnsolicitedAuthnResponse": { "message": "Salli Unsolicited-todennusvastaus" @@ -4880,16 +4918,16 @@ "message": "Sponsoroinnin poiston jälkeen olet vastuussa tilauksesta ja siihen liittyvistä laskuista. Haluatko varmasti jatkaa?" }, "sponsorshipCreated": { - "message": "Sponsorointi on luotu" + "message": "Sponsorointi luotiin" }, "emailSent": { - "message": "Sähköposti on lähetetty" + "message": "Sähköposti lähetettiin" }, "revokeSponsorshipConfirmation": { "message": "Tilin poiston jälkeen Perheille-tilauksen sponsorointi päättyy kuluvan laskutusjakson lopussa. Et voi lunastaa uuttaa sponsorointitarjousta ennen nykyisen päättymistä. Haluatko varmasti jatkaa?" }, "removeSponsorshipSuccess": { - "message": "Sponsorointi on poistettu" + "message": "Sponsorointi poistettiin" }, "ssoKeyConnectorError": { "message": "Key Connector -virhe: Varmista, että Key Connector on käytettävissä ja toimii oikein." @@ -4904,7 +4942,7 @@ "message": "Lähetä koodi" }, "codeSent": { - "message": "Koodi lähetetty" + "message": "Koodi lähetettiin" }, "verificationCode": { "message": "Todennuskoodi" @@ -4973,10 +5011,10 @@ "message": "Kertakirjautuminen (SSO) Key Connector -salauksenpurulla on käytössä. Käytäntö vaikuttaa vain omistajiin ja ylläpitäjiin." }, "enabledSso": { - "message": "Kertakirjautuminen otettiin käyttöön" + "message": "SSO otettiin käyttöön" }, "disabledSso": { - "message": "Kertakirjautuminen poistettiin käytöstä" + "message": "SSO poistettiin käytöstä" }, "enabledKeyConnector": { "message": "Key Connector otettiin käyttöön" @@ -4985,7 +5023,7 @@ "message": "Key Connector poistettiin käytöstä" }, "keyConnectorWarning": { - "message": "Kun käyttäjät alkavat käyttämään Key Connectoria, organisaatiosi ei voi palata takaisin pääsalasanalla tapahtuvaan salauksenpurkuun. Jatka ainoastaan siinä tapauksessa, jos olet valmis määrittämään avainpalvelimen ja myös ylläpitämään sitä." + "message": "Kun käyttäjät alkavat käyttämään Key Connectoria, organisaatiosi ei voi palata takaisin pääsalasanalla tapahtuvaan salauksenpurkuun. Jatka vain, jos olet valmis määrittämään avainpalvelimen ja myös ylläpitämään sitä." }, "migratedKeyConnector": { "message": "Siirretty käyttämään Key Connectoria" @@ -5057,16 +5095,16 @@ "message": "Määrittääksesi organisaation omalle palvelimellesi, tulee lisenssitiedosto tallentaa sinne. Sinun on määritettävä laskutuksen synkronointi, jotta ilmaiset Perheille-tilaukset ja edistyneet laskutusominaisuudet ovat itse ylläpitämäsi organisaation käytettävissä." }, "billingSyncApiKeyRotated": { - "message": "Tunniste uudistettiin." + "message": "Tunniste uudistettiin" }, "billingSync": { "message": "Laskutuksen synkronointi" }, "billingSyncDesc": { - "message": "Laskutuksen synkronointi mahdollistaa jäsenille ilmaiset Perheille-tilaukset ja edistyneet laskutusominaisuudet liittämällä itse ylläpitämäsi Bitwarden-palvelin Bitwardenin pilvipalvelimeen." + "message": "Laskutuksen synkronointi mahdollistaa jäsenille ilmaiset Perheille-tilaukset ja edistyneet laskutusominaisuudet liittämällä itse ylläpitämäsi Bitwarden-palvelimen Bitwardenin pilvipalvelimeen." }, "billingSyncKeyDesc": { - "message": "Lomakkeen täyttö edellyttää laskutuksen synkronointitunnisteen pilviorganisaatiosi tilausasetuksista." + "message": "Lomakkeen täyttöön tarvitaan laskutuksen synkronointitunniste pilviorganisaatiosi tilausasetuksista." }, "billingSyncKey": { "message": "Laskutuksen synkronointitunniste" @@ -5135,7 +5173,7 @@ "message": "Organisaation holvin vienti" }, "exportingPersonalVaultDescription": { - "message": "Vain tunnukseen $EMAIL$ liitetyt henkilökohtaiset holvin kohteet viedään. Organisaation kohteet eivät sisälly tähän.", + "message": "Vain tunnukseen $EMAIL$ liitetyt henkilökohtaisen holvin kohteet viedään. Organisaation kohteet eivät sisälly tähän.", "placeholders": { "email": { "content": "$1", @@ -5291,13 +5329,13 @@ "message": "Laitevahvistus" }, "enableDeviceVerification": { - "message": "Käytä laitevahvistus" + "message": "Käytä laitevahvistusta" }, "deviceVerificationDesc": { "message": "Kun käytössä, todennuskoodit lähetetään sinulle sähköpostitse kirjauduttaessa tuntemattomasta laitteesta." }, "updatedDeviceVerification": { - "message": "Laitevahvostus päivitettiin" + "message": "Laitevahvistus päivitettiin" }, "areYouSureYouWantToEnableDeviceVerificationTheVerificationCodeEmailsWillArriveAtX": { "message": "Haluatko varmasti käyttää laitevahvistusta? Todennuskoodit lähetetään sähköpostiosoitteeseen $EMAIL$", @@ -5316,7 +5354,7 @@ "description": "The text, 'SCIM', is an acronymn and should not be translated." }, "scimDescription": { - "message": "Provisioi käyttäjät ja ryhmät haluamasi tunnistustietojen tarjoajan kanssa SCIM-provisioinnilla", + "message": "Provisioi käyttäjät ja ryhmät haluamasi tunnistustietojen tarjoajan (Identity Provider) kanssa SCIM-provisioinnilla.", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimEnabledCheckboxDesc": { @@ -5324,7 +5362,7 @@ "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimEnabledCheckboxDescHelpText": { - "message": "Määritä haluamasi tunnistustietojen tarjoaja määrittämällä URL-osoite ja SCIM API -avain", + "message": "Määritä haluamasi tunnistustietojen tarjoaja (Identity Provider) määrittämällä URL-osoite ja SCIM API -avain.", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimApiKeyHelperText": { @@ -5358,11 +5396,11 @@ "description": "the text, 'SCIM' and 'URL', are acronymns and should not be translated." }, "scimApiKeyRotated": { - "message": "SCIM API-avaimen uudistus onnistui", + "message": "SCIM API-avain uudistettiin", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "scimSettingsSaved": { - "message": "SCIM-asetusten tallennus onnistui", + "message": "SCIM-asetukset tallennettiin", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "inputRequired": { @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Syöte ei saa ylittää $COUNT$ merkkiä.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ yllä oleva(a) kenttä(ä) vaatii huomiotasi.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Käytössä" }, + "members": { + "message": "Jäsenet" + }, + "reporting": { + "message": "Raportointi" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Käyttäjien määrä" }, + "loggingInAs": { + "message": "Kirjaudutaan tunnuksella" + }, + "notYou": { + "message": "Etkö se ollut sinä?" + }, "multiSelectPlaceholder": { "message": "-- Suodatettava tyyppi --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Tyhjennä kaikki" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Jäsen" + }, + "update": { + "message": "Päivitä" + }, + "role": { + "message": "Rooli" + }, + "canView": { + "message": "Voi tarkastella" + }, + "canViewExceptPass": { + "message": "Voi tarkastella salasanoja lukuun ottamatta" + }, + "canEdit": { + "message": "Voi muokata" + }, + "canEditExceptPass": { + "message": "Voi muokata salasanoja lukuun ottamatta" + }, + "group": { + "message": "Ryhmä" + }, + "groupAccessAll": { + "message": "Tämä ryhmä voi tarkastella ja muokata kaikkia kohteita." + }, + "memberAccessAll": { + "message": "Tämä jäsen voi tarkastella ja muokata kaikkia kohteita." } } diff --git a/apps/web/src/locales/fil/messages.json b/apps/web/src/locales/fil/messages.json index 4defa63fab7..d8fd98cde24 100644 --- a/apps/web/src/locales/fil/messages.json +++ b/apps/web/src/locales/fil/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Create account" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Show Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Two-step login" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organization's users by configuring providers at the organization level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Setting up two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (example: you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecure websites" }, @@ -2491,7 +2504,7 @@ "message": "Logged in" }, "changedPassword": { - "message": "Account password saved" + "message": "Changed account password" }, "enabledUpdated2fa": { "message": "Two-step login saved" @@ -2500,7 +2513,7 @@ "message": "Two-step login turned off" }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2512,10 +2525,10 @@ "message": "Vault exported" }, "exportedOrganizationVault": { - "message": "Organization vault exported" + "message": "Exported organization vault." }, "editedOrgSettings": { - "message": "Organization settings saved" + "message": "Edited organization settings." }, "createdItemId": { "message": "Created item $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My organization" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organization" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3133,7 +3158,7 @@ "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." }, "subscriptionUserSeats": { - "message": "Your subscription allows for a total of $COUNT$ users.", + "message": "Your subscription allows for a total of $COUNT$ members.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Organization identifier" }, "ssoLogInWithOrgIdentifier": { - "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + "message": "Log in using your organization's single sign-on portal. Please enter your organization's SSO identifier to begin." }, "enterpriseSingleSignOn": { "message": "Enterprise single sign-on" @@ -3688,7 +3713,13 @@ "message": "SSO validation failed" }, "ssoIdentifierRequired": { - "message": "Organization identifier is required." + "message": "Organization SSO identifier is required." + }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." }, "unlinkSso": { "message": "Unlink SSO" @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send removed", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/fr/messages.json b/apps/web/src/locales/fr/messages.json index b911d3af55b..adf3a7f5ce4 100644 --- a/apps/web/src/locales/fr/messages.json +++ b/apps/web/src/locales/fr/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "La connexion avec l'appareil doit être activée dans les paramètres de l'application mobile Bitwarden. Avez-vous besoin d'une autre option?" }, + "loginWithMasterPassword": { + "message": "Connectez-vous avec le mot de passe maître" + }, "createAccount": { "message": "Créer un compte" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Afficher une image reconnaissable à côté de chaque identifiant." }, - "enableGravatars": { - "message": "Activer Gravatar", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Charger votre image de profil depuis gravatar.com." - }, "enableFullWidth": { "message": "Activer la mise en page en pleine largeur", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Identification en deux étapes" }, + "twoStepLoginEnforcement": { + "message": "Imposition de la Connexion en Deux Étapes" + }, "twoStepLoginDesc": { "message": "Sécuriser votre compte en exigeant une étape supplémentaire lors de la connexion." }, - "twoStepLoginOrganizationDesc": { - "message": "Exigez une connexion en deux étapes pour les utilisateurs de votre organisation en configurant les services au niveau de l'organisation." + "twoStepLoginOrganizationDescStart": { + "message": "Imposer les options de la Connexion en 2 Étapes aux membres en utilisant le ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Politique de Connexion en 2 Étapes" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Pour imposer la Connexion en 2 Étapes via Duo, utilisez les options ci-dessous." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Si vous avez configuré SSO ou planifié le faire, la Connexion en 2 Étapes peut déjà être imposée via votre Fournisseur d'Identité." }, "twoStepLoginRecoveryWarning": { "message": "Activer la connexion en deux étapes peut vous empêcher définitivement d'accéder à votre compte Bitwarden. Un code de récupération vous permet d'accéder à votre compte dans le cas où vous ne pouvez plus utiliser votre service de connexion en deux étapes habituel (ex. vous perdez votre appareil). Le support Bitwarden ne pourra pas vous aider si vous perdez l'accès à votre compte. Nous vous recommandons d'écrire ou d'imprimer le code de récupération et de le conserver en lieu sûr." @@ -1547,6 +1556,10 @@ "message": "Identifiez et fermez les trous de sécurité dans vos comptes en ligne en cliquant sur les rapports ci-dessous.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identifiez et fermez les trous de sécurité dans les comptes de votre organisation en cliquant sur les rapports ci-dessous.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Rapport sur les sites web non sécurisés" }, @@ -1578,7 +1591,7 @@ "message": "Identifiants sans 2FA trouvés" }, "inactive2faFoundDesc": { - "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-step login (according to 2fa.directory). To further protect these accounts, you should set up two-step login.", + "message": "Nous avons trouvé $COUNT$ site(s) web dans votre coffre qui peuvent ne pas être configurés avec une connexion en deux étapes (selon 2fa. Pour protéger davantage ces comptes, vous devez configurer une connexion en deux étapes.", "placeholders": { "count": { "content": "$1", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Numéro de Carte visionné pour l'article $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Le code de sécurité de l’élément $ID$ a été consulté.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Mon organisation" }, + "organizationInfo": { + "message": "Informations sur l'Organisation" + }, "deleteOrganization": { "message": "Supprimer l'organisation" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "L'identifiant de l'organisation est requis." }, + "ssoIdentifier": { + "message": "Identifiant SSO" + }, + "ssoIdentifierHint": { + "message": "Fournissez cet ID à vos membres pour se connecter avec SSO." + }, "unlinkSso": { "message": "Délier SSO" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Permissions du Gestionnaire" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Administrateur du fournisseur" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "L'entrée ne doit pas dépasser $COUNT$ caractères de long.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ champ(s) ci-dessus nécessitent votre attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Activé" }, + "members": { + "message": "Membres" + }, + "reporting": { + "message": "Compte Rendu" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Nombre d’utilisateurs" }, + "loggingInAs": { + "message": "Connexion en tant que" + }, + "notYou": { + "message": "Ce n'est pas vous ?" + }, "multiSelectPlaceholder": { "message": "-- Tapez pour Filtrer --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Effacer tout" + }, + "from": { + "message": "De" + }, + "to": { + "message": "À" + }, + "member": { + "message": "Membre" + }, + "update": { + "message": "Mis à jour" + }, + "role": { + "message": "Rôle" + }, + "canView": { + "message": "Peut voir" + }, + "canViewExceptPass": { + "message": "Peut voir, sauf les mots de passe" + }, + "canEdit": { + "message": "Peut modifier" + }, + "canEditExceptPass": { + "message": "Peut modifier, sauf les mots de passe" + }, + "group": { + "message": "Groupe" + }, + "groupAccessAll": { + "message": "Ce groupe peut accéder et modifier tous les éléments." + }, + "memberAccessAll": { + "message": "Ce groupe peut voir et modifier tous les éléments." } } diff --git a/apps/web/src/locales/he/messages.json b/apps/web/src/locales/he/messages.json index 5bc2dd49508..16f0329a121 100644 --- a/apps/web/src/locales/he/messages.json +++ b/apps/web/src/locales/he/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "צור חשבון" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "אפשר שימוש ב-Gravatar", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "שימוש בתמונות אווטאר שנטענו מהאתר gravatar.com." - }, "enableFullWidth": { "message": "אפשר תצוגה ברוחב מלא", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "התחברות בשני-שלבים" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "שפר את אבטחת החשבון שלך על ידי דרישת צעד נוסף עבור כל נסיון חיבור." }, - "twoStepLoginOrganizationDesc": { - "message": "דרוש כניסה בשני-שלבים עבור משתמשי הארגון שלך בעזרת הגדרת ספקים הנתמכים ברמת הארגון." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "שים לב: שימוש לא נכון בכניסה דו-שלבית עשוי לגרום לך להנעל ללא גישה לחשבון Bitwarden שלך. מומלץ לשמור קוד שחזור לגישה לחשבון שלך למקרה שלא תוכל להשתמש בספק הכניסה הדו-שלבית (לדוגמא: איבדת את הפלאפון או את מפתח החומרה שלך). גם צוות התמיכה של Bitwarden לא יוכל לעזור לך במקרה שתאבד גישה לחשבון שלך. אנו ממליצים שתכתוב או תדפיס את קודי השחזור ותשמור אותם במקום בטוח." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "דוח אתרים לא מאובטחים" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "קוד אבטחה שנצפה עבור פריט $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "הארגון שלי" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "מחק ארגון" }, @@ -3112,7 +3137,7 @@ "message": "הכנס את מספר ההתקנה שלך" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "מזהה הארגון נחוץ." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "נתק SSO" }, @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send removed", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/hi/messages.json b/apps/web/src/locales/hi/messages.json index 58e8c6c78bb..94e54e5c669 100644 --- a/apps/web/src/locales/hi/messages.json +++ b/apps/web/src/locales/hi/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Create account" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Show Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Two-step login" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organization's users by configuring providers at the organization level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Setting up two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (example: you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecure websites" }, @@ -2491,7 +2504,7 @@ "message": "Logged in" }, "changedPassword": { - "message": "Account password saved" + "message": "Changed account password" }, "enabledUpdated2fa": { "message": "Two-step login saved" @@ -2500,7 +2513,7 @@ "message": "Two-step login turned off" }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2512,10 +2525,10 @@ "message": "Vault exported" }, "exportedOrganizationVault": { - "message": "Organization vault exported" + "message": "Exported organization vault." }, "editedOrgSettings": { - "message": "Organization settings saved" + "message": "Edited organization settings." }, "createdItemId": { "message": "Created item $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My organization" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organization" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3133,7 +3158,7 @@ "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." }, "subscriptionUserSeats": { - "message": "Your subscription allows for a total of $COUNT$ users.", + "message": "Your subscription allows for a total of $COUNT$ members.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Organization identifier" }, "ssoLogInWithOrgIdentifier": { - "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + "message": "Log in using your organization's single sign-on portal. Please enter your organization's SSO identifier to begin." }, "enterpriseSingleSignOn": { "message": "Enterprise single sign-on" @@ -3688,7 +3713,13 @@ "message": "SSO validation failed" }, "ssoIdentifierRequired": { - "message": "Organization identifier is required." + "message": "Organization SSO identifier is required." + }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." }, "unlinkSso": { "message": "Unlink SSO" @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send removed", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/hr/messages.json b/apps/web/src/locales/hr/messages.json index 24d5375ab6a..1ddca8f5026 100644 --- a/apps/web/src/locales/hr/messages.json +++ b/apps/web/src/locales/hr/messages.json @@ -50,7 +50,7 @@ "message": "Prilagođena polja" }, "cardholderName": { - "message": "Vlasnik kartice" + "message": "Vlasnik platne kartice" }, "number": { "message": "Broj" @@ -71,7 +71,7 @@ "message": "Tvrtka" }, "ssn": { - "message": "Broj socijalnog osiguranja" + "message": "Broj zdravstvenog osiguranja" }, "passportNumber": { "message": "Broj putovnice" @@ -278,7 +278,7 @@ "message": "Pretraživanje favorita" }, "searchType": { - "message": "Tip pretrage", + "message": "Vrsta pretrage", "description": "Search item type" }, "searchVault": { @@ -309,7 +309,7 @@ "message": "Prijave" }, "typeCardPlural": { - "message": "Kartice" + "message": "Platne kartice" }, "typeIdentityPlural": { "message": "Identiteti" @@ -485,7 +485,7 @@ "message": "Stavka dodana" }, "editedItem": { - "message": "Uređena stavka" + "message": "Stavka spremljena" }, "movedItemToOrg": { "message": "$ITEMNAME$ premješteno u $ORGNAME$", @@ -528,13 +528,13 @@ "message": "Stavke poslane u smeće" }, "movedItems": { - "message": "Premještene stavke" + "message": "Stavke premještene" }, "overwritePasswordConfirmation": { "message": "Sigurno želiš prebrisati trenutnu lozinku?" }, "editedFolder": { - "message": "Uređena mapa" + "message": "Mapa spremljena" }, "addedFolder": { "message": "Mapa dodana" @@ -570,10 +570,13 @@ "message": "Prijavi se ili stvori novi račun za pristup svojem sigurnom trezoru." }, "loginWithDevice": { - "message": "Log in with device" + "message": "Prijava uređajem" }, "loginWithDeviceEnabledInfo": { - "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" + "message": "Prijava uređajem mora biti namještena u postavka Bitwarden mobilne aplikacije. Trebaš drugu opciju?" + }, + "loginWithMasterPassword": { + "message": "Prijava glavnom lozinkom" }, "createAccount": { "message": "Stvori račun" @@ -582,13 +585,13 @@ "message": "New around here?" }, "startTrial": { - "message": "Start trial" + "message": "Pokreni probno razdoblje" }, "logIn": { "message": "Prijavi se" }, "logInInitiated": { - "message": "Log in initiated" + "message": "Pokrenuta prijava" }, "submit": { "message": "Pošalji" @@ -609,7 +612,7 @@ "message": "Glavnu lozinku koristiš za pristup svom trezoru. Vrlo je važno da ne zaboraviš glavnu lozinku. Ne postoji način za oporavak lozinke u slučaju da ju zaboraviš." }, "masterPassImportant": { - "message": "Master passwords cannot be recovered if you forget it!" + "message": "Glavnu lozinku nije moguće oporaviti ako ju zaboraviš!" }, "masterPassHintDesc": { "message": "Podsjetnik glavne lozinke ti može pomoći da se prisjetiš svoje lozinke ako ju zaboraviš." @@ -642,13 +645,13 @@ "message": "Neispravna adresa e-pošte." }, "masterPasswordRequired": { - "message": "Master password is required." + "message": "Potrebna je glavna lozinka." }, "confirmMasterPasswordRequired": { - "message": "Master password retype is required." + "message": "Potreban je ponovni unos glavne lozinke." }, "masterPasswordMinlength": { - "message": "Master password must be at least 8 characters long." + "message": "Glavna lozinka mora imati najmanje 8 znakova." }, "masterPassDoesntMatch": { "message": "Potvrda glavne lozinke se ne podudara." @@ -657,7 +660,7 @@ "message": "Tvoj novi račun je kreiran! Sada se možeš prijaviti." }, "trialAccountCreated": { - "message": "Account created successfully." + "message": "Račun je uspješno stvoren." }, "masterPassSent": { "message": "Poslali smo e-poštu s podsjetnikom glavne lozinke." @@ -691,7 +694,7 @@ "message": "Neispravna glavna lozinka" }, "invalidFilePassword": { - "message": "Invalid file password, please use the password you entered when you created the export file." + "message": "Nesipravna lozinka datoteke. Unesi lozinku izvozne datoteke." }, "lockNow": { "message": "Zaključaj sada" @@ -718,7 +721,7 @@ "message": "Ne pripadaš niti jednoj organizaciji. Organizacije omogućuju sigurno dijeljenje stavki s drugim korisnicima." }, "notificationSentDevice": { - "message": "A notification has been sent to your device." + "message": "Obavijest je poslana na tvoj uređaj." }, "versionNumber": { "message": "Verzija $VERSION_NUMBER$", @@ -757,7 +760,7 @@ "message": "Ponovno slanje kontrolnog koda e-poštom" }, "useAnotherTwoStepMethod": { - "message": "Koristiti drugi način prijave u dva koraka" + "message": "Koristiti drugi način prijave dvostrukom autentifikacijom" }, "insertYubiKey": { "message": "Umetni svoj YubiKey u USB priključak računala, a zatim dodirni njegovu tipku." @@ -769,16 +772,16 @@ "message": "Prijava nije dostupna" }, "noTwoStepProviders": { - "message": "Ovaj račun ima omogućenu prijavu u dva koraka, međutim ovaj web preglednik ne podržava niti jednog konfiguriranog pružatelja prijave u dva koraka." + "message": "Ovaj račun ima omogućenu prijavu dvostrukom autentifikacijom, međutim ovaj web preglednik ne podržava niti jednog konfiguriranog pružatelja dvostruke autentifikacije." }, "noTwoStepProviders2": { "message": "Koristi podržani web-preglednik (npr. Chrome) i/ili dodaj dodatne usluge koje su bolje podržane u web preglednicima (npr. aplikacija Autentifikator)." }, "twoStepOptions": { - "message": "Mogućnosti prijave u dva koraka" + "message": "Mogućnosti prijave dvostrukom autentifikacijom" }, "recoveryCodeDesc": { - "message": "Izgubljen je pristup uređaju za dvostruku autentifikaciju? Koristi svoj kôd za oporavak za onemogućavanje svih pružatelja usluga dvostruke autentifikacije na tvojem računu." + "message": "Izgubljen je pristup uređaju za prijavu dvostrukom autentifikacijom? Koristi svoj kôd za oporavak za onemogućavanje svih pružatelja usluga prijave dvostrukom autentifikacijom na svom računu." }, "recoveryCodeTitle": { "message": "Kôd za oporavak" @@ -805,7 +808,7 @@ "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "u2fDesc": { - "message": "Koristi bilo koji FIDO U2F omogućen sigurnosni ključ za pristup svojem računu." + "message": "Koristi bilo koji FIDO U2F kompatibilan sigurnosni ključ za pristup svojem računu." }, "u2fTitle": { "message": "FIDO U2F sigurnosni ključ" @@ -909,46 +912,46 @@ "message": "Format datoteke" }, "fileEncryptedExportWarningDesc": { - "message": "This file export will be password protected and require the file password to decrypt." + "message": "Ova izvozna datoteka biti će zaštićena lozinkom bez koje ju neće biti moguće dešifrirati." }, "exportPasswordDescription": { - "message": "This password will be used to export and import this file" + "message": "Ova će se lozinka koristiti za izvoz i uvoz ove datoteke" }, "confirmMasterPassword": { - "message": "Confirm master password" + "message": "Potvrdi glavnu lozinku" }, "confirmFormat": { - "message": "Confirm format" + "message": "Potvrdi oblik" }, "filePassword": { - "message": "File password" + "message": "Lozinka datoteke" }, "confirmFilePassword": { - "message": "Confirm file password" + "message": "Potvrdi lozinku datoteke" }, "accountBackupOptionDescription": { - "message": "Use your account encryption key to encrypt the export and restrict import to only the current Bitwarden account." + "message": "Koristi ključ za šifriranje svojeg računa za šifriranje izvoza i ograničenje uvoza samo na svoj Bitwarden račun." }, "passwordProtectedOptionDescription": { - "message": "Set a password to encrypt the export and import it to any Bitwarden account using the password for decryption." + "message": "Postavi lozinku za šifriranje datoteke izvoza za naknadni uvoz u bilo koji Bitwarden račun." }, "fileTypeHeading": { - "message": "File type" + "message": "Vrsta datoteke" }, "accountBackup": { - "message": "Account backup" + "message": "Ssigurnosna kopija računa" }, "passwordProtected": { - "message": "Password protected" + "message": "Zaštićeno lozinkom" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { - "message": "“File password” and “Confirm file password“ do not match." + "message": "Lozinka se ne podudara." }, "confirmVaultImport": { - "message": "Confirm vault import" + "message": "Potvrdi uvoz trezora" }, "confirmVaultImportDesc": { - "message": "This file is password-protected. Please enter the file password to import data." + "message": "Ova je datoteka zaštićena lozinkom. Unesi lozinku za nastavak uvoza." }, "exportSuccess": { "message": "Tvoji podaci iz trezora su izvezeni." @@ -963,7 +966,7 @@ "message": "Najmanje brojeva" }, "minSpecial": { - "message": "Najmanje specijalnih", + "message": "Najmanje posebnih", "description": "Minimum special characters" }, "ambiguous": { @@ -976,15 +979,15 @@ "message": "Duljina" }, "uppercase": { - "message": "Velika slova (A-Z)", + "message": "Velika slova (A - Z)", "description": "Include uppercase letters in the password generator." }, "lowercase": { - "message": "Mala slova (a-z)", + "message": "Mala slova (a - z)", "description": "Include lowercase letters in the password generator." }, "numbers": { - "message": "Brojevi (0-9)" + "message": "Brojevi (0 - 9)" }, "specialCharacters": { "message": "Posebni znakovi (!@#$%^&*)" @@ -1013,13 +1016,13 @@ "description": "To clear something out. Example: To clear browser history." }, "accountUpdated": { - "message": "Račun je ažuriran" + "message": "Račun spremljen" }, "changeEmail": { "message": "Promijeni e-poštu" }, "changeEmailTwoFactorWarning": { - "message": "Promijeniti ćeš adresu e-pošte računa. Ovo neće promijeniti adresu e-pošte za dvostruku autentifikaciju (ovo se može promijeniti u postavkama dvostruke autentifikacije)." + "message": "Promijeniti ćeš adresu e-pošte računa. Ovo neće promijeniti adresu e-pošte za prijavu dvostrukom autentifikacijom (ovo se može promijeniti u postavkama prijave dvostrukom autentifikacijom)." }, "newEmail": { "message": "Nova adresa e-pošte" @@ -1040,7 +1043,7 @@ "message": "Ako nastaviš, biti će zatvorena trenutna sesija, što će zahtijevati ponovnu prijavu uklljučujući i dvostruku autentifikaciju, ako je aktivna. Aktivne sesije na drugim uređajima ostati će aktivne još jedan sat." }, "emailChanged": { - "message": "Adresa e-pošte je promijenjena" + "message": "Adresa e-pošte spremljena" }, "logBackIn": { "message": "Molimo, ponovno se prijavi." @@ -1097,7 +1100,7 @@ "message": "Postavke ključa za šifriranje promijenjene" }, "dangerZone": { - "message": "Opasna zona" + "message": "OPASNA zona!" }, "dangerZoneDesc": { "message": "Pažljivo, ove akcije su konačne i ne mogu se poništiti!" @@ -1106,10 +1109,10 @@ "message": "Deautoriziraj sesije" }, "deauthorizeSessionsDesc": { - "message": "Sumnjaš da je na tvoj račun prijavljeno s nekog drugog uređaja? Deautoriziranje sesija koje su prethodno korištene je sigurnosni korak koji se savjetuje ako je prethodno korišteno neko javno računalo ili je lozinka slučajno spremljena na tuđe računalo. Ovaj će koriak, također, očistiti sve prehodno zapamćene prijave u dva koraka." + "message": "Sumnjaš da je na tvoj račun prijavljeno s nekog drugog uređaja? Deautoriziranje sesija koje su prethodno korištene je sigurnosni korak koji se savjetuje ako je prethodno korišteno neko javno računalo ili je lozinka slučajno spremljena na tuđe računalo. Ovaj će korak, također, očistiti sve prehodno zapamćene prijave dvostrukom autentifikacijom." }, "deauthorizeSessionsWarning": { - "message": "Ako nastaviš, biti će zatvorena trenutna sesija, što će zahtijevati ponovnu prijavu uklljučujući i prijavu u dva koraka, ako je aktivna. Aktivne sesije na drugim uređajima mogu ostati aktivne još jedan sat." + "message": "Ako nastaviš, trenutna sesija će biti zatvorena, što će zahtijevati ponovnu prijavu uklljučujući i prijavu dvostrukom autentifikacijom, ako je ona aktivna. Aktivne sesije na drugim uređajima mogu ostati aktivne još jedan sat." }, "sessionsDeauthorized": { "message": "Sve sesije deautorizirane" @@ -1166,7 +1169,7 @@ "message": "Postoji problem s podacima za uvoz. Potrebno je razriješiti doljenavedene greške u izvornoj datoteci i pokušati ponovno." }, "importSuccess": { - "message": "Uvoz podataka u trezor je uspjelo." + "message": "Uvoz podataka u trezor je uspio" }, "importWarning": { "message": "Uvoziš podatke u $ORGANIZATION$. Tvoji podaci možda će biti podijeljeni s članovima ove organizacije. Želiš li svejedno uvesti podatke?", @@ -1193,10 +1196,10 @@ "message": "Odaberi datoteku za uvoz" }, "chooseFile": { - "message": "Choose File" + "message": "Odaberi datoteku" }, "noFileChosen": { - "message": "No file chosen" + "message": "Nije odabrana datoteka" }, "orCopyPasteFileContents": { "message": "ili kopiraj/zalijepi sadržaj uvozne datoteke" @@ -1218,10 +1221,10 @@ "message": "Postavke" }, "preferencesDesc": { - "message": "Prilagodi svoje iskustvo trezora." + "message": "Prilagodi svoje iskustvo web trezora." }, "preferencesUpdated": { - "message": "Postavke su ažurirane" + "message": "Postavke spremljene" }, "language": { "message": "Jezik" @@ -1230,17 +1233,10 @@ "message": "Promijeni jezik web trezora." }, "enableFavicon": { - "message": "Show website icons" + "message": "Prikaži ikone mrežnih mjesta" }, "faviconDesc": { - "message": "Show a recognizable image next to each login." - }, - "enableGravatars": { - "message": "Omogući Gravatar", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Koristi slike učitane s gravatar.com." + "message": "Prikaži prepoznatljivu sliku pored svake prijave." }, "enableFullWidth": { "message": "Uključi raspored s punom širinom", @@ -1289,19 +1285,32 @@ } }, "domainsUpdated": { - "message": "Domene ažurirane" + "message": "Domene spremljene" }, "twoStepLogin": { - "message": "Prijava u dva koraka" + "message": "Prijava dvostrukom autentifikacijom" + }, + "twoStepLoginEnforcement": { + "message": "Prisilna prijava dvostrukom autentifikacijom" }, "twoStepLoginDesc": { "message": "Osiguraj svoj račun dodavanjem dodatnog koraka prilikom prijave." }, - "twoStepLoginOrganizationDesc": { - "message": "Zahtjevaj prijavu u dva koraka za svoje korisnike u organiziaciji konfigurirajući pružatelje usluga na razini organizacije." + "twoStepLoginOrganizationDescStart": { + "message": "Prisili korištenje prijave dvostrukom autentifikacijom koristeći", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Pravila prijave dvostrukom autentifikacijom" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Za prisilu korištenja prijave dvostrukom autentifikacijom kroz Duo, koristi donje postavke." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Ako je uključen SSO, prijava dvofaktorskom autentifikacijom može biti nametnuta od strane davatelja usluga." }, "twoStepLoginRecoveryWarning": { - "message": "Uključivanje prijave u dva koraka ti može trajno onemogućiti pristup Bitwarden računu. Kôd za oporavak ti omogućuje pristup računu u slučaju da više ne možeš koristiti redovnog pružatelja prijave u dva koraka (npr. izgubiš svoj uređaj). Bitwarden podrška ti neće moći pomoći ako izgubiš pristup svojem računu. Savjetujemo da zapišeš ili ispišeš kôd za oporavak i spremiš ga na sigurno mjesto." + "message": "Uključivanje prijave dvostrukom autentifikacijom može ti trajno onemogućiti pristup Bitwarden računu. Kôd za oporavak ti omogućuje pristup računu u slučaju kada više ne možeš koristiti redovnog pružatelja prijave dvostrukom autentifikacijom (npr. izgubiš svoj uređaj). Bitwarden podrška neće ti moći pomoći ako izgubiš pristup svojem računu. Savjetujemo da zapišeš ili ispišeš kôd za oporavak i spremiš ga na sigurno mjesto." }, "viewRecoveryCode": { "message": "Kôd za oporavak" @@ -1317,7 +1326,7 @@ "message": "Omogućeno" }, "restoreAccess": { - "message": "Restore access" + "message": "Vrati pristup" }, "premium": { "message": "Premium", @@ -1345,19 +1354,19 @@ "message": "Onemogući" }, "revokeAccess": { - "message": "Revoke access" + "message": "Opozovi pristup" }, "twoStepLoginProviderEnabled": { - "message": "Ovaj pružatelj prijave u dva koraka je omogućen na tvojem računu." + "message": "Ovaj pružatelj prijave dvostrukom autentifikacijom je omogućen na tvojem računu." }, "twoStepLoginAuthDesc": { - "message": "Unesi svoju glavnu lozinku za promjenu postavki prijave u dva koraka." + "message": "Unesi glavnu lozinku za promjenu postavki prijave u dva koraka." }, "twoStepAuthenticatorDesc": { "message": "Za aktivaciju prijave u dva koraka autentifikatorskom aplikacijom slijedi ove korake:" }, "twoStepAuthenticatorDownloadApp": { - "message": "Preuzmi autentifikatorsku aplikaciju" + "message": "Preuzmi aplikaciju za dvostruku autentifikaciju" }, "twoStepAuthenticatorNeedApp": { "message": "Trebaš aplikaciju za dvostruku autentifikaciju? Preuzmi jednu od ovih" @@ -1387,10 +1396,10 @@ "message": "Ako trebaš dodati novi uređaj, dolje se nalazi QR kôd (ili ključ) kojeg zahtijeva tvoja autentifikatorska aplikacija." }, "twoStepDisableDesc": { - "message": "Sigurno želiš onemogućiti ovog pružatelja prijave u dva koraka?" + "message": "Sigurno želiš onemogućiti ovog pružatelja prijave dvostrukom autentifikacijom?" }, "twoStepDisabled": { - "message": "Pružatelj usluge prijave u dva koraka je onemogućen." + "message": "Pružatelj usluge prijave dvostrukom autentifikacijom je onemogućen." }, "twoFactorYubikeyAdd": { "message": "Dodaj novi YubiKey u vaš račun" @@ -1408,7 +1417,7 @@ "message": "Spremite obrazac." }, "twoFactorYubikeyWarning": { - "message": "Zbog platformskih ograničenja, YubiKey nije moguće koristiti s Bitwarden aplikacijama na svim platformama. Za pristup računu kada nije moguće koristiti YubiKey, trebalo bi uključiti drugog pružatelja prijave u dva koraka. Platforme na kojima je YubiKey podržan:" + "message": "Zbog platformskih ograničenja, YubiKey nije moguće koristiti s Bitwarden aplikacijama na svim platformama. Za pristup računu kada nije moguće koristiti YubiKey, trebalo bi uključiti drugog pružatelja prijave dvostrukom autentifikacijom. Platforme na kojima je YubiKey podržan:" }, "twoFactorYubikeySupportUsb": { "message": "Web trezor, desktop aplikacija, CLI i sva proširenja preglednika na uređajima s USB priključkom na koji se može spojiti tvoj YubiKey." @@ -1471,7 +1480,7 @@ "message": "API Hostname" }, "twoFactorEmailDesc": { - "message": "Za korištenje prijave u dva koraka e-poštom prati ove korake:" + "message": "Za korištenje prijave dvostrukom autentifikacijom e-poštom slijedi ove korake:" }, "twoFactorEmailEnterEmail": { "message": "Unesi e-poštu na koju želiš primati verifikacijske kodove" @@ -1510,31 +1519,31 @@ "message": "Spremi obrazac." }, "twoFactorU2fWarning": { - "message": "Zbog platformskih ograničenja, FIDO U2F nije moguće koristiti s Bitwarden aplikacijama na svim platformama. Za pristup računu kada nije moguće koristiti FIDO U2F trebalo bi uključiti drugog pružatelja prijave u dva koraka. Platforme na kojima je FIDO U2F podržan:" + "message": "Zbog platformskih ograničenja, FIDO U2F nije moguće koristiti s Bitwarden aplikacijama na svim platformama. Za pristup računu kada nije moguće koristiti FIDO U2F trebalo bi uključiti drugog pružatelja prijave dvostrukom autentifikacijom. Platforme na kojima je FIDO U2F podržan:" }, "twoFactorU2fSupportWeb": { - "message": "Web trezor i proširenja preglednika na stolnim/prijenosnim računalima s U2F omogućenim preglednikom (npr. Chrome, Opera, Vivaldi ili Firefox s omogućenim FIDO U2F)." + "message": "Web trezor i proširenja preglednika na stolnim/prijenosnim računalima s U2F podržanim preglednikom (npr. Chrome, Opera, Vivaldi ili Firefox s omogućenim FIDO U2F)." }, "twoFactorU2fWaiting": { "message": "Sustav čeka da dodirneš tipku na svom sigurnosnom ključu" }, "twoFactorU2fClickSave": { - "message": "Klikni na tipku „Spremi” za omogućavanje ovog sigurnosnog ključa za prijavu u dva koraka." + "message": "Klikni na tipku „Spremi” za omogućavanje ovog sigurnosnog ključa za prijavu dvostrukom autentifikacijom." }, "twoFactorU2fProblemReadingTryAgain": { "message": "Došlo je do pogreške kod očitavanja sigurnosnog ključa. Pokušaj ponovno." }, "twoFactorWebAuthnWarning": { - "message": "Zbog platformskih ograničenja, WebAuthn nije moguće koristiti s Bitwarden aplikacijama na svim platformama. Za pristup računu kada nije moguće koristiti WebAuthn, trebalo bi uključiti drugog pružatelja prijave u dva koraka. Platforme na kojima je WebAuthn podržan:" + "message": "Zbog platformskih ograničenja, WebAuthn nije moguće koristiti s Bitwarden aplikacijama na svim platformama. Za pristup računu kada nije moguće koristiti WebAuthn, trebalo bi uključiti drugog pružatelja prijave dvostrukom autentifikacijom. Platforme na kojima je WebAuthn podržan:" }, "twoFactorWebAuthnSupportWeb": { - "message": "Web trezor i proširenja preglednika na stolnim/prijenosnim računalima s WebAuthn omogućenim preglednikom (npr. Chrome, Opera, Vivaldi ili Firefox s omogućenim WebAuthn)." + "message": "Web trezor i proširenja preglednika na stolnim/prijenosnim računalima s WebAuthn podržanim preglednikom (npr. Chrome, Opera, Vivaldi ili Firefox s omogućenim WebAuthn)." }, "twoFactorRecoveryYourCode": { - "message": "Tvoj kôd za oporavak Bitwarden prijave u dva koraka" + "message": "Tvoj kôd za oporavak Bitwarden prijave dvostrukom autentifikacijom" }, "twoFactorRecoveryNoCode": { - "message": "Još nije omogućen niti jedan pružatelj prijave u dva koraka. Nakon omogućavanja prijave u dva koraka, ovdje ćeš pronaći svoj kôd za oporavak." + "message": "Još nije omogućen niti jedan pružatelj prijave dvostrukom autentifikacijom. Nakon omogućavanja, ovdje ćeš pronaći svoj kôd za oporavak." }, "printCode": { "message": "Ispis kôda", @@ -1547,11 +1556,15 @@ "message": "Identificiraj i zatvori sigurnosne praznine u svojim mrežnim računima klikom na izvješća u nastavku.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identificiraj i zatvori sigurnosne rupe u korisničkom računima svoje organizacije pregledom izvješća.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Izvještaj neosiguranih web mjesta" }, "unsecuredWebsitesReportDesc": { - "message": "Pristupanje neosiguranim web stranicama (http://) može biti opasno. Ako web mjesto omogućuje, uvijek mu pristupaj koristeći siguran način (https://) kako bi tvoja veza bila šifrirana." + "message": "Pristupanje neosiguranim web stranicama (http://) može biti opasno. Ako web mjesto podržava, uvijek mu pristupaj koristeći siguran način (https://) kako bi tvoja veza bila šifrirana." }, "unsecuredWebsitesFound": { "message": "Pronađena neosigurana web mjesta" @@ -1569,16 +1582,16 @@ "message": "Niti jedna stavka u tvom trezoru nema neosigurane URI-je." }, "inactive2faReport": { - "message": "Izvještaj o neaktivnim 2FA" + "message": "Izvještaj o neaktivnim prijavama dvostrukom autentifikacijom" }, "inactive2faReportDesc": { - "message": "Dvostruka autentifikacija (2FA) je važna postavka sigurnosti koja ti pomaže osigurati svoj račun. Ako web mjesto nudi, uvijek bi trebalo omogućiti dvostruku autentifikaciju." + "message": "Prijava dvostrukom autentifikacijom je važna postavka sigurnosti koja ti pomaže osigurati svoj račun. Ako web mjesto nudi, uvijek bi trebalo omogućiti prijavu dvostrukom autentifikacijom." }, "inactive2faFound": { - "message": "Pronađene prijave bez 2FA" + "message": "Prijave na kojima nije omogućena dvostruka autentifikacija" }, "inactive2faFoundDesc": { - "message": "Pronašli smo $COUNT$ web mjesta u tvom trezoru za koje nije omogućena dvostruka autentifikacija (izvor: 2fa.directory). Za bolju zaštitu ovih računa, treba na njima omogućiti dvostruku autentifikaciju.", + "message": "Pronašli smo $COUNT$ web mjesta u tvom trezoru za koje nije omogućena prijava dvostrukom autentifikacijom (izvor: 2fa.directory). Za bolju zaštitu ovih računa, potrebno je omogućiti dvostruku autentifikaciju.", "placeholders": { "count": { "content": "$1", @@ -1587,7 +1600,7 @@ } }, "noInactive2fa": { - "message": "Nije pronađeno niti jedno web mjesto u tvom trezoru za koje nedostaje dvostruka autentifikacija." + "message": "Nije pronađeno niti jedno web mjesto u tvom trezoru za koje nedostaje prijava dvostrukom autentifikacijom." }, "instructions": { "message": "Upute" @@ -1650,7 +1663,7 @@ "message": "Izvještaj o istim lozinkama" }, "reusedPasswordsReportDesc": { - "message": "Ako je usluga koju koristiš kompromitirana, korištenje iste lozinke negdje drugdje omogućuješ hakerima da jednostavno pristupe tvojim drugim računima. Za svaku bi uslugu trebalo korsititi drugu lozinku." + "message": "Ako je usluga koju koristiš kompromitirana, korištenjem iste lozinke negdje drugdje omogućuješ hakerima da jednostavno pristupe tvojim drugim računima. Za svaku bi uslugu trebalo korsititi drugu lozinku." }, "reusedPasswordsFound": { "message": "Pronađene iste lozinke" @@ -1686,7 +1699,7 @@ "message": "Provjeri sva korisnička imena ili adrese e-pošte koje koristiš." }, "checkBreaches": { - "message": "Provjerite proboje" + "message": "Provjeri proboje" }, "breachUsernameNotFound": { "message": "$USERNAME$ nije pronađeno u znanim curenjima podataka.", @@ -1739,10 +1752,10 @@ "message": "Naplata" }, "billingPlanLabel": { - "message": "Billing plan" + "message": "Naplata" }, "paymentType": { - "message": "Payment type" + "message": "Način plaćanja" }, "accountCredit": { "message": "Sredstva računa", @@ -1783,7 +1796,7 @@ "message": "1 GB šifriranog prostora za pohranu podataka." }, "premiumSignUpTwoStep": { - "message": "Dodatne mogućnosti za prijavu u dva koraka kao što su YubiKey, FIDO U2F i Duo." + "message": "Dodatne mogućnosti za prijavu dvostrukom autentifikacijom kao što su YubiKey, FIDO U2F i Duo." }, "premiumSignUpEmergency": { "message": "Pristup u nuždi" @@ -1861,7 +1874,7 @@ "message": "godišnje" }, "yr": { - "message": "yr" + "message": "god." }, "month": { "message": "mjesečno" @@ -1883,7 +1896,7 @@ } }, "paymentChargedWithTrial": { - "message": "Vaš plan dolazi s besplatnom probnom verzijom od 7 dana. Vaš način plaćanja neće biti naplaćen dok probno razdoblje ne završi. Možete otkazati u bilo kojem trenutku." + "message": "Plan dolazi s besplatnom probnom verzijom od 7 dana. Tvoj način plaćanja neće biti terećen dok ne završi probno razdoblje. Možeš otkazati u bilo kojem trenutku." }, "paymentInformation": { "message": "Podaci o plaćanju" @@ -1892,13 +1905,13 @@ "message": "Podaci za dostavu računa" }, "billingTrialSubLabel": { - "message": "Your payment method will not be charged during the 7 day free trial." + "message": "Plaćanje neće biti provedno tijekom 7 dnevnog probnog razdoblja." }, "creditCard": { "message": "Kreditna kartica" }, "paypalClickSubmit": { - "message": "Klikni PayPay za prijavu na svoj PayPal račun, a zatim „Nastavi” za plaćanje." + "message": "Klikni PayPal za prijavu na svoj PayPal račun, a zatim „Nastavi” za plaćanje." }, "cancelSubscription": { "message": "Otkaži pretplatu" @@ -1925,10 +1938,10 @@ "message": "Sigurno želiš otkazati? Izgubiti ćeš pristup svim ovim pretplatnim značajkama kad istekne rok naplate." }, "canceledSubscription": { - "message": "Pretplata otkazana." + "message": "Pretplata otkazana" }, "neverExpires": { - "message": "Nikada ne istječe" + "message": "Nikada ne ističe" }, "status": { "message": "Status" @@ -2066,7 +2079,7 @@ } }, "uploadLicenseFilePremium": { - "message": "Za nadogradnju svojeg računa na premium članstvo, trebaš prenijeti valjanu licencnu datoteku." + "message": "Za nadogradnju svojeg računa na Premium članstvo, trebaš prenijeti valjanu licencnu datoteku." }, "uploadLicenseFileOrg": { "message": "Za stvaranje svoje vlastite lokalno smještene organizacije, potrrebno je prenijeti valjanu licencnu datoteku." @@ -2081,7 +2094,7 @@ "message": "Opće informacije" }, "organizationName": { - "message": "Naziv organizacije" + "message": "Naziv Organizacije" }, "accountOwnedBusiness": { "message": "Ovaj je račun vlasništvo tvrtke." @@ -2093,7 +2106,7 @@ "message": "Naziv tvrtke" }, "chooseYourPlan": { - "message": "Odaberi svoju paket" + "message": "Odaberi svoj plan" }, "users": { "message": "Korisnici" @@ -2102,7 +2115,7 @@ "message": "Korisničke licence" }, "additionalUserSeats": { - "message": "Dodatna korisnička licenca" + "message": "Dodatne korisničke licence" }, "userSeatsDesc": { "message": "Broj korisničkih licenci" @@ -2224,7 +2237,7 @@ "message": "Lokalni poslužitelj (neobavezno)" }, "usersGetPremium": { - "message": "Korisnici imaju pristup premium značajkama" + "message": "Korisnici imaju pristup Premium značajkama" }, "controlAccessWithGroups": { "message": "Upravljanje korisničkim pristupom pomoću grupa" @@ -2251,7 +2264,7 @@ } }, "trialThankYou": { - "message": "Thanks for signing up for Bitwarden for $PLAN$!", + "message": "Hvala na prijavi za $PLAN$!", "placeholders": { "plan": { "content": "$1", @@ -2260,7 +2273,7 @@ } }, "trialPaidInfoMessage": { - "message": "Your $PLAN$ 7 day free trial will be converted to a paid subscription after 7 days.", + "message": "Tvoj plan $PLAN$ će biti pretvoren u plaćenu pretplatu nakon isteka besplatnog probnog razdoblja od 7 dana.", "placeholders": { "plan": { "content": "$1", @@ -2269,7 +2282,7 @@ } }, "trialConfirmationEmail": { - "message": "We've sent a confirmation email to your team's billing email at " + "message": "Poslali smo e-poštu potvrde tvojoj grupi naplate na " }, "monthly": { "message": "mjesečno" @@ -2278,7 +2291,7 @@ "message": "godišnje" }, "annual": { - "message": "Annual" + "message": "godišnje" }, "basePrice": { "message": "Osnovna cijena" @@ -2290,7 +2303,7 @@ "message": "Tvoja nova organizacija je spremna za početak!" }, "organizationUpgraded": { - "message": "Tvoja organizacija je nadograđena." + "message": "Organizacija nadograđena" }, "leave": { "message": "Izađi" @@ -2299,10 +2312,10 @@ "message": "Sigurno želiš napustiti ovu organizaciju?" }, "leftOrganization": { - "message": "Organizacija napuštena." + "message": "Organizacija napuštena" }, "defaultCollection": { - "message": "Zadana Zbirka" + "message": "Zadana zbirka" }, "getHelp": { "message": "Potraži pomoć" @@ -2347,10 +2360,10 @@ "message": "Sigurno želiš ukoniti ovog korisnika?" }, "removeOrgUserConfirmation": { - "message": "When a member is removed, they no longer have access to organization data and this action is irreversible. To add the member back to the organization, they must be invited and onboarded again." + "message": "Uklanjanjem, člana gubi pristup podacima organizacije i ovo nije moguće poništiti. Za ponovno dodavanje članova u organizaciju mora ih se ponovno pozvati i odobriti." }, "revokeUserConfirmation": { - "message": "When a member is revoked, they no longer have access to organization data. To quickly restore member access, go to the Revoked tab." + "message": "Odbijeni član više nema pristup podacima organizacije. Za brzi povrat pristupa članu, posjeti karticu Opozvano." }, "removeUserConfirmationKeyConnector": { "message": "Upozorenje! Ovaj korisnik koristi konektor za ključ kako bi upravljao svojim šifriranjem. Uklanjanjem korisnika iz tvoje organizacije korisnički će račun biti trajno onemogućen. Ovu opciju nije moguće opozvati. Sigurno želiš nastaviti?" @@ -2491,31 +2504,31 @@ "message": "Prijava" }, "changedPassword": { - "message": "Promijenjena lozinka računa." + "message": "Spremljena lozinka računa" }, "enabledUpdated2fa": { - "message": "Omogućena/ažurirana prijava u dva koraka." + "message": "Omogućena/ažurirana prijava dvostrukom autentifikacijom" }, "disabled2fa": { - "message": "Onemogućena prijava u dva koraka." + "message": "Onemogućena prijava dvostrukom autentifikacijom" }, "recovered2fa": { - "message": "Račun oporavljen prijavom u dva koraka." + "message": "Račun s prijavom dvostrukom autentifikacijom oporavljen." }, "failedLogin": { "message": "Prijava pogrešnom lozinkom neuspješna." }, "failedLogin2fa": { - "message": "Prijava pogrešnom prijavom u dva koraka neuspješna." + "message": "Prijava neuspješna zbog pogrešne dvostruke autentifikacije." }, "exportedVault": { - "message": "Izvezeni trezor." + "message": "Trezor izvezen" }, "exportedOrganizationVault": { - "message": "Izvezen organizacijski trezor." + "message": "Organizacijski trezor izvezen" }, "editedOrgSettings": { - "message": "Uređene mogućnosti organizacije." + "message": "Mogućnosti organizacije spremljene" }, "createdItemId": { "message": "Stvorena stavka $ID$.", @@ -2554,7 +2567,7 @@ } }, "viewAllLoginOptions": { - "message": "View all log in options" + "message": "Pogledaj sve mogućnosti prijave" }, "viewedItemId": { "message": "Gledana stavka $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Gledan kontrolni broj za stavku $ID$.", "placeholders": { @@ -2701,7 +2723,7 @@ } }, "removeUserIdAccess": { - "message": "Remove $ID$ access", + "message": "Ukloni pristup $ID$", "placeholders": { "id": { "content": "$1", @@ -2710,7 +2732,7 @@ } }, "revokedUserId": { - "message": "Revoked organization access for $ID$.", + "message": "Opozvan pristup organizaciji za $ID$.", "placeholders": { "id": { "content": "$1", @@ -2719,7 +2741,7 @@ } }, "restoredUserId": { - "message": "Restored organization access for $ID$.", + "message": "Obnovljen pristup organizaciji za $ID$.", "placeholders": { "id": { "content": "$1", @@ -2728,7 +2750,7 @@ } }, "revokeUserId": { - "message": "Revoke $ID$ access", + "message": "Opozovi pristup za $ID$", "placeholders": { "id": { "content": "$1", @@ -2869,7 +2891,7 @@ "message": "Uredi grupe kojima ovaj korisnik pripada." }, "invitedUsers": { - "message": "Pozvan/i korisnik/ci." + "message": "Korisnik/ci pozvan/i" }, "resendInvitation": { "message": "Ponovno slanje pozivnice" @@ -2878,7 +2900,7 @@ "message": "Ponovno slanje e-pošte" }, "hasBeenReinvited": { - "message": "$USER$ je ponovno pozvan.", + "message": "$USER$ je ponovno pozvan", "placeholders": { "user": { "content": "$1", @@ -2890,10 +2912,10 @@ "message": "Autoriziraj" }, "confirmUser": { - "message": "Autoriziraj korisnika" + "message": "Potvrdi korisnika" }, "hasBeenConfirmed": { - "message": "$USER$ je autoriziran.", + "message": "$USER$ je potvrđen.", "placeholders": { "user": { "content": "$1", @@ -2902,7 +2924,7 @@ } }, "confirmUsers": { - "message": "Autoriziraj korisnike" + "message": "Potvrdi korisnike" }, "usersNeedConfirmed": { "message": "Postoje korisnici koji su potvrdili svoj poziv, ali neće imati pristup organizaciji sve dok ih se ne autorizira." @@ -2926,7 +2948,7 @@ "message": "U primljenoj e-pošti nalazi se veza za potvrdu." }, "emailVerified": { - "message": "Adresa e-pošte je provjerena." + "message": "Adresa e-pošte je provjerena" }, "emailVerifiedFailed": { "message": "Ne možeš potvrditi svoju e-poštu? Pošalji novu poruku." @@ -2971,10 +2993,10 @@ "message": "Zapamti adresu e-pošte" }, "recoverAccountTwoStepDesc": { - "message": "Ako ne možeš pristupiti računu koristeći svoje redovne metode prijave u dva koraka, možeš iskoristiti svoj kôd za oporavak kako bi se u potpunosti onesposobili svi pružatelji prijave u dva koraka na tvojem računu." + "message": "Ako ne možeš pristupiti računu koristeći svoje redovne načine prijave dvostrukom autentifikacijom, možeš iskoristiti svoj kôd za oporavak kako bi se u potpunosti onesposobili svi pružatelji prijave dvostrukom autentifikacijom na tvojem računu." }, "recoverAccountTwoStep": { - "message": "Oporavi račun prijave u dva koraka" + "message": "Oporavi račun prijave dvostrukom autentifikacijom" }, "twoStepRecoverDisabled": { "message": "Prijava u dva koraka je onemogućena na tvojem računu." @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Moja organizacija" }, + "organizationInfo": { + "message": "Info o organizaciji" + }, "deleteOrganization": { "message": "Izbriši organizaciju" }, @@ -3028,7 +3053,7 @@ "message": "Organizacija izmijenjena" }, "taxInformation": { - "message": "Porezne informacije" + "message": "Porezni podaci" }, "taxInformationDesc": { "message": "Možete unijeti svoj porezni broj (VAT ID) i/ili adresu za prikaz na fakturama." @@ -3112,7 +3137,7 @@ "message": "Unesi id instalacije" }, "limitSubscriptionDesc": { - "message": "Ograničite broj korisnika u pretplati. Kada je broj dosegnut, neće biti moguće pozvati nove korisnike." + "message": "Ograniči broj korisnika u pretplati. Kada je broj dosegnut, neće biti moguće pozvati nove korisnike." }, "maxSeatLimit": { "message": "Najveći dozvoljeni broj korisnika (opcionalno)", @@ -3277,7 +3302,7 @@ "message": "Označavanjem ove kućice slažete se sa sljedećim:" }, "acceptPoliciesRequired": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "Uvjeti korištenja i Politika privatnosti nisu prihvaćeni." }, "termsOfService": { "message": "Uvjeti korištenja" @@ -3320,7 +3345,7 @@ "description": "ex. Date this item was updated" }, "dateCreated": { - "message": "Created", + "message": "Stvoreno", "description": "ex. Date this item was created" }, "datePasswordUpdated": { @@ -3328,10 +3353,10 @@ "description": "ex. Date this password was updated" }, "organizationIsDisabled": { - "message": "Organizacija je onemogućena." + "message": "Organizacija suspendirana" }, "disabledOrganizationFilterError": { - "message": "Items in suspended organizations cannot be accessed. Contact your organization owner for assistance." + "message": "Stavkama u suspendiranoj Organizaciji se ne može pristupiti. Kontaktiraj vlasnika Organizacije za pomoć." }, "licenseIsExpired": { "message": "Licenca je istekla." @@ -3401,13 +3426,13 @@ "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "fingerprintMatchInfo": { - "message": "Please make sure your vault is unlocked and Fingerprint phrase matches the other device." + "message": "Provjeri je li trezor otključan i slaže li se jedinstvena fraza s drugim uređajem." }, "fingerprintPhraseHeader": { - "message": "Fingerprint phrase" + "message": "Jedinstvena fraza" }, "dontAskFingerprintAgain": { - "message": "Ne pitaj više za potvrdu jedinstvene fraze (Nije pozeljno)", + "message": "Nikada ne traži potvrdu jedinstvene fraze za pozvane korisnike (nije preporučeno)", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "free": { @@ -3464,19 +3489,19 @@ "message": "Kloniraj" }, "masterPassPolicyTitle": { - "message": "Master password requirements" + "message": "Pravila glavne lozinke" }, "masterPassPolicyDesc": { "message": "Postavi smjernice sigurnosti koju glavna lozinka mora zadovoljiti." }, "twoStepLoginPolicyTitle": { - "message": "Require two-step login" + "message": "Zahtijevaj prijavu dvostrukom autentifikacijom" }, "twoStepLoginPolicyDesc": { - "message": "Zahtijevaj da korisnici uključe prijavu u dva koraka na svojim osobnim računima." + "message": "Zahtijevaj da korisnici uključe prijavu dvostrukom autentifikacijom na svojim osobnim računima." }, "twoStepLoginPolicyWarning": { - "message": "Članovi organizacije koji nisu Vlasnici ili Administratori i nemaju uključenu prijavu u dva koraka na svojim osobnim računima biti će uklonjeni iz organizacije i primiti će o tome obavijest e-poštom." + "message": "Članovi organizacije koji nisu Vlasnici ili Administratori i nemaju uključenu prijavu dvostrukom autentifikacijom na svojim osobnim računima biti će uklonjeni iz organizacije i primiti će o tome obavijest e-poštom." }, "twoStepLoginPolicyUserWarning": { "message": "Član si organizacije koja zahtijeva uključenu prijavu u dva koraka na tvojem računu. Ako onemogućiš sve pružatelje prijave u dva koraka, automatski ćeš biti uklonjen/a iz organizacije." @@ -3542,10 +3567,10 @@ "message": "Nakon isteka trezora" }, "vaultTimeoutActionLockDesc": { - "message": "Zaključani trezor, za ponovni pristup, zahtijeva ponovni unos tvoje glavne lozinke." + "message": "Potrebno je ponovno unijeti glavnu lozinku ili na drugi način otključati za pristup tvom trezoru." }, "vaultTimeoutActionLogOutDesc": { - "message": "Odjavljeni trezor, za ponovni pristup, zahtijeva ponovnu provjeru autentičnosti." + "message": "Potrebno je ponovno unijeti korisničko ime i glavnu lozinku za pristup tvom trezoru." }, "lock": { "message": "Zaključaj", @@ -3571,7 +3596,7 @@ "message": "Želiš li zaista trajno izbrisati ovu stavku?" }, "permanentlyDeletedItem": { - "message": "Trajno izbrisana stavka" + "message": "Stavka trajno izbrisana" }, "permanentlyDeletedItems": { "message": "Trajno izbrisane stavke" @@ -3586,7 +3611,7 @@ } }, "permanentlyDeletedItemId": { - "message": "Trajno izbrisana stavka $ID$.", + "message": "Stavka $ID$ trajno izbrisana", "placeholders": { "id": { "content": "$1", @@ -3625,7 +3650,7 @@ } }, "restoredItemId": { - "message": "Stavka vraćena $ID$.", + "message": "Stavka $ID$ vraćena", "placeholders": { "id": { "content": "$1", @@ -3690,11 +3715,17 @@ "ssoIdentifierRequired": { "message": "Potreban je identifikator organizacije." }, + "ssoIdentifier": { + "message": "SSO identifikator" + }, + "ssoIdentifierHint": { + "message": "Dajte ovaj ID svojim članovima za prijavu putem SSO-a." + }, "unlinkSso": { "message": "Odspoji SSO" }, "unlinkSsoConfirmation": { - "message": "Sigurno želiš napustiti ovu organizaciju?" + "message": "Sigurno želiš prekinuti SSO vezu ove organizacije?" }, "linkSso": { "message": "Spoji SSO" @@ -3712,7 +3743,7 @@ "message": "Članovi organizacije koji nisu Vlasnici ili Administratori, a već su članovi neke druge organizacije, biti će uklonjeni iz tvoje organizacije." }, "requireSso": { - "message": "SSO autentifikacija" + "message": "Zahtijevaj SSO autentifikaciju" }, "requireSsoPolicyDesc": { "message": "Zahtijeva da se korisnici prijave koristeći tvrtkin SSO." @@ -3803,7 +3834,7 @@ "message": "Onemogućeno" }, "revoked": { - "message": "Revoked" + "message": "Opozvano" }, "sendLink": { "message": "Veza na Send", @@ -4016,10 +4047,10 @@ } }, "personalOwnership": { - "message": "Osobno vlasništvo" + "message": "Ukloni osobni trezor" }, "personalOwnershipPolicyDesc": { - "message": "Zahtijevaj korisnike spremanje stavki trezora u organizaciju tako što će ukloniti opciju osobnog vlasništva." + "message": "Zahtijevaj korisnike spremanje stavki u trezor organizacije uklanjanjem opcije osobnog trezora." }, "personalOwnershipExemption": { "message": "Vlasnici i Administratori organizacije nisu obuhvaćeni za provedbu ovog pravila." @@ -4091,11 +4122,14 @@ "permissions": { "message": "Dozvole" }, + "permission": { + "message": "Dopuštenje" + }, "managerPermissions": { - "message": "Manager Permissions" + "message": "Dopuštenja upravitelja" }, "adminPermissions": { - "message": "Admin Permissions" + "message": "Dopuštenja administratora" }, "accessEventLogs": { "message": "Pristup zapisnicima događaja" @@ -4290,7 +4324,7 @@ "message": "Odjava uspješna!" }, "eventEnrollPasswordReset": { - "message": "Korisnik $ID$ ima uključenu mogućnost pomoći za ponovno postavljanje lozinke.", + "message": "Korisnik $ID$ učlanjen u ponovno postavljanje lozinke.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "Korisnik $ID$ ima isključenu mogućnost pomoći za ponovno postavljanje lozinke.", + "message": "Korisnik $ID$ se povukao iz ponovnog postavljanja lozinke.", "placeholders": { "id": { "content": "$1", @@ -4374,19 +4408,19 @@ "message": "Svi korisnici će automatski biti učlanjeni u ponovno postavljanje lozinke čim njihov poziv bude prihvaćen." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Postojeći korisnici organizacije neće biti retroaktivno učlanjeni u ponovno postavljanje lozinke. Morati će se sami učlaniti da bi administratori mogli ponovno postaviti njihove glaven lozinke." + "message": "Postojeći korisnici organizacije neće biti retroaktivno učlanjeni u ponovno postavljanje lozinke. Morati će se sami učlaniti kako bi administratori mogli ponovno postaviti njihove glavne lozinke." }, "resetPasswordPolicyAutoEnrollCheckbox": { "message": "Primoraj nove korisnike da budu automatski učlanjeni" }, "resetPasswordAutoEnrollInviteWarning": { - "message": "Pravilo ove organizacija automatski će te učlaniti u ponovno postalvjanje lozinke. Učlanjenje će omogućiti administratorima organizacije promjenu tvoje glavne lozinke." + "message": "Pravilo ove organizacija automatski će te učlaniti u ponovno postavljanje lozinke. Učlanjenje će omogućiti administratorima organizacije promjenu tvoje glavne lozinke." }, "resetPasswordOrgKeysError": { "message": "Odgovor organizacijskih ključeva je null" }, "resetPasswordDetailsError": { - "message": "Reset Password Details odgovor is null" + "message": "Odgovor ponovnog postavljanja lozinke je null" }, "trashCleanupWarning": { "message": "Stavke koje se nalaze u Smeću duže od 30 dana će biti automatski izbrisane." @@ -4407,7 +4441,7 @@ "message": "Ponovno slanje pozivnica" }, "resendNotification": { - "message": "Resend notification" + "message": "Ponovno pošalji obavijest" }, "noSelectedUsersApplicable": { "message": "Ova radnja nije primjenjiva niti na jednog odabranog korisnika." @@ -4416,10 +4450,10 @@ "message": "Sigurno želiš ukloniti sljedeće korisnike? Ova radnja može potrajati i nije ga moguće prekinuti ili poništiti." }, "removeOrgUsersConfirmation": { - "message": "When member(s) are removed, they no longer have access to organization data and this action is irreversible. To add the member back to the organization, they must be invited and onboarded again. The process may take a few seconds to complete and cannot be interrupted or canceled." + "message": "Uklanjanjem, član više nema pristup podacima organzacije i ova radnja je nepovratna. Za dodavanje člana natrag u organizaciju, moraju biti ponovno pozvani i učlanjeni. Proces uklanjanja može trajati nekoliko sekundi i nije ga moguće prekinuti ili otkazati." }, "revokeUsersWarning": { - "message": "When member(s) are revoked, they no longer have access to organization data. To quickly restore member access, go to the Revoked tab. The process may take a few seconds to complete and cannot be interrupted or canceled." + "message": "Opozivom, član više nema pristup podacima organzacije i ova radnja je nepovratna. Za brzu obnovu pristupa, pogledajte karticu Opoziv. Proces opoziva može trajati nekoliko sekundi i nije ga moguće prekinuti ili otkazati." }, "theme": { "message": "Tema" @@ -4443,22 +4477,22 @@ "message": "Status skupne radnje" }, "bulkConfirmMessage": { - "message": "Uspještno potvđeno." + "message": "Uspještno potvđeno" }, "bulkReinviteMessage": { - "message": "Uspješno ponovno pozvano." + "message": "Uspješno ponovno pozvano" }, "bulkRemovedMessage": { "message": "Uspješno uklonjeno" }, "bulkRevokedMessage": { - "message": "Revoked organization access successfully" + "message": "Uspješno opozvan pristup organizaciji" }, "bulkRestoredMessage": { - "message": "Restored organization access successfully" + "message": "Uspješno obnovljen pristup organizaciji" }, "bulkFilteredMessage": { - "message": "Isključeno, nije primijenjivo na ovu radnju." + "message": "Isključeno, nije primjenjivo na ovu radnju" }, "fingerprint": { "message": "Otisak prsta" @@ -4467,10 +4501,10 @@ "message": "Ukloni korisnike" }, "revokeUsers": { - "message": "Revoke users" + "message": "Opozovi korisnike" }, "restoreUsers": { - "message": "Restore users" + "message": "Obnovi korisnike" }, "error": { "message": "Greška" @@ -4482,25 +4516,29 @@ "message": "Postavke davatelja" }, "setupProviderLoginDesc": { - "message": "Pozvan si da postaviš novog davatelja usluga. Da bi nastavio, moraš se prijaviti ili stvoriti novi Bitwarden račun." + "message": "Trebaš postaviti novog davatelja usluga. Za nastavak, potrebno se prijaviti ili stvoriti novi Bitwarden račun." }, "setupProviderDesc": { - "message": "Unesi detalje u nastavku kako bi dovršio postavljanje davatelja usluga. Obrati se korisničkoj podršci ako imaš pitanja." + "message": "Unesi detalje u nastavku za dovršetak postavljanja davatelja usluga. Obrati se korisničkoj podršci ako imaš pitanja." }, "providerName": { "message": "Naziv davatelja" }, "providerSetup": { - "message": "Davatelj usluga je postavljen." + "message": "Davatelj usluga je postavljen" }, "clients": { "message": "Klijenti" }, + "client": { + "message": "Klijent", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Administrator davatelja usluge" }, "providerAdminDesc": { - "message": "Korisnik s najvišim pristupom koji može upravljati svim aspektima davatelja usluga kao i pristupiti i upravljati klijentskim organizacijama." + "message": "Korisnik s najvišim pristupom koji može upravljati svim vidovima davatelja usluga kao i pristupiti i upravljati klijentskim organizacijama." }, "serviceUser": { "message": "Servisni korisnik" @@ -4509,37 +4547,37 @@ "message": "Servisni korisnik može pristupiti i upravljati svim organizacijama." }, "providerInviteUserDesc": { - "message": "Pozovi novog korisnika svom davatelju usluga unosom adrese e-pošte njegovog Bitwarden računa ispod. Ako već nemaju Bitwarden račun, od njih će se tražiti da kreiraju novi račun." + "message": "Pozovi novog korisnika svom davatelju usluga unosom adrese e-pošte Bitwarden računa. Ako nemaju Bitwarden račun, trebati će kreirati novi." }, "joinProvider": { "message": "Pridruži se davatelju usluga" }, "joinProviderDesc": { - "message": "Pozvan si da se pridružiš gore navedenom davatelju usluga. Da bi prihvatio pozivnicu, moraš se prijaviti ili stvoriti novi Bitwarden račun." + "message": "Pozvan/a si da se pridružiš gore navedenom davatelju usluga. Za prihvat poziva, moraš se prijaviti ili stvoriti novi Bitwarden račun." }, "providerInviteAcceptFailed": { - "message": "Nije moguće prihvatiti pozivnicu. Zamoli administratora davatelja usluge da pošalje novu pozivnicu." + "message": "Nije moguće prihvatiti poziv. Zamoli administratora davatelja usluge da pošalje novu pozivnicu." }, "providerInviteAcceptedDesc": { - "message": "Ovom davatelju usluga možeš pristupiti nakon što administrator potvrdi tvoje članstvo. Poslat ćemo ti e-poštu kada se to dogodi." + "message": "Ovom davatelju usluga možeš pristupiti nakon što administrator potvrdi tvoje članstvo o čemu ćemo te obavijestiti e-poštom." }, "providerUsersNeedConfirmed": { - "message": "Imaš korisnike koji su prihvatili poziv, ali ih još uvijek treba potvrditi. Korisnici neće imati pristup davatelju usluga dok ne budu potvrđeni." + "message": "Imaš korisnike koji su prihvatili poziv, no potrebno ih je potvrditi. Dok god nisu potvrđeni, korisnici neće imati pristup davatelju usluga." }, "provider": { - "message": "Davatelj" + "message": "Davatelj usluga" }, "newClientOrganization": { "message": "Nova klijentska organizacija" }, "newClientOrganizationDesc": { - "message": "Stvori novu klijentsku organizaciju koja će biti povezana s tobom kao pružateljem usluga. Moći ćeš pristupiti ovoj organizaciji i upravljati njome." + "message": "Stvori novu klijentsku organizaciju koja će biti povezana s tobom kao davateljem usluga. Moći ćeš pristupiti ovoj organizaciji i upravljati njome." }, "addExistingOrganization": { "message": "Dodaj postojeću organizaciju" }, "myProvider": { - "message": "Moj davatelj" + "message": "Moj davatelj usluga" }, "addOrganizationConfirmation": { "message": "Sigurno želiš dodati $ORGANIZATION$ kao klijenta u $PROVIDER$?", @@ -4555,7 +4593,7 @@ } }, "organizationJoinedProvider": { - "message": "Organizacija uspješno dodana davatelju" + "message": "Organizacija uspješno dodana davatelju usluga" }, "accessingUsingProvider": { "message": "Pristup organizaciji pomoću davatelja usluge $PROVIDER$", @@ -4606,7 +4644,7 @@ "message": "Tvoju glavnu lozinku je nedavno promijenio administrator tvoje organizacije. Za pristup trezoru, potrebno je ažurirati glavnu lozinku, što će te odjaviti iz trenutne sesije, te ćeš se morati ponovno prijaviti. Aktivne sesije na drugim uređajima mogu ostati aktivne još sat vremena." }, "masterPasswordInvalidWarning": { - "message": "Tvoja glavna lozinka ne ispunjava zahtjeve politike ove organizacije. Da bi se pridružio organizaciji, moraš odmah ažurirati svoju glavnu lozinku. Ako nastaviš, odjavit ćeš se iz trenutne sesije te ćeš se morati ponovno prijaviti. Aktivne sesije na drugim uređajima mogu ostati aktivne do jedan sat." + "message": "Tvoja glavna lozinka ne zadovoljava pravila ove organizacije. Kako bi se pridružio organizaciji, moraš odmah ažurirati svoju glavnu lozinku. Ako nastaviš, odjavit ćeš se iz trenutne sesije te ćeš se morati ponovno prijaviti. Aktivne sesije na drugim uređajima mogu ostati aktivne do jedan sat." }, "maximumVaultTimeout": { "message": "Istek trezora" @@ -4627,7 +4665,7 @@ "message": "min." }, "vaultTimeoutPolicyInEffect": { - "message": "Pravila tvoje organizacije utječu na vremensko ograničenje trezora. Maksimalno dopušteno vremensko ograničenje trezora je $HOURS$ sati i $MINUTES$ minuta", + "message": "Pravila tvoje organizacije utječu na vremenski istek trezora. Najveće dozvoljeno vremensko ograničenje trezora je $HOURS$ sati i $MINUTES$ minuta", "placeholders": { "hours": { "content": "$1", @@ -4643,13 +4681,13 @@ "message": "Osobni istek trezora" }, "vaultTimeoutToLarge": { - "message": "Vrijeme isteka premašuje ograničenje koju je postavila tvoja organizacija." + "message": "Vrijeme isteka premašuje ograničenje koje je postavila tvoja organizacija." }, "vaultCustomTimeoutMinimum": { - "message": "Minimum custom timeout is 1 minute." + "message": "Najmanja prilagođena pauza je 1 minuta." }, "vaultTimeoutRangeError": { - "message": "Vault timeout is not within allowed range." + "message": "Istek trezora nije unutar zadanog vremena." }, "disablePersonalVaultExport": { "message": "Onemogući izvoz osobnog trezora" @@ -4703,7 +4741,7 @@ "message": "Dobij zahtjeve s krajnje točke korisničkih podataka" }, "additionalScopes": { - "message": "Prilagođeni opsegi" + "message": "Prilagođeni opsezi" }, "additionalUserIdClaimTypes": { "message": "Vrste zahtjeva za prilagođeni korisnički ID" @@ -4718,7 +4756,7 @@ "message": "Referentne vrijednosti klase konteksta zatražene provjere autentičnosti" }, "expectedReturnAcrValue": { - "message": "Očekivana \"acr\" vrijednost zahtjeva u odgovoru" + "message": "Očekivana „acr” vrijednost zahtjeva u odgovoru" }, "spEntityId": { "message": "ID SP entiteta" @@ -4727,22 +4765,22 @@ "message": "SAML 2.0 Metadata URL" }, "spAcsUrl": { - "message": "Assertion consumer service (ACS) URL" + "message": "URL Assertion consumer servisa (ACS)" }, "spNameIdFormat": { "message": "Name ID format" }, "spOutboundSigningAlgorithm": { - "message": "Outbound signing algorithm" + "message": "Algoritam odlaznog potpisivanja" }, "spSigningBehavior": { - "message": "Signing behavior" + "message": "Ponašanje potpisivanja" }, "spMinIncomingSigningAlgorithm": { - "message": "Minimum incoming signing algorithm" + "message": "Najmanji algoritam dolaznog potpisivanja" }, "spWantAssertionsSigned": { - "message": "Expect signed assertions" + "message": "Očekivanje potpisnih tvrdnji" }, "spValidateCertificates": { "message": "Provjeri certifikate" @@ -4751,25 +4789,25 @@ "message": "ID entiteta" }, "idpBindingType": { - "message": "Binding type" + "message": "Vrtsa vezanja" }, "idpSingleSignOnServiceUrl": { - "message": "Single sign-on service URL" + "message": "URL za jedinstvenu prijavu (SSO)" }, "idpSingleLogoutServiceUrl": { - "message": "Single log-out service URL" + "message": "URL za jedinstvenu odjavu" }, "idpX509PublicCert": { "message": "X509 javni certifikat" }, "idpOutboundSigningAlgorithm": { - "message": "Outbound signing algorithm" + "message": "Algoritam odlaznog potpisivanja" }, "idpAllowUnsolicitedAuthnResponse": { - "message": "Allow unsolicited authentication response" + "message": "Dozvoli neželjeni autentifikacijski odgovor" }, "idpAllowOutboundLogoutRequests": { - "message": "Allow outbound logout requests" + "message": "Dozvoli odlazne zahtjeve za odjavu" }, "idpSignAuthenticationRequests": { "message": "Sign authentication requests" @@ -4778,16 +4816,16 @@ "message": "Konfiguracija za jedinstvenu prijavu (SSO) je spremljena." }, "sponsoredFamilies": { - "message": "Besplatan Bitwarden Families" + "message": "Besplatan obiteljski Bitwarden" }, "sponsoredFamiliesEligible": { - "message": "Vi i vaša obitelj ispunjavate uvjete za besplatne Bitwarden obitelji. Koristite ponudu sa svojom e-poštom kako biste zaštitili svoje podatke čak i kada niste na poslu." + "message": "Ti i tvoja obitelj ispunjavate uvjete za besplatni obiteljski Bitwarden. Iskoristiti ponudu svojom e-poštom kako bi zaštitio svoje podatke čak i kada nisi na poslu." }, "sponsoredFamiliesEligibleCard": { - "message": "Redeem your Free Bitwarden for Families plan today to keep your data secure even when you are not at work." + "message": "Iskoristi svoju ponudu za besplatni obiteljski Bitwarden već danas kako bi tvoji podaci bili sigurni čak i kada nisi na poslu." }, "sponsoredFamiliesInclude": { - "message": "Bitwarden plan za obitelji uključuje" + "message": "Bitwarden obiteljski plan uključuje" }, "sponsoredFamiliesPremiumAccess": { "message": "Premium pristup do 6 korisnika" @@ -4796,34 +4834,34 @@ "message": "Dijeljene zbirke za obiteljske tajne" }, "badToken": { - "message": "The link is no longer valid. Please have the sponsor resend the offer." + "message": "Veza više nije valjana. Zamoli sponzora da pošalje novu ponudu." }, "reclaimedFreePlan": { - "message": "Reclaimed free plan" + "message": "Obnovljeni besplatni plan" }, "redeem": { - "message": "Upotrijebi kod" + "message": "Iskoristi" }, "sponsoredFamiliesSelectOffer": { - "message": "Select the organization you would like sponsored" + "message": "Odaberi organizaciju koju želiš sponzorirati" }, "familiesSponsoringOrgSelect": { - "message": "Which Free Families offer would you like to redeem?" + "message": "Koju ponudu besplatnog obiteljskog plana želiš iskoristiti?" }, "sponsoredFamiliesEmail": { - "message": "Enter your personal email to redeem Bitwarden Families" + "message": "Unesi svoju osobnu e-poštu za korištenje obiteljskog Bitwardena" }, "sponsoredFamiliesLeaveCopy": { "message": "If you remove an offer or are removed from the sponsoring organization, your Families sponsorship will expire at the next renewal date." }, "acceptBitwardenFamiliesHelp": { - "message": "Accept offer for an existing organization or create a new Families organization." + "message": "Prihavati ponudu postojeće organizacije ili stvori novu obiteljsku organizaciju." }, "setupSponsoredFamiliesLoginDesc": { - "message": "Ponuđena vam je besplatna organizacija Bitwarden Families Plan. Da biste nastavili, morate se prijaviti na račun koji je primio ponudu." + "message": "Ponuđen ti je besplatni obiteljski Bitwarden plan. Za nastavak, prijavi se korisničkim računom koji je dobio ponudu." }, "sponsoredFamiliesAcceptFailed": { - "message": "Nije moguće prihvatiti ponudu. Ponovo pošaljite email ponudu sa svog poslovnog računa i pokušajte ponovno." + "message": "Nije moguće prihvatiti ponudu. Ponovo pošalji e-poštu ponude sa svog poslovnog računa i pokušaj ponovno." }, "sponsoredFamiliesAcceptFailedShort": { "message": "Nije moguće prihvatiti ponudu. $DESCRIPTION$", @@ -4835,19 +4873,19 @@ } }, "sponsoredFamiliesOffer": { - "message": "Prihvatite besplatan Bitwarden Families" + "message": "Prihvati besplatan obiteljski Bitwarden" }, "sponsoredFamiliesOfferRedeemed": { - "message": "Besplatna ponuda Bitwarden Families uspješno je iskorištena" + "message": "Besplatna ponuda obiteljski Bitwarden je uspješno iskorištena" }, "redeemed": { - "message": "Kod upotrijebljen" + "message": "Kôd iskorišten" }, "redeemedAccount": { - "message": "Account redeemed" + "message": "Račun iskorišten" }, "revokeAccount": { - "message": "Revoke account $NAME$", + "message": "Opozovi račun $NAME$", "placeholders": { "name": { "content": "$1", @@ -4865,10 +4903,10 @@ } }, "freeFamiliesPlan": { - "message": "Besplatni obiteljski plan" + "message": "Besplatan obiteljski plan" }, "redeemNow": { - "message": "Upotrijebi kod sada" + "message": "Iskoristi kôd sada" }, "recipient": { "message": "Primatelj" @@ -4880,7 +4918,7 @@ "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" }, "sponsorshipCreated": { - "message": "Sponsorship created" + "message": "Sponzorstvo stvoreno" }, "emailSent": { "message": "e-pošta poslana" @@ -4934,7 +4972,7 @@ "message": "Ukloni glavnu lozinku" }, "removedMasterPassword": { - "message": "Glavna lozinka uklonjena." + "message": "Glavna lozinka uklonjena" }, "allowSso": { "message": "Dopusti jedinstvenu SSO autentifikaciju" @@ -4994,7 +5032,7 @@ "message": "Please provide a payment method to associate with the organization. Don't worry, we won't charge you anything unless you select additional features or your sponsorship expires. " }, "orgCreatedSponsorshipInvalid": { - "message": "Ponuda za sponzorstvo je istekla. Možete izbrisati organizaciju koju ste stvorili kako biste izbjegli naplatu na kraju probnog perioda od 7 dana. U suprotnom možete zatvoriti ovaj upit kako biste zadržali organizaciju i preuzeli odgovornost za naplatu." + "message": "Sponzorirana ponuda je istekla. Kako na kraju 7 dnevnog probnog razdoblja ne bi došlo do terećenja, moguće je izbrisati stvorenu organizaciju. Zadržavanjem organizacije preuzimate obvezu plaćanja." }, "newFamiliesOrganization": { "message": "Nova obiteljska organizacija" @@ -5024,7 +5062,7 @@ "message": "View billing sync token" }, "generateBillingSyncToken": { - "message": "Generate billing sync token" + "message": "Generiraj token za sinkronizaciju plaćanja" }, "copyPasteBillingSync": { "message": "Copy and paste this token into the billing sync settings of your self-hosted organization." @@ -5033,34 +5071,34 @@ "message": "Your billing sync token can access and edit this organization's subscription settings." }, "manageBillingSync": { - "message": "Manage billing sync" + "message": "Upravljaj sinkronizacijom naplate" }, "setUpBillingSync": { - "message": "Set up billing sync" + "message": "Podesi sinkronizaciju naplate" }, "generateToken": { - "message": "Generate token" + "message": "Generiraj token" }, "rotateToken": { - "message": "Rotate token" + "message": "Rotiraj token" }, "rotateBillingSyncTokenWarning": { - "message": "If you proceed, you will need to re-setup billing sync on your self-hosted server." + "message": "Trebati će ponovno podesiti sinkronizaciju naplate na tvom poslužitelju." }, "rotateBillingSyncTokenTitle": { - "message": "Rotating the billing sync token will invalidate the previous token." + "message": "Rotiranje tokena za sinkornizaciju naplate će poništiti prethodni token." }, "selfHostingTitle": { - "message": "Self-hosting" + "message": "Vlastiti poslužitelj" }, "selfHostingEnterpriseOrganizationSectionCopy": { "message": "To set-up your organization on your own server, you will need to upload your license file. To support Free Families plans and advanced billing capabilities for your self-hosted organization, you will need to set up billing sync." }, "billingSyncApiKeyRotated": { - "message": "Token rotated" + "message": "Token rotiran" }, "billingSync": { - "message": "Billing sync" + "message": "Sinkronizacija naplate" }, "billingSyncDesc": { "message": "Billing sync provides Free Families plans for members and advanced billing capabilities by linking your self-hosted Bitwarden to the Bitwarden cloud server." @@ -5072,25 +5110,25 @@ "message": "Billing sync token" }, "active": { - "message": "Active" + "message": "Aktivno" }, "inactive": { - "message": "Inactive" + "message": "Neaktivno" }, "sentAwaitingSync": { - "message": "Sent (awaiting sync)" + "message": "Poslano (čeka se sinkronizacija)" }, "sent": { - "message": "Sent" + "message": "Poslano" }, "requestRemoved": { - "message": "Removed (awaiting sync)" + "message": "Uklonjeno (čeka se sinkronizacija)" }, "requested": { - "message": "Requested" + "message": "Zatraženo" }, "formErrorSummaryPlural": { - "message": "$COUNT$ fields above need your attention.", + "message": "$COUNT$ polja treba tvoju pažnju.", "placeholders": { "count": { "content": "$1", @@ -5099,10 +5137,10 @@ } }, "formErrorSummarySingle": { - "message": "1 field above needs your attention." + "message": "1 polje treba tvoju pažnju." }, "fieldRequiredError": { - "message": "$FIELDNAME$ is required.", + "message": "$FIELDNAME$ je obavezan.", "placeholders": { "fieldname": { "content": "$1", @@ -5123,16 +5161,16 @@ "message": "Required if Authority is not valid." }, "separateMultipleWithComma": { - "message": "Separate multiple with a comma." + "message": "Odvoji zarezom." }, "sessionTimeout": { "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting individual vault" + "message": "Izvoz osobnog trezora" }, "exportingOrganizationVaultTitle": { - "message": "Exporting organization vault" + "message": "Izvoz organizacijskog trezora" }, "exportingPersonalVaultDescription": { "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", @@ -5156,70 +5194,70 @@ "message": "Access denied. You do not have permission to view this page." }, "masterPassword": { - "message": "Master password" + "message": "Glavna lozinka" }, "security": { - "message": "Security" + "message": "Sigurnost" }, "keys": { - "message": "Keys" + "message": "Ključevi" }, "billingHistory": { - "message": "Billing history" + "message": "Povijest naplate" }, "backToReports": { - "message": "Back to reports" + "message": "Natrag na izvještaje" }, "organizationPicker": { "message": "Organization picker" }, "currentOrganization": { - "message": "Current organization", + "message": "Trenutna organizacija", "description": "This is used by screen readers to indicate the organization that is currently being shown to the user." }, "accountSettings": { - "message": "Account settings" + "message": "Postavke računa" }, "generator": { "message": "Generator" }, "whatWouldYouLikeToGenerate": { - "message": "What would you like to generate?" + "message": "Što želiš generirati?" }, "passwordType": { - "message": "Password type" + "message": "Tip lozinke" }, "regenerateUsername": { - "message": "Regenerate username" + "message": "Ponovno generiraj korisničko ime" }, "generateUsername": { - "message": "Generate username" + "message": "Generiraj korisničko ime" }, "usernameType": { - "message": "Username type" + "message": "Tip korisničkog imena" }, "plusAddressedEmail": { - "message": "Plus addressed email", + "message": "Plus adresa e-pošte", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { - "message": "Use your email provider's sub-addressing capabilities." + "message": "Koristi mogućnosti podadresiranja svog davatelja e-pošte." }, "catchallEmail": { - "message": "Catch-all email" + "message": "Dohvati sve (catch-all) e-pošta" }, "catchallEmailDesc": { - "message": "Use your domain's configured catch-all inbox." + "message": "Koristi konfigurirani catch-all sandučić svoje domene." }, "random": { - "message": "Random", + "message": "Nasumično", "description": "Generates domain-based username using random letters" }, "randomWord": { - "message": "Random word" + "message": "Nasumična riječ" }, "service": { - "message": "Service" + "message": "Usluga" }, "unknownCipher": { "message": "Unknown item, you may need to request permission to access this item." @@ -5228,7 +5266,7 @@ "message": "You cannot redeem for the active account. Enter a different email." }, "revokeWhenExpired": { - "message": "Expires $DATE$", + "message": "Ističe $DATE$", "placeholders": { "date": { "content": "$1", @@ -5255,7 +5293,7 @@ } }, "lastSync": { - "message": "Last sync", + "message": "Zadnja sinkronizacija", "Description": "Used as a prefix to indicate the last time a sync occured. Example \"Last sync 1968-11-16 00:00:00\"" }, "sponsorshipsSynced": { @@ -5275,29 +5313,29 @@ "description": "This text is displayed if an organization's billing is managed by a Provider. It tells the user to contact the Provider for assistance." }, "forwardedEmail": { - "message": "Forwarded email alias" + "message": "Proslijeđeni pseudonim e-pošte" }, "forwardedEmailDesc": { - "message": "Generate an email alias with an external forwarding service." + "message": "Generiraj pseudonim e-pošte s vanjskom uslugom prosljeđivanja." }, "hostname": { - "message": "Hostname", + "message": "Naziv poslužitelja", "description": "Part of a URL." }, "apiAccessToken": { - "message": "API access token" + "message": "Token za API pristup" }, "deviceVerification": { - "message": "Device verification" + "message": "Provjera uređaja" }, "enableDeviceVerification": { - "message": "Turn on device verification" + "message": "Uključi provjeru uređaja" }, "deviceVerificationDesc": { - "message": "Verification codes are sent to your email address when logging in from an unrecognized device" + "message": "Prilikom prijave na nepoznatom uređaju, e-poštom se šalju kodovi za provjeru" }, "updatedDeviceVerification": { - "message": "Updated device verification" + "message": "Provjera uređaja ažurirana" }, "areYouSureYouWantToEnableDeviceVerificationTheVerificationCodeEmailsWillArriveAtX": { "message": "Are you sure you want to turn on device verification? The verification code emails will arrive at: $EMAIL$", @@ -5309,7 +5347,7 @@ } }, "premiumSubcriptionRequired": { - "message": "Premium subscription required" + "message": "Potrebna Premium pretplata" }, "scim": { "message": "SCIM provisioning", @@ -5320,7 +5358,7 @@ "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimEnabledCheckboxDesc": { - "message": "Enable SCIM", + "message": "Uključi SCIM", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimEnabledCheckboxDescHelpText": { @@ -5331,22 +5369,22 @@ "message": "This API key has access to manage users within your organization. It should be kept secret." }, "copyScimKey": { - "message": "Copy the SCIM API key to your clipboard", + "message": "Kopiraj SCIM API ključ u svoj međuspremnik", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKey": { - "message": "Rotate the SCIM API key", + "message": "Rotiraj SCIM API ključ", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKeyWarning": { - "message": "Are you sure you want to rotate the SCIM API Key? The current key will no longer work for any existing integrations.", + "message": "Sigurno želiš rotirati SCIM API ključ? Postojeći ključ više neće vrijediti u svim postojećim integracijama.", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateKey": { - "message": "Rotate key" + "message": "Rotiraj ključ" }, "scimApiKey": { - "message": "SCIM API key", + "message": "SCIM API ključ", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "copyScimUrl": { @@ -5358,21 +5396,21 @@ "description": "the text, 'SCIM' and 'URL', are acronymns and should not be translated." }, "scimApiKeyRotated": { - "message": "SCIM API key successfully rotated", + "message": "SCIM API ključ rotiran", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "scimSettingsSaved": { - "message": "SCIM settings saved", + "message": "SCIM postavke spremljene", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "inputRequired": { - "message": "Input is required." + "message": "Potreban je unos." }, "inputEmail": { - "message": "Input is not an email address." + "message": "Nije unesena adresa e-pošte." }, "inputMinLength": { - "message": "Input must be at least $COUNT$ characters long.", + "message": "Unos mora sadržavati najmanje $COUNT$ znakova.", "placeholders": { "count": { "content": "$1", @@ -5380,8 +5418,17 @@ } } }, + "inputMaxLength": { + "message": "Unos ne smije imati više od $COUNT$ znakova.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { - "message": "$COUNT$ field(s) above need your attention.", + "message": "$COUNT$ polje/a treba tvoju pažnju.", "placeholders": { "count": { "content": "$1", @@ -5390,27 +5437,75 @@ } }, "turnOn": { - "message": "Turn on" + "message": "Uključi" }, "on": { - "message": "On" + "message": "Uključeno" + }, + "members": { + "message": "Članovi" + }, + "reporting": { + "message": "Izvještavanje" }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { - "message": "Number of users" + "message": "Broj korisnika" + }, + "loggingInAs": { + "message": "Prijava kao" + }, + "notYou": { + "message": "Nisi ti?" }, "multiSelectPlaceholder": { - "message": "-- Type to Filter --" + "message": "Upiši za filtriranje" }, "multiSelectLoading": { - "message": "Retrieving options..." + "message": "Dohvaćanje opcija..." }, "multiSelectNotFound": { - "message": "No items found" + "message": "Nije pronađena niti jedna stavka" }, "multiSelectClearAll": { - "message": "Clear all" + "message": "Očisti sve" + }, + "from": { + "message": "Od" + }, + "to": { + "message": "Za" + }, + "member": { + "message": "Član" + }, + "update": { + "message": "Ažuriraj" + }, + "role": { + "message": "Uloga" + }, + "canView": { + "message": "Može vidjeti" + }, + "canViewExceptPass": { + "message": "Može vidjeti, osim lozinke" + }, + "canEdit": { + "message": "Može urediti" + }, + "canEditExceptPass": { + "message": "Može urediti, osim lozinke" + }, + "group": { + "message": "Grupa" + }, + "groupAccessAll": { + "message": "Ova grupa može pristupiti i urediti sve stavke." + }, + "memberAccessAll": { + "message": "Ovaj korisnik može pristupiti i urediti sve stavke." } } diff --git a/apps/web/src/locales/hu/messages.json b/apps/web/src/locales/hu/messages.json index a7a61e31ebe..83afc204dd8 100644 --- a/apps/web/src/locales/hu/messages.json +++ b/apps/web/src/locales/hu/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Az eszközzel történő bejelentkezést engedélyezni kell a Biwarden mobilalkalmazás beállításaiban. Másik opcióra van szükség?" }, + "loginWithMasterPassword": { + "message": "Bejelentkezés mesterjelszóval" + }, "createAccount": { "message": "Fiók létrehozása" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Felismerhető kép megjelenítése minden bejelentkezés mellett." }, - "enableGravatars": { - "message": "Gravatarok megjelenítése", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Avatar képek használata a gravatar.com webhelyről." - }, "enableFullWidth": { "message": "Teljes szélességű elrendezés engedélyezése", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Kétlépcsős bejelentkezés" }, + "twoStepLoginEnforcement": { + "message": "Kétlépcsős bejelentkezés kényszerítése" + }, "twoStepLoginDesc": { "message": "A fiók biztosítása kiegészítő lépéssel bejelentkezéskor." }, - "twoStepLoginOrganizationDesc": { - "message": "Kétlépéses bejelentkezés szükséges a szervezet felhasználói számára a szolgáltatók szervezeti szintű konfigurálásával." + "twoStepLoginOrganizationDescStart": { + "message": "Ezt egy nagyobb mondat részeként használjuk fel,és hivatkozásokat tartalmaznak. A teljes mondat így fog szólni: \"Kétlépcsős bejelentkezési opciók érvényesítése a tagok számára a kétlépcsős bejelentkezési szabályzat használatával.\".", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Kétlépcsős bejelentkezési szabályok" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "A Duón keresztüli kétlépcsős bejelentkezés kényszerítéséhez használjuk az alábbi lehetőségeket." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Ha beállítottuk az egyszeri bejelentkezést vagy azt tervezük, a kétlépcsős bejelentkezés már érvényre juthat az azonosítás szolgáltatón keresztül." }, "twoStepLoginRecoveryWarning": { "message": "A kétlépcsős bejelentkezés engedélyezése véglegesen kizárhatja a felhasználót a Bitwarden fiókból. A helyreállítási kód lehetővé teszi a fiókjához való hozzáférést abban az esetben, ha már nem tudjuk használni a szokásos kétlépcsős bejelentkezési szolgáltatást (pl. készülék elvesztése). A Bitwarden támogatás nem tud segíteni abban az esetben, ha elveszítjük a hozzáférést a fiókhoz. Célszerű leírni vagy kinyomtatni a helyreállítási kódot és azt biztonságos helyen tartani." @@ -1547,6 +1556,10 @@ "message": "Az alábbi jelentésekre kattintva azonosítsuk és zárjuk le a webes kiókjaink biztonsági hiányosságait.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Az alábbi jelentésekre kattintva azonosíthatjuk és megszüntethetjük a szervezet fiókjaiban lévő biztonsági hiányosságokat.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Nem-biztonságos webhelyek jelentés" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Megtekintett kártyaszám $ID$ elemhez.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "$ID$ azonosítójú elem biztonsági kódja megtekintésre került.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Saját szervezet" }, + "organizationInfo": { + "message": "Szervezeti infó" + }, "deleteOrganization": { "message": "Szervezet törlése" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "A szervezeti azonosító megadása szükséges." }, + "ssoIdentifier": { + "message": "Egyszeri azonosító" + }, + "ssoIdentifierHint": { + "message": "Adjuk meg ezt az azonosítót a tagoknak az egyszeri azonosítóval történő bejelentkezéshez." + }, "unlinkSso": { "message": "SSO szétkapcsolása" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Jogosultságok" }, + "permission": { + "message": "Jogosultság" + }, "managerPermissions": { "message": "Jogosultságok kezelése" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Ügyfelek" }, + "client": { + "message": "Ügyfél", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Szolgáltató adminisztrátor" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "A bevitel nem haladhatja meg $COUNT$ karakter hosszt.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ mező fentebb figyelmet érdemel.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Be" }, + "members": { + "message": "Tagok" + }, + "reporting": { + "message": "Jelentés" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Felhasználók száma" }, + "loggingInAs": { + "message": "Bejelentkezve mint" + }, + "notYou": { + "message": "Ez tévedés?" + }, "multiSelectPlaceholder": { "message": "-- Szűrendő típus --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Összes törlése" + }, + "from": { + "message": "Feladó" + }, + "to": { + "message": "Címzett" + }, + "member": { + "message": "Tag" + }, + "update": { + "message": "Frissítés" + }, + "role": { + "message": "Szerepkör" + }, + "canView": { + "message": "Megtekintheti" + }, + "canViewExceptPass": { + "message": "Megtekintheti, kivéve a jelszavakat" + }, + "canEdit": { + "message": "Szerkesztheti" + }, + "canEditExceptPass": { + "message": "Szerkesztheti, kivéve a jelszavakat" + }, + "group": { + "message": "Csoport" + }, + "groupAccessAll": { + "message": "A csoport elérheti és módosíthatja az összes elemet." + }, + "memberAccessAll": { + "message": "Ez a felhasználó minden elemhez hozzáférhet és módosíthatja az összes elemet." } } diff --git a/apps/web/src/locales/id/messages.json b/apps/web/src/locales/id/messages.json index 9def26714f2..7b492b10fdb 100644 --- a/apps/web/src/locales/id/messages.json +++ b/apps/web/src/locales/id/messages.json @@ -570,16 +570,19 @@ "message": "Masuk atau buat akun baru untuk mengakses brankas Anda." }, "loginWithDevice": { - "message": "Log in with device" + "message": "Masuk dengan perangkat" }, "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Masuk dengan kata sandi utama" + }, "createAccount": { "message": "Buat Akun" }, "newAroundHere": { - "message": "New around here?" + "message": "Pengguna baru?" }, "startTrial": { "message": "Mulai Masa Percobaan" @@ -915,16 +918,16 @@ "message": "This password will be used to export and import this file" }, "confirmMasterPassword": { - "message": "Confirm master password" + "message": "Konfirmasi kata sandi utama" }, "confirmFormat": { - "message": "Confirm format" + "message": "Konfirmasi format" }, "filePassword": { - "message": "File password" + "message": "File kata sandi" }, "confirmFilePassword": { - "message": "Confirm file password" + "message": "Konfirmasi file kata sandi" }, "accountBackupOptionDescription": { "message": "Use your account encryption key to encrypt the export and restrict import to only the current Bitwarden account." @@ -933,19 +936,19 @@ "message": "Set a password to encrypt the export and import it to any Bitwarden account using the password for decryption." }, "fileTypeHeading": { - "message": "File type" + "message": "Jenis file" }, "accountBackup": { - "message": "Account backup" + "message": "Pencadangan akun" }, "passwordProtected": { - "message": "Password protected" + "message": "Dilindungi kata sandi" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { "message": "“File password” and “Confirm file password“ do not match." }, "confirmVaultImport": { - "message": "Confirm vault import" + "message": "Konfirmasi impor berangkas" }, "confirmVaultImportDesc": { "message": "This file is password-protected. Please enter the file password to import data." @@ -1193,10 +1196,10 @@ "message": "Pilih file impor" }, "chooseFile": { - "message": "Choose File" + "message": "Pilih berkas" }, "noFileChosen": { - "message": "No file chosen" + "message": "Tidak ada berkas yang dipilih" }, "orCopyPasteFileContents": { "message": "atau salin / tempel konten file impor" @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Tampilkan gambar pengenal di samping setiap login." }, - "enableGravatars": { - "message": "Aktifkan Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Gunakan gambar avatar yang dimuat dari gravatar.com." - }, "enableFullWidth": { "message": "Aktifkan Tata Letak Lebar Penuh", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Login dua-langkah" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Amankan akun Anda dengan meminta langkah tambahan saat masuk." }, - "twoStepLoginOrganizationDesc": { - "message": "Mewajibkan login dua-langkah untuk para pengguna organisasi Anda dengan cara mengatur provider di tingkat organisasi." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Dengan mengaktifkan login dua-langkah, Anda bisa terkunci dari akun Bitwarden secara permanen. Jika Anda tidak bisa menggunakan provider login dua-langkah di kondisi normal (misal karena perangkat Anda hilang), Anda bisa menggunakan kode pemulihan untuk mengakses akun tersebut. Bitwarden sama sekali tidak dapat membantu jika Anda kehilangan akses ke akun Anda. Oleh karena itu, kami menyarankan Anda untuk menulis atau mencetak kode pemulihan dan menyimpannya di tempat yang aman." @@ -1547,6 +1556,10 @@ "message": "Identifikasi dan tutup celah keamanan di akun-akun online Anda dengan meng-klik laporan di bawah ini.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Laporan Situs Web Tidak Aman" }, @@ -2554,7 +2567,7 @@ } }, "viewAllLoginOptions": { - "message": "View all log in options" + "message": "Lihat semua opsi log in" }, "viewedItemId": { "message": "Melihat item $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Melihat kode keamanan untuk item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Organisasi Saya" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Hapus Organisasi" }, @@ -3320,7 +3345,7 @@ "description": "ex. Date this item was updated" }, "dateCreated": { - "message": "Created", + "message": "Dibuat", "description": "ex. Date this item was created" }, "datePasswordUpdated": { @@ -3404,7 +3429,7 @@ "message": "Please make sure your vault is unlocked and Fingerprint phrase matches the other device." }, "fingerprintPhraseHeader": { - "message": "Fingerprint phrase" + "message": "Frasa sidik jari" }, "dontAskFingerprintAgain": { "message": "Jangan tanya untuk memverifikasi frase sidik jari lagi", @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Pengenal Organisasi wajib diisi." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Batalkan tautan SSO" }, @@ -4091,11 +4122,14 @@ "permissions": { "message": "Izin" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { - "message": "Manager Permissions" + "message": "Pengelola Izin" }, "adminPermissions": { - "message": "Admin Permissions" + "message": "Izin Admin" }, "accessEventLogs": { "message": "Akses Log Peristiwa" @@ -4125,10 +4159,10 @@ "message": "Kelola Koleksi yang Ditugaskan" }, "editAssignedCollections": { - "message": "Edit assigned collections" + "message": "Edit koleksi yang ditetapkan" }, "deleteAssignedCollections": { - "message": "Delete assigned collections" + "message": "Hapus koleksi yang ditetapkan" }, "manageGroups": { "message": "Kelola Grup" @@ -4146,7 +4180,7 @@ "message": "Kelola Peyetelan Ulang Sandi" }, "disableRequiredError": { - "message": "You must manually turn the $POLICYNAME$ policy before this policy can be turned off.", + "message": "Anda harus secara manual mengubah kebijakan $POLICYNAME$ sebelum kebijakan ini bisa dinonaktifkan.", "placeholders": { "policyName": { "content": "$1", @@ -4407,13 +4441,13 @@ "message": "Kirim Ulang Undangan" }, "resendNotification": { - "message": "Resend notification" + "message": "Kirim ulang notifikasi" }, "noSelectedUsersApplicable": { "message": "This action is not applicable to any of the selected users." }, "removeUsersWarning": { - "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." + "message": "Apakah Anda yakin ingin menghapus pengguna berikut? Proses ini mungkin memerlukan waktu beberapa detik untuk menyelesaikannya dan tidak dapat diinterupsi atau dibatalkan." }, "removeOrgUsersConfirmation": { "message": "When member(s) are removed, they no longer have access to organization data and this action is irreversible. To add the member back to the organization, they must be invited and onboarded again. The process may take a few seconds to complete and cannot be interrupted or canceled." @@ -4470,19 +4504,19 @@ "message": "Cabut Pengguna" }, "restoreUsers": { - "message": "Restore users" + "message": "Pulihkan pengguna" }, "error": { "message": "Galat" }, "resetPasswordManageUsers": { - "message": "Manage users must also be granted with the manage password reset permission" + "message": "Kelola pengguna juga harus diberikan izin mengelola pengaturan ulang kata sandi" }, "setupProvider": { "message": "Pengaturan Provider" }, "setupProviderLoginDesc": { - "message": "You've been invited to setup a new Provider. To continue, you need to log in or create a new Bitwarden account." + "message": "Anda telah diundang untuk menyiapkan Penyedia baru. Untuk melanjutkan, Anda harus masuk atau membuat akun Bitwarden baru." }, "setupProviderDesc": { "message": "Please enter the details below to complete the Provider setup. Contact Customer Support if you have any questions." @@ -4496,6 +4530,10 @@ "clients": { "message": "Klien" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Admin Provider" }, @@ -4865,22 +4903,22 @@ } }, "freeFamiliesPlan": { - "message": "Free Families plan" + "message": "Gratis Paket Keluarga" }, "redeemNow": { - "message": "Redeem now" + "message": "Tukarkan Sekarang" }, "recipient": { - "message": "Recipient" + "message": "Penerima" }, "removeSponsorship": { - "message": "Remove sponsorship" + "message": "Buang sponsorship" }, "removeSponsorshipConfirmation": { "message": "After removing a sponsorship, you will be responsible for this subscription and related invoices. Are you sure you want to continue?" }, "sponsorshipCreated": { - "message": "Sponsorship created" + "message": "Sponsorship dibuat" }, "emailSent": { "message": "Email Terkirim" @@ -4889,16 +4927,16 @@ "message": "After removing this account, the Families plan sponsorship will expire at the end of the billing period. You will not be able to redeem a new sponsorship offer until the existing one expires. Are you sure you want to continue?" }, "removeSponsorshipSuccess": { - "message": "Sponsorship removed" + "message": "Sponsorship dibuang" }, "ssoKeyConnectorError": { "message": "Key Connector error: make sure Key Connector is available and working correctly." }, "keyConnectorUrl": { - "message": "Key Connector URL" + "message": "URL Konektor Utama" }, "sendVerificationCode": { - "message": "Send a verification code to your email" + "message": "Kirim kode verifikasi ke email Anda" }, "sendCode": { "message": "Kirim Kode" @@ -4931,10 +4969,10 @@ "message": "Tinggalkan Organisasi" }, "removeMasterPassword": { - "message": "Remove master password" + "message": "Hapus Kata Sandi Utama" }, "removedMasterPassword": { - "message": "Master password removed" + "message": "Sandi utama dihapus" }, "allowSso": { "message": "Izinkan autentikasi SSO" @@ -4964,7 +5002,7 @@ "message": "Once authenticated, members will decrypt vault data using their master passwords." }, "keyConnector": { - "message": "Key Connector" + "message": "Konektor Kunci" }, "memberDecryptionKeyConnectorDesc": { "message": "Connect login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their master passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." @@ -4979,7 +5017,7 @@ "message": "Matikan SSO" }, "enabledKeyConnector": { - "message": "Key Connector activated" + "message": "Konektor Kunci diaktifkan" }, "disabledKeyConnector": { "message": "Key Connector deactivated" @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ kolom diatas membutuhkan atensi Anda.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Jumplah pengguna" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/it/messages.json b/apps/web/src/locales/it/messages.json index 2f8ac231dad..ebee7b503d3 100644 --- a/apps/web/src/locales/it/messages.json +++ b/apps/web/src/locales/it/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Il login con il dispositivo deve essere abilitato nelle impostazioni dell'app mobile Bitwarden. Hai bisogno di un'altra opzione?" }, + "loginWithMasterPassword": { + "message": "Accedi con la password principale" + }, "createAccount": { "message": "Crea account" }, @@ -1193,10 +1196,10 @@ "message": "Seleziona il file da importare" }, "chooseFile": { - "message": "Choose File" + "message": "Seleziona File" }, "noFileChosen": { - "message": "No file chosen" + "message": "Nessun file selezionato" }, "orCopyPasteFileContents": { "message": "oppure copia e incolla il contenuto del file da importare" @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Mostra un'immagine riconoscibile accanto a ogni login." }, - "enableGravatars": { - "message": "Abilita Gravatar", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Usa immagine profilo caricata da gravatar.com." - }, "enableFullWidth": { "message": "Abilita disposizione a larghezza piena", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Verifica in due passaggi" }, + "twoStepLoginEnforcement": { + "message": "Attuazione accesso a due passaggi" + }, "twoStepLoginDesc": { "message": "Proteggi il tuo account richiedendo un passaggio aggiuntivo all'accesso." }, - "twoStepLoginOrganizationDesc": { - "message": "Richiedi la verifica in due passaggi per gli utenti della tua organizzazione configurando dei fornitori a livello di organizzazione." + "twoStepLoginOrganizationDescStart": { + "message": "Forza le opzioni di accesso in due passaggi di Bitwarden per i membri utilizzando il ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Politica di accesso in due passaggi" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Per applicare l'accesso in due passaggi tramite Duo, utilizzare le opzioni qui sotto." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Se hai configurato SSO o pianifichi di farlo, il login in due passaggi potrebbe già essere applicato tramite il tuo Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Con la verifica in due passaggi potresti bloccare permanentemente il tuo account di Bitwarden. Un codice di recupero ti permette di accedere al tuo account nel caso in cui non fossi più in grado di utilizzare il tuo solito metodo di verifica (ad esempio se perdi il tuo telefono). L'assistenza di Bitwarden non sarà in grado di aiutarti qualora dovessi perdere l'accesso al tuo account. Ti consigliamo di scrivere o stampare il tuo codice di recupero e di conservarlo in un luogo sicuro." @@ -1547,6 +1556,10 @@ "message": "Identifica e chiudi i problemi di sicurezza dei tuoi account online cliccando sui report in basso.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identifica e chiudi i problemi di sicurezza negli account della tua organizzazione facendo clic sui rapporti qui sotto.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Resoconto sui siti web non protetti" }, @@ -1578,7 +1591,7 @@ "message": "Accessi senza 2FA trovati" }, "inactive2faFoundDesc": { - "message": "We found $COUNT$ website(s) in your vault that may not be configured with two-step login (according to 2fa.directory). To further protect these accounts, you should set up two-step login.", + "message": "Abbiamo trovato $COUNT$ siti web nella tua cassaforte che potrebbero non essere configurati con l'accesso in due passaggi (secondo 2fa.directory). Per proteggere ulteriormente questi account, è necessario impostare il login in due passaggi.", "placeholders": { "count": { "content": "$1", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Numero di carta visualizzato per l'articolo $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Codice di sicurezza visualizzato per l'elemento $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "La mia organizzazione" }, + "organizationInfo": { + "message": "Informazioni dell'Organizzazione" + }, "deleteOrganization": { "message": "Elimina organizzazione" }, @@ -3320,7 +3345,7 @@ "description": "ex. Date this item was updated" }, "dateCreated": { - "message": "Created", + "message": "Creato", "description": "ex. Date this item was created" }, "datePasswordUpdated": { @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "L'identificativo dell'organizzazione è obbligatorio." }, + "ssoIdentifier": { + "message": "Identificativo SSO" + }, + "ssoIdentifierHint": { + "message": "Fornisci questo ID ai tuoi membri per accedere con SSO." + }, "unlinkSso": { "message": "Scollega SSO" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permessi" }, + "permission": { + "message": "Permessi" + }, "managerPermissions": { "message": "Permessi del Manager" }, @@ -4290,7 +4324,7 @@ "message": "Rinuncia completata!" }, "eventEnrollPasswordReset": { - "message": "Utente $ID$ registrato all'assistenza per il ripristino della password.", + "message": "L'utente $ID$ ha aderito all'assistenza per il reset della password.", "placeholders": { "id": { "content": "$1", @@ -4496,6 +4530,10 @@ "clients": { "message": "Clienti" }, + "client": { + "message": "Cliente", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Amministratore del provider" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "L'input non deve superare i $COUNT$ caratteri di lunghezza.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "Il/i campo/i $COUNT$ sopra richiedono la tua attenzione.", "placeholders": { @@ -5395,22 +5442,70 @@ "on": { "message": "Attivo" }, + "members": { + "message": "Membri" + }, + "reporting": { + "message": "Relazioni" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Numero di utenti" }, + "loggingInAs": { + "message": "Accesso in corso come" + }, + "notYou": { + "message": "Non sei tu?" + }, "multiSelectPlaceholder": { - "message": "-- Type to Filter --" + "message": "-- Scrivi per filtrare --" }, "multiSelectLoading": { - "message": "Retrieving options..." + "message": "Recupero opzioni..." }, "multiSelectNotFound": { - "message": "No items found" + "message": "Nessun elemento trovato" }, "multiSelectClearAll": { - "message": "Clear all" + "message": "Cancella tutto" + }, + "from": { + "message": "Da" + }, + "to": { + "message": "A" + }, + "member": { + "message": "Membro" + }, + "update": { + "message": "Aggiorna" + }, + "role": { + "message": "Ruolo" + }, + "canView": { + "message": "Può visualizzare" + }, + "canViewExceptPass": { + "message": "Può visualizzare, eccetto le password" + }, + "canEdit": { + "message": "Può modificare" + }, + "canEditExceptPass": { + "message": "Può modificare, eccetto le password" + }, + "group": { + "message": "Gruppo" + }, + "groupAccessAll": { + "message": "Questo gruppo può accedere e modificare tutti gli elementi." + }, + "memberAccessAll": { + "message": "Questo utente può accedere e modificare tutti gli elementi." } } diff --git a/apps/web/src/locales/ja/messages.json b/apps/web/src/locales/ja/messages.json index cdabf12c7c6..109d791065b 100644 --- a/apps/web/src/locales/ja/messages.json +++ b/apps/web/src/locales/ja/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Bitwarden モバイルアプリの設定で有効化する必要があります。別のオプションが必要ですか?" }, + "loginWithMasterPassword": { + "message": "マスターパスワードでログイン" + }, "createAccount": { "message": "アカウントの作成" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "ログイン情報の隣にアイコン画像を表示します" }, - "enableGravatars": { - "message": "Gravatar を有効化", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "gravatar.com から読み込んだアバター画像を使います。" - }, "enableFullWidth": { "message": "全幅レイアウトを有効化", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "2段階認証" }, + "twoStepLoginEnforcement": { + "message": "2段階ログインを強制" + }, "twoStepLoginDesc": { "message": "ログイン時に追加の手順を必要としアカウントを保護します。" }, - "twoStepLoginOrganizationDesc": { - "message": "組織レベルで認証プロバイダを設定することで、組織のユーザーに二段階の認証を必要とします。" + "twoStepLoginOrganizationDescStart": { + "message": "Bitwarden 2段階ログインの使用をメンバーに強制します", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "(2段階ログインポリシー)" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Duo で2段階ログインを強制するには、以下のオプションを使用してください。" + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "SSO 設定または設定予定がある場合は、ID プロバイダーを通じて2段階ログインがすでに強制されている場合があります。" }, "twoStepLoginRecoveryWarning": { "message": "二段階認証を有効にすると Bitwarden アカウントから永久に閉め出されてしまうことがあります。リカバリーコードがあれば、通常の二段階認証プロバイダを使えなくなったとき(デバイスの紛失等)でもアカウントにアクセスできます。アカウントにアクセスできなくなっても Bitwarden はサポート出来ないため、リカバリーコードを書き出すか印刷し安全な場所で保管しておくことを推奨します。" @@ -1547,6 +1556,10 @@ "message": "以下のレポートをクリックして、オンラインアカウントのセキュリティギャップを特定して修正してください。", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "以下のレポートをクリックして、組織アカウントのセキュリティギャップを特定して修正してください。", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "非セキュアウェブサイト調査" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "アイテム $ID$ のカード番号を表示しました。", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "アイテム $ID$ のセキュリティコードを表示しました。", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "組織" }, + "organizationInfo": { + "message": "組織の情報" + }, "deleteOrganization": { "message": "組織の削除" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "組織識別子が必要です。" }, + "ssoIdentifier": { + "message": "SSO 識別子" + }, + "ssoIdentifierHint": { + "message": "SSO でログインするには、この ID をメンバーに提供してください。" + }, "unlinkSso": { "message": "SSO のリンクを解除" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "権限" }, + "permission": { + "message": "権限" + }, "managerPermissions": { "message": "権限の管理" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "クライアント" }, + "client": { + "message": "クライアント", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "プロバイダー管理者" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "入力は $COUNT$ 文字を超えてはいけません。", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "上記の $COUNT$ フィールドを確認してください。", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "オン" }, + "members": { + "message": "メンバー" + }, + "reporting": { + "message": "レポート" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "ユーザー数" }, + "loggingInAs": { + "message": "ログイン中:" + }, + "notYou": { + "message": "あなたではないですか?" + }, "multiSelectPlaceholder": { "message": "-- 入力して絞り込み --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "すべてクリア" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "メンバー" + }, + "update": { + "message": "更新" + }, + "role": { + "message": "役割" + }, + "canView": { + "message": "閲覧可能" + }, + "canViewExceptPass": { + "message": "パスワード以外は閲覧可能" + }, + "canEdit": { + "message": "編集可能" + }, + "canEditExceptPass": { + "message": "パスワード以外は編集可能" + }, + "group": { + "message": "グループ" + }, + "groupAccessAll": { + "message": "このグループはすべてのアイテムにアクセスして変更できます。" + }, + "memberAccessAll": { + "message": "このメンバーはすべてのアイテムにアクセスして変更できます。" } } diff --git a/apps/web/src/locales/ka/messages.json b/apps/web/src/locales/ka/messages.json index 2fe1fd7d356..d126bb611d9 100644 --- a/apps/web/src/locales/ka/messages.json +++ b/apps/web/src/locales/ka/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Create account" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Show Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Two-step login" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organization's users by configuring providers at the organization level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Setting up two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (example: you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecure websites" }, @@ -2491,7 +2504,7 @@ "message": "Logged in" }, "changedPassword": { - "message": "Account password saved" + "message": "Changed account password" }, "enabledUpdated2fa": { "message": "Two-step login saved" @@ -2500,7 +2513,7 @@ "message": "Two-step login turned off" }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2512,10 +2525,10 @@ "message": "Vault exported" }, "exportedOrganizationVault": { - "message": "Organization vault exported" + "message": "Exported organization vault." }, "editedOrgSettings": { - "message": "Organization settings saved" + "message": "Edited organization settings." }, "createdItemId": { "message": "Created item $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My organization" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organization" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3133,7 +3158,7 @@ "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." }, "subscriptionUserSeats": { - "message": "Your subscription allows for a total of $COUNT$ users.", + "message": "Your subscription allows for a total of $COUNT$ members.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Organization identifier" }, "ssoLogInWithOrgIdentifier": { - "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + "message": "Log in using your organization's single sign-on portal. Please enter your organization's SSO identifier to begin." }, "enterpriseSingleSignOn": { "message": "Enterprise single sign-on" @@ -3688,7 +3713,13 @@ "message": "SSO validation failed" }, "ssoIdentifierRequired": { - "message": "Organization identifier is required." + "message": "Organization SSO identifier is required." + }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." }, "unlinkSso": { "message": "Unlink SSO" @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send removed", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/km/messages.json b/apps/web/src/locales/km/messages.json index 2fe1fd7d356..d126bb611d9 100644 --- a/apps/web/src/locales/km/messages.json +++ b/apps/web/src/locales/km/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Create account" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Show Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Two-step login" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organization's users by configuring providers at the organization level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Setting up two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (example: you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecure websites" }, @@ -2491,7 +2504,7 @@ "message": "Logged in" }, "changedPassword": { - "message": "Account password saved" + "message": "Changed account password" }, "enabledUpdated2fa": { "message": "Two-step login saved" @@ -2500,7 +2513,7 @@ "message": "Two-step login turned off" }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2512,10 +2525,10 @@ "message": "Vault exported" }, "exportedOrganizationVault": { - "message": "Organization vault exported" + "message": "Exported organization vault." }, "editedOrgSettings": { - "message": "Organization settings saved" + "message": "Edited organization settings." }, "createdItemId": { "message": "Created item $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My organization" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organization" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3133,7 +3158,7 @@ "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." }, "subscriptionUserSeats": { - "message": "Your subscription allows for a total of $COUNT$ users.", + "message": "Your subscription allows for a total of $COUNT$ members.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Organization identifier" }, "ssoLogInWithOrgIdentifier": { - "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + "message": "Log in using your organization's single sign-on portal. Please enter your organization's SSO identifier to begin." }, "enterpriseSingleSignOn": { "message": "Enterprise single sign-on" @@ -3688,7 +3713,13 @@ "message": "SSO validation failed" }, "ssoIdentifierRequired": { - "message": "Organization identifier is required." + "message": "Organization SSO identifier is required." + }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." }, "unlinkSso": { "message": "Unlink SSO" @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send removed", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/kn/messages.json b/apps/web/src/locales/kn/messages.json index 702af436785..49cf1fc3e21 100644 --- a/apps/web/src/locales/kn/messages.json +++ b/apps/web/src/locales/kn/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "ಖಾತೆ ತೆರೆ" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Gravatars ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Gravatar.com ನಿಂದ ಲೋಡ್ ಮಾಡಲಾದ ಅವತಾರ್ ಚಿತ್ರಗಳನ್ನು ಬಳಸಿ." - }, "enableFullWidth": { "message": "ಪೂರ್ಣ ಅಗಲ ವಿನ್ಯಾಸವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "ಎರಡು ಹಂತದ ಲಾಗಿನ್" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "ಲಾಗಿನ್ ಆಗುವಾಗ ಹೆಚ್ಚುವರಿ ಹಂತದ ಅಗತ್ಯವಿರುವ ಮೂಲಕ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಸುರಕ್ಷಿತಗೊಳಿಸಿ." }, - "twoStepLoginOrganizationDesc": { - "message": "ಸಂಸ್ಥೆಯ ಮಟ್ಟದಲ್ಲಿ ಪೂರೈಕೆದಾರರನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವ ಮೂಲಕ ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಬಳಕೆದಾರರಿಗೆ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅಗತ್ಯವಿದೆ." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವುದರಿಂದ ನಿಮ್ಮ ಬಿಟ್‌ವಾರ್ಡನ್ ಖಾತೆಯಿಂದ ನಿಮ್ಮನ್ನು ಶಾಶ್ವತವಾಗಿ ಲಾಕ್ ಮಾಡಬಹುದು. ನಿಮ್ಮ ಸಾಮಾನ್ಯ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಪೂರೈಕೆದಾರರನ್ನು ನೀವು ಇನ್ನು ಮುಂದೆ ಬಳಸಲಾಗದಿದ್ದಲ್ಲಿ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪ್ರವೇಶಿಸಲು ಮರುಪಡೆಯುವಿಕೆ ಕೋಡ್ ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ (ಉದಾ. ನಿಮ್ಮ ಸಾಧನವನ್ನು ನೀವು ಕಳೆದುಕೊಳ್ಳುತ್ತೀರಿ). ನಿಮ್ಮ ಖಾತೆಗೆ ನೀವು ಪ್ರವೇಶವನ್ನು ಕಳೆದುಕೊಂಡರೆ ಬಿಟ್‌ವಾರ್ಡನ್ ಬೆಂಬಲವು ನಿಮಗೆ ಸಹಾಯ ಮಾಡಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಮರುಪಡೆಯುವಿಕೆ ಕೋಡ್ ಅನ್ನು ಬರೆಯಲು ಅಥವಾ ಮುದ್ರಿಸಲು ಮತ್ತು ಅದನ್ನು ಸುರಕ್ಷಿತ ಸ್ಥಳದಲ್ಲಿ ಇರಿಸಲು ನಾವು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "ಅಸುರಕ್ಷಿತ ವೆಬ್‌ಸೈಟ್‌ಗಳ ವರದಿ" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "ಐಟಂ $ID$ ಗಾಗಿ ಭದ್ರತಾ ಕೋಡ್ ವೀಕ್ಷಿಸಲಾಗಿದೆ.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "ನನ್ನ ಸಂಸ್ಥೆ" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "ಸಂಸ್ಥೆಯನ್ನು ಅಳಿಸಿ" }, @@ -3112,7 +3137,7 @@ "message": "ನಿಮ್ಮ ಸ್ಥಾಪನಾ ಐಡಿಯನ್ನು ನಮೂದಿಸಿ" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "ಸಂಸ್ಥೆ ಗುರುತಿಸುವಿಕೆ ಅಗತ್ಯವಿದೆ." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "ಎಸ್‌ಎಸ್‌ಒ ಅನ್ಲಿಂಕ್ ಮಾಡಿ" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "ಅನುಮತಿಗಳು" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/ko/messages.json b/apps/web/src/locales/ko/messages.json index 97624623af3..bdd0e189611 100644 --- a/apps/web/src/locales/ko/messages.json +++ b/apps/web/src/locales/ko/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "계정 만들기" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Gravatar 사용", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "gravatar.com의 아바타 이미지를 사용." - }, "enableFullWidth": { "message": "전체 너비 레이아웃 활성화", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "2단계 인증" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "로그인할 때 추가 단계를 요구하여 계정을 보호하십시오." }, - "twoStepLoginOrganizationDesc": { - "message": "조직 수준에서 제공자를 구성하여 조직 내 사용자에게 2단계 로그인을 요구합니다." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "2단계 로그인을 활성화하면 Bitwarden 계정을 영원히 잠글 수 있습니다. 복구 코드를 사용하면 정상적인 2단계 로그인 제공자를 더 이상 사용할 수 없는 경우(예. 장치를 잃어버렸을 때) 계정에 액세스할 수 있습니다. 계정에 접근하지 못한다면 Bitwarden 지원팀은 어떤 도움도 줄 수 없습니다. 복구 코드를 기록하거나 출력하여 안전한 장소에 보관할 것을 권장합니다." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "안전하지 않은 웹사이트들 보고서" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "$ID$ 항목의 보안 코드를 확인했습니다.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "내 조직" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "조직 삭제" }, @@ -3112,7 +3137,7 @@ "message": "설치 ID를 입력하십시오" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "최대 시트 제한 (선택)", @@ -3157,10 +3182,10 @@ "message": "구독과 관련하여 추가적인 도움이 필요한 경우 고객 지원에 문의하십시오." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "조직 식별자가 필요합니다." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "SSO 연결 해제" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "권한" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "클라이언트" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "공급자 관리자" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/lv/messages.json b/apps/web/src/locales/lv/messages.json index 5e7d8045883..21c00c2b49f 100644 --- a/apps/web/src/locales/lv/messages.json +++ b/apps/web/src/locales/lv/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Pierakstīšanās ar ierīci ir jābūt iespējotai Bitwarden lietotnes iestatījumos. Nepieciešama cita iespēja?" }, + "loginWithMasterPassword": { + "message": "Pierakstīties ar galveno paroli" + }, "createAccount": { "message": "Izveidot kontu" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Attēlot atpazīstamu attēlu pie katra pierakstīšanās vienuma." }, - "enableGravatars": { - "message": "Iespējot Gravatārus", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Izmantot no gravatar.com ielādētus avatāra attēlus." - }, "enableFullWidth": { "message": "Iespējot pilna platuma izkārtojumu", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Divpakāpju pierakstīšanās" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Nodrošināt kontu, pieprasot papildus darbību pierakstoties." }, - "twoStepLoginOrganizationDesc": { - "message": "Pieprasīt divpakāpju pierakstīšanos apvienības lietotājiem, uzstādot nodrošinātājus apvienības līmenī." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Divpakāpju pierakstīšanās var pastāvīgi liegt piekļuvi Bitwarden kontam. Atkopšanas kods ļauj piekļūt tam gadījumā, kad vairs nav iespējams izmantot ierasto divpakāpju pierakstīšanās nodrošinātāju (piemēram, ir pazaudēta ierīce). Bitwarden atbalsts nevarēs palīdzēt, ja tiks pazaudēta piekļuve kontam. Ir ieteicams, ka atkopšanas kods tiek pierakstīts vai izdrukāts un turēts drošā vietā." @@ -1547,6 +1556,10 @@ "message": "Noteikt un novērst drošības nepilnības tiešsaistes kontos klikšķinot uz zemāk esošajām atskaitēm.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Nedrošu tīmekļa vietņu pārskats" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Skatīts ienuma $ID$ kartes numurs.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Skatīts vienuma $ID$ drošības kods.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Mana apvienība" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Izdzēst apvienību" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Ir nepieciešams apvienības identifikators." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Atsaistīt SSO" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Atļaujas" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Pārvaldnieka atļaujas" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Pasūtītāji" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Sniedzēja pārvaldnieks" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ augstāk esošajiem laukam(iem) ir jāpievērš uzmanība.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Ieslēgts" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Lietotāju skaits" }, + "loggingInAs": { + "message": "Pierakstās kā" + }, + "notYou": { + "message": "Tas neesi Tu?" + }, "multiSelectPlaceholder": { "message": "-- Rakstīt, lai atlasītu --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Notīrīt visu" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/ml/messages.json b/apps/web/src/locales/ml/messages.json index 81f23cdcd23..9fa5a2f3a2b 100644 --- a/apps/web/src/locales/ml/messages.json +++ b/apps/web/src/locales/ml/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "അക്കൗണ്ട് സൃഷ്ടിക്കുക" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Enable Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Enable Full Width Layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "രണ്ട്-ഘട്ട പ്രവേശനം" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organization's users by configuring providers at the organization level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Enabling two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (ex. you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecured Websites Report" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "എന്റെ സംഘടന" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "സംഘടന ഇല്ലാതാക്കുക" }, @@ -3112,7 +3137,7 @@ "message": "നിങ്ങളുടെ ഇൻസ്റ്റാളേഷൻ ഐഡി നൽകുക" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "സംഘടനയുടെ ഐഡന്റിഫയർ ആവശ്യമാണ്." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Unlink SSO" }, @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send removed", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "അനുമതികൾ" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/nb/messages.json b/apps/web/src/locales/nb/messages.json index b309082db4a..43c1c316b81 100644 --- a/apps/web/src/locales/nb/messages.json +++ b/apps/web/src/locales/nb/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Opprett en konto" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Vis et gjenkjennelig bilde ved siden av hver innlogging." }, - "enableGravatars": { - "message": "Skru på Gravatarer", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Bruk avatarbilder som har blitt lastet inn fra gravatar.com." - }, "enableFullWidth": { "message": "Aktiver fullbreddeoppsett", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "2-trinnsinnlogging" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Sikre kontoen din ved å kreve et ekstra trinn når du logger på." }, - "twoStepLoginOrganizationDesc": { - "message": "Krev 2-trinnsinnlogging for din organisasjons brukere, ved å sette opp leverandører på organisasjonsnivået." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Å skru på 2-trinnsinnlogging kan låse deg permanent ut av din Bitwarden-konto. En gjenopprettingskode gir deg tilgang til kontoen din i det tilfellet at du ikke lenger kan bruke din vanlige 2-trinnsinnloggingsleverandør (f.eks. at du mister enheten din). Bitwarden-kundestøtten vil ikke kunne hjelpe deg dersom du mister tilgang til kontoen din. Vi anbefaler at du skriver ned eller skriver ut gjenopprettingskoden og legger den på en trygg plass." @@ -1547,6 +1556,10 @@ "message": "Identifiser og løs sikkerhetsavvik i kontoene dine på nettet ved å klikke på rapportene nedenfor.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Rapport om usikrede nettsteder" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Vist sikkerhetskoden for objektet $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Min organisasjon" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Slett organisasjonen" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Organisasjonsidentifikator er påkrevd." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Koble fra SSO" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Rettigheter" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Klienter" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Administrator for søkeleverandør" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/nl/messages.json b/apps/web/src/locales/nl/messages.json index 918f809c68b..596963deea8 100644 --- a/apps/web/src/locales/nl/messages.json +++ b/apps/web/src/locales/nl/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Inloggen met apparaat moet zijn ingeschakeld in de instellingen van de mobiele Bitwarden-app. Een andere optie nodig?" }, + "loginWithMasterPassword": { + "message": "Inloggen met je hoofdwachtwoord" + }, "createAccount": { "message": "Account aanmaken" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Een herkenbare afbeelding naast iedere login weergeven." }, - "enableGravatars": { - "message": "Gravatars activeren", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Gebruik avatar-afbeeldingen van gravatar.com." - }, "enableFullWidth": { "message": "Weergave op volle breedte inschakelen", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Tweestapsaanmelding" }, + "twoStepLoginEnforcement": { + "message": "Tweestapsaanmelding afdwingen" + }, "twoStepLoginDesc": { "message": "Beveilig je account door een extra stap te vereisen bij het inloggen." }, - "twoStepLoginOrganizationDesc": { - "message": "Vereis tweestapsaanmelding voor de gebruikers van je organisatie door aanbieders op organisatieniveau in te stellen." + "twoStepLoginOrganizationDescStart": { + "message": "Bitwarden tweestapsaanmeldingsopties afdwingen voor leden door gebruik te maken van de ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Beleid voor tweestapsaanmelding" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Voor het afdwingen van tweestapsaanmelding via Duo, gebruik je de onderstaande opties." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Als je SSO hebt ingesteld of dat van plan bent, is tweestapsaanmelding misschien al afgedwongen via je Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Door aanmelden in twee stappen in te schakelen, kun je jezelf definitief buitensluiten van je Bitwarden-account. Een herstelcode geeft je toegang tot je account in het geval dat je je normale tweestapsaanmelding niet meer kunt gebruiken (bijv. als je je apparaat verliest). De Bitwarden-klantondersteuning kan je niet helpen als je de toegang tot je account verliest. We raden je met klem aan de herstelcode op te schrijven of af te drukken en op een veilige plaats te bewaren." @@ -1544,9 +1553,13 @@ "message": "Rapportages" }, "reportsDesc": { - "message": "Identificeer en sluit beveiligingsgaten in je online accounts door op onderstaande rapporten te klikken.", + "message": "Identificeer en sluit beveiligingsgaten in je online accounts door op één van de onderstaande rapporten te klikken.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identificeer en sluit beveiligingsgaten in je de accounts van je organisatie door op één van de onderstaande rapporten te klikken.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Niet-beveiligde websites" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Kaartnummer bekeken voor item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Beveiligingscode bekeken voor item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Mijn organisatie" }, + "organizationInfo": { + "message": "Organisatie-informatie" + }, "deleteOrganization": { "message": "Organisatie verwijderen" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Organisatie-identificatie vereist." }, + "ssoIdentifier": { + "message": "SSO Identifier" + }, + "ssoIdentifierHint": { + "message": "Geef dit ID aan je leden door voor het inloggen met SSO." + }, "unlinkSso": { "message": "SSO ontkoppelen" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Rechten" }, + "permission": { + "message": "Toestemming" + }, "managerPermissions": { "message": "Managersrechten" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Apparaten" }, + "client": { + "message": "Applicatie", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Providerbeheerder" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Invoer mag niet meer dan $COUNT$ tekens lang zijn.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ veld(en) hierboven hebben je aandacht nodig.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Aan" }, + "members": { + "message": "Leden" + }, + "reporting": { + "message": "Rapporteren" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Aantal gebruikers" }, + "loggingInAs": { + "message": "Inloggen als" + }, + "notYou": { + "message": "Ben jij dit niet?" + }, "multiSelectPlaceholder": { "message": "-- Type om te filteren --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Alles wissen" + }, + "from": { + "message": "Van" + }, + "to": { + "message": "Naar" + }, + "member": { + "message": "Lid" + }, + "update": { + "message": "Bijwerken" + }, + "role": { + "message": "Rol" + }, + "canView": { + "message": "Kan bekijken" + }, + "canViewExceptPass": { + "message": "Kan bekijken, behalve wachtwoorden" + }, + "canEdit": { + "message": "Kan bewerken" + }, + "canEditExceptPass": { + "message": "Kan bekijken, behalve wachtwoorden" + }, + "group": { + "message": "Groep" + }, + "groupAccessAll": { + "message": "Deze groep kan alle items inzien en bewerken." + }, + "memberAccessAll": { + "message": "Deze gebruiker kan alle items inzien en bewerken." } } diff --git a/apps/web/src/locales/nn/messages.json b/apps/web/src/locales/nn/messages.json index c042f4ba03f..9c862bb2119 100644 --- a/apps/web/src/locales/nn/messages.json +++ b/apps/web/src/locales/nn/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Create account" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Show Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Two-step login" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organization's users by configuring providers at the organization level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Setting up two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (example: you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecure websites" }, @@ -2491,7 +2504,7 @@ "message": "Logged in" }, "changedPassword": { - "message": "Account password saved" + "message": "Changed account password" }, "enabledUpdated2fa": { "message": "Two-step login saved" @@ -2500,7 +2513,7 @@ "message": "Two-step login turned off" }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2512,10 +2525,10 @@ "message": "Vault exported" }, "exportedOrganizationVault": { - "message": "Organization vault exported" + "message": "Exported organization vault." }, "editedOrgSettings": { - "message": "Organization settings saved" + "message": "Edited organization settings." }, "createdItemId": { "message": "Created item $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My organization" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organization" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3133,7 +3158,7 @@ "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." }, "subscriptionUserSeats": { - "message": "Your subscription allows for a total of $COUNT$ users.", + "message": "Your subscription allows for a total of $COUNT$ members.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Organization identifier" }, "ssoLogInWithOrgIdentifier": { - "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + "message": "Log in using your organization's single sign-on portal. Please enter your organization's SSO identifier to begin." }, "enterpriseSingleSignOn": { "message": "Enterprise single sign-on" @@ -3688,7 +3713,13 @@ "message": "SSO validation failed" }, "ssoIdentifierRequired": { - "message": "Organization identifier is required." + "message": "Organization SSO identifier is required." + }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." }, "unlinkSso": { "message": "Unlink SSO" @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send removed", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/pl/messages.json b/apps/web/src/locales/pl/messages.json index 8b033d42a61..1ba40fad5e1 100644 --- a/apps/web/src/locales/pl/messages.json +++ b/apps/web/src/locales/pl/messages.json @@ -71,7 +71,7 @@ "message": "Firma" }, "ssn": { - "message": "PESEL" + "message": "Numer PESEL" }, "passportNumber": { "message": "Numer paszportu" @@ -227,7 +227,7 @@ "description": "Toggling an expand/collapse state." }, "generatePassword": { - "message": "Generuj hasło" + "message": "Wygeneruj hasło" }, "checkPassword": { "message": "Sprawdź, czy hasło zostało ujawnione." @@ -467,7 +467,7 @@ "message": "Czy na pewno chcesz usunąć ten załącznik?" }, "attachmentSaved": { - "message": "Załącznik został zapisany." + "message": "Załącznik został zapisany" }, "file": { "message": "Plik" @@ -485,7 +485,7 @@ "message": "Element został dodany" }, "editedItem": { - "message": "Element został zaktualizowany" + "message": "Element został zapisany" }, "movedItemToOrg": { "message": "Element $ITEMNAME$ został przeniesiony do organizacji $ORGNAME$", @@ -528,13 +528,13 @@ "message": "Elementy zostały przeniesione do kosza" }, "movedItems": { - "message": "Przeniesione elementy" + "message": "Elementy zostały przeniesione" }, "overwritePasswordConfirmation": { "message": "Czy na pewno chcesz zastąpić obecne hasło?" }, "editedFolder": { - "message": "Folder został zaktualizowany" + "message": "Folder został zapisany" }, "addedFolder": { "message": "Folder został dodany" @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Logowanie za pomocą urządzenia musi być włączone w ustawieniach aplikacji mobilnej Bitwarden. Potrzebujesz innej opcji?" }, + "loginWithMasterPassword": { + "message": "Logowanie hasłem głównym" + }, "createAccount": { "message": "Utwórz konto" }, @@ -597,7 +600,7 @@ "message": "Używaj swojego adresu e-mail do logowania." }, "yourName": { - "message": "Twoje imię" + "message": "Twoja nazwa" }, "yourNameDesc": { "message": "Jak powinniśmy cię nazywać?" @@ -691,7 +694,7 @@ "message": "Hasło główne jest nieprawidłowe" }, "invalidFilePassword": { - "message": "Nieprawidłowe hasło, użyj hasła, które wprowadziłeś podczas tworzenia pliku eksportu." + "message": "Hasło pliku jest nieprawidłowe. Użyj prawidłowego hasła." }, "lockNow": { "message": "Zablokuj" @@ -718,7 +721,7 @@ "message": "Nie należysz do żadnej organizacji. Organizacje pozwalają na bezpieczne udostępnianie elementów innym użytkownikom." }, "notificationSentDevice": { - "message": "Powiadomienie zostało wysłane na twoje urządzenie." + "message": "Powiadomienie zostało wysłane na urządzenie." }, "versionNumber": { "message": "Wersja $VERSION_NUMBER$", @@ -909,10 +912,10 @@ "message": "Format pliku" }, "fileEncryptedExportWarningDesc": { - "message": "Ten plik będzie chroniony hasłem i będzie wymagał tego hasła do odszyfrowania." + "message": "Plik będzie chroniony hasłem, które będzie wymagane do odszyfrowania pliku." }, "exportPasswordDescription": { - "message": "To hasło będzie używane do eksportu i importu tego pliku" + "message": "Hasło będzie używane do eksportowania i importowania pliku" }, "confirmMasterPassword": { "message": "Potwierdź hasło główne" @@ -921,10 +924,10 @@ "message": "Potwierdź format" }, "filePassword": { - "message": "Hasło do pliku" + "message": "Hasło pliku" }, "confirmFilePassword": { - "message": "Potwierdź hasło do pliku" + "message": "Potwierdź hasło pliku" }, "accountBackupOptionDescription": { "message": "Wykorzystuje szyfrowanie konta Bitwarden, a nie hasło główne, aby chronić eksport. Ten eksport może być zaimportowany tylko na tym koncie. Użyj tego, aby utworzyć kopię zapasową, której nie można użyć nigdzie indziej." @@ -933,7 +936,7 @@ "message": "Utwórz hasło wygenerowane przez użytkownika, aby chronić eksport. Użyj tego, aby utworzyć eksport, który może być używany na innych kontach." }, "fileTypeHeading": { - "message": "Typ Pliku" + "message": "Rodzaj pliku" }, "accountBackup": { "message": "Kopia zapasowa konta" @@ -942,16 +945,16 @@ "message": "Zabezpieczone hasłem" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { - "message": "\"Hasło do pliku\" i \"Potwierdź hasło do pliku\" nie pasują do siebie." + "message": "“Hasło pliku” i “Potwierdź hasło pliku“ nie pasują do siebie." }, "confirmVaultImport": { - "message": "Potwierdź import sejfu" + "message": "Potwierdź importowanie sejfu" }, "confirmVaultImportDesc": { - "message": "Ten plik jest chroniony hasłem. Wprowadź hasło pliku, aby zaimportować dane." + "message": "Plik jest chroniony hasłem. Wprowadź hasło pliku, aby zaimportować dane." }, "exportSuccess": { - "message": "Dane z sejfu zostały wyeksportowane." + "message": "Dane sejfu zostały wyeksportowane" }, "passwordGenerator": { "message": "Generator hasła" @@ -970,7 +973,7 @@ "message": "Unikaj niejednoznacznych znaków" }, "regeneratePassword": { - "message": "Wygeneruj hasło ponownie" + "message": "Wygeneruj ponownie hasło" }, "length": { "message": "Długość" @@ -1003,7 +1006,7 @@ "message": "Uwzględnij cyfry" }, "passwordHistory": { - "message": "Historia haseł" + "message": "Historia hasła" }, "noPasswordsInList": { "message": "Brak haseł." @@ -1013,7 +1016,7 @@ "description": "To clear something out. Example: To clear browser history." }, "accountUpdated": { - "message": "Konto zostało zaktualizowane" + "message": "Konto zostało zapisane" }, "changeEmail": { "message": "Zmień adres e-mail" @@ -1040,7 +1043,7 @@ "message": "Ta czynność spowoduje wylogowanie z bieżącej sesji, przez co konieczne będzie ponowne zalogowanie się. Aktywne sesje na innych urządzeniach mogą pozostać aktywne przez maksymalnie godzinę." }, "emailChanged": { - "message": "Adres e-mail został zmieniony" + "message": "Adres e-mail został zapisany" }, "logBackIn": { "message": "Zaloguj się ponownie." @@ -1052,7 +1055,7 @@ "message": "Zmień hasło główne" }, "masterPasswordChanged": { - "message": "Hasło główne zostało zmienione" + "message": "Hasło główne zostało zapisane" }, "currentMasterPass": { "message": "Obecne hasło główne" @@ -1094,7 +1097,7 @@ "message": "Zmień KDF" }, "encKeySettingsChanged": { - "message": "Ustawienia klucza szyfrowania zostały zaktualizowane" + "message": "Ustawienia klucza szyfrowania zostały zapisane" }, "dangerZone": { "message": "Niebezpieczna strefa" @@ -1166,7 +1169,7 @@ "message": "Wystąpił problem z danymi, które chcesz zaimportować. Rozwiąż poniższe problemy w Twoim pliku i spróbuj ponownie." }, "importSuccess": { - "message": "Dane zostały zaimportowane do sejfu." + "message": "Dane zostały zaimportowane" }, "importWarning": { "message": "Importujesz dane do organizacji $ORGANIZATION$. Dane mogą zostać udostępnione członkom organizacji. Czy chcesz kontynuować?", @@ -1221,7 +1224,7 @@ "message": "Dostosuj swoje doświadczenia z sejfem internetowym." }, "preferencesUpdated": { - "message": "Ustawienia zostały zaktualizowane" + "message": "Ustawienia zostały zapisane" }, "language": { "message": "Język" @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Pokaż rozpoznawalny obraz obok każdych danych logowania." }, - "enableGravatars": { - "message": "Pokaż Gravatary", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Korzystaj ze zdjęć profilowych załadowanych z serwisu gravatar.com." - }, "enableFullWidth": { "message": "Włącz układ na całą szerokość", "description": "Allows scaling the web vault UI's width" @@ -1289,16 +1285,29 @@ } }, "domainsUpdated": { - "message": "Domeny zostały zaktualizowane" + "message": "Domeny zostały zapisane" }, "twoStepLogin": { "message": "Logowanie dwustopniowe" }, + "twoStepLoginEnforcement": { + "message": "Wymuszanie logowania dwustopniowego" + }, "twoStepLoginDesc": { "message": "Zabezpiecz swoje konto poprzez wymóg wykonania dodatkowego kroku podczas logowania." }, - "twoStepLoginOrganizationDesc": { - "message": "Wymagaj logowania dwustopniowego dla użytkowników w Twojej organizacji, poprzez skonfigurowanie dostawców na poziomie organizacji." + "twoStepLoginOrganizationDescStart": { + "message": "Wymuszaj opcje logowania dwustopniowego Bitwarden dla członków za pomocą ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Polityka logowania dwustopniowego" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Aby wymagać logowania dwustopniowego poprzez Duo, użyj poniższych opcji." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Jeśli masz skonfigurowane SSO lub je planujesz, logowanie dwustopniowe może być wymagane poprzez dostawcę tożsamości." }, "twoStepLoginRecoveryWarning": { "message": "Włączenie logowania dwustopniowego można trwale zablokować konto Bitwarden. Kod odzyskiwania pozwala na dostęp do konta w przypadku, gdy nie będziesz mógł skorzystać ze standardowego dostawcy logowania dwustopniowego (np. w przypadku utraty urządzenia). Pomoc techniczna Bitwarden nie będzie w stanie Ci pomóc, jeśli stracisz dostęp do swojego konta. Zalecamy zapisanie lub wydrukowanie kodu odzyskiwania i przechowywanie go w bezpiecznym miejscu." @@ -1345,7 +1354,7 @@ "message": "Wyłącz" }, "revokeAccess": { - "message": "Odwołaj dostęp" + "message": "Unieważnij dostęp" }, "twoStepLoginProviderEnabled": { "message": "Ten dostawca logowania dwustopniowego jest już włączony na koncie." @@ -1480,7 +1489,7 @@ "message": "Wpisz 6-cyfrowy kod weryfikacyjny z wiadomości e-mail" }, "sendEmail": { - "message": "Wyślij e-mail" + "message": "Wyślij wiadomość" }, "twoFactorU2fAdd": { "message": "Dodaj klucz bezpieczeństwa FIDO U2F do swojego konta" @@ -1547,8 +1556,12 @@ "message": "Zidentyfikuj i napraw luki bezpieczeństwa na swoich kontach online, klikając raporty poniżej.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Zidentyfikuj i napraw luki bezpieczeństwa na swoich kontach organizacji, klikając raporty poniżej.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { - "message": "Niezabezpieczone witryny" + "message": "Niezabezpieczone strony" }, "unsecuredWebsitesReportDesc": { "message": "Używanie niezabezpieczonych stron (protokół HTTP) może być niebezpieczne. Jeśli strona na to pozwala, zawsze powinieneś używać protokołu HTTPS, aby Twoje połączenie było szyfrowane." @@ -1724,13 +1737,13 @@ "message": "Strona" }, "affectedUsers": { - "message": "Liczba poszkodowanych użytkowników" + "message": "Poszkodowani użytkownicy" }, "breachOccurred": { - "message": "Data wystąpienia naruszenia" + "message": "Data naruszenia" }, "breachReported": { - "message": "Naruszenie zostało zgłoszone" + "message": "Data zgłoszenia" }, "reportError": { "message": "Wystąpił błąd podczas próby załadowania raportu. Spróbuj ponownie" @@ -1925,7 +1938,7 @@ "message": "Czy na pewno chcesz anulować? Dostęp do wszystkich funkcji związanych z tą subskrypcją zostanie wyłączony na koniec tego okresu rozliczeniowego." }, "canceledSubscription": { - "message": "Subskrypcja została anulowana." + "message": "Subskrypcja została anulowana" }, "neverExpires": { "message": "Nigdy nie wygasa" @@ -2027,7 +2040,7 @@ "message": "Wybierz liczbę GB do dodania" }, "gbStorageRemove": { - "message": "GB przestrzeni do usunięcia" + "message": "Wybierz liczbę GB do usunięcia" }, "storageAddNote": { "message": "Dodanie przestrzeni dyskowej będzie skutkować korektą sumy należności i natychmiastowym obciążeniem konta. Pierwsza opłata zostanie naliczona proporcjonalnie do końca obecnego okresu rozliczeniowego." @@ -2087,13 +2100,13 @@ "message": "To konto jest własnością firmy." }, "billingEmail": { - "message": "E-mail rozliczeniowy" + "message": "Adres rozliczeniowy" }, "businessName": { "message": "Nazwa firmy" }, "chooseYourPlan": { - "message": "Wybierz swój plan" + "message": "Wybierz plan" }, "users": { "message": "Użytkownicy" @@ -2488,7 +2501,7 @@ "message": "Sejf internetowy" }, "loggedIn": { - "message": "Zalogowano." + "message": "Zalogowano" }, "changedPassword": { "message": "Hasło do konta zostało zmienione." @@ -2509,13 +2522,13 @@ "message": "Logowanie nie powiodło się z powodu nieprawidłowego logowania dwustopniowego." }, "exportedVault": { - "message": "Sejf został wyeksportowany." + "message": "Sejf został wyeksportowany" }, "exportedOrganizationVault": { - "message": "Sejf organizacji został wyeksportowany." + "message": "Sejf organizacji został wyeksportowany" }, "editedOrgSettings": { - "message": "Ustawienia organizacji zostały zaktualizowane." + "message": "Ustawienia organizacji zostały zapisane" }, "createdItemId": { "message": "Element $ID$ został utworzony.", @@ -2583,8 +2596,17 @@ } } }, + "viewedCardNumberItemId": { + "message": "Wyświetlono numer karty dla elementu $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { - "message": "Wyświetlono kod bezpieczeństwa dla elementu $ID$.", + "message": "Wyświetlono kod zabezpieczający dla elementu $ID$.", "placeholders": { "id": { "content": "$1", @@ -2611,7 +2633,7 @@ } }, "copiedSecurityCodeItemId": { - "message": "Skopiowano kod bezpieczeństwa dla elementu $ID$.", + "message": "Skopiowano kod zabezpieczający dla elementu $ID$.", "placeholders": { "id": { "content": "$1", @@ -2860,7 +2882,7 @@ "message": "Dostęp użytkownika" }, "userType": { - "message": "Typ użytkownika" + "message": "Rodzaj użytkownika" }, "groupAccess": { "message": "Dostęp grupowy" @@ -2869,7 +2891,7 @@ "message": "Zmień grupy, do których należy użytkownik." }, "invitedUsers": { - "message": "Użytkownicy zostali zaproszeni." + "message": "Użytkownicy zostali zaproszeni" }, "resendInvitation": { "message": "Wyślij ponownie zaproszenie" @@ -2878,7 +2900,7 @@ "message": "Wyślij ponownie wiadomość" }, "hasBeenReinvited": { - "message": "Użytkownik $USER$ został ponownie zaproszony.", + "message": "Użytkownik $USER$ został ponownie zaproszony", "placeholders": { "user": { "content": "$1", @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Moja organizacja" }, + "organizationInfo": { + "message": "Organizacja" + }, "deleteOrganization": { "message": "Usuń organizację" }, @@ -3025,7 +3050,7 @@ "message": "Organizacja i wszystkie połączone z nią dane zostały usunięte." }, "organizationUpdated": { - "message": "Organizacja została zaktualizowana" + "message": "Organizacja została zapisana" }, "taxInformation": { "message": "Informacje podatkowe" @@ -3062,7 +3087,7 @@ "message": "Pobierz fakturę" }, "verifyBankAccount": { - "message": "Weryfikuj konto bankowe" + "message": "Zweryfikuj konto bankowe" }, "verifyBankAccountDesc": { "message": "Dokonaliśmy dwóch mikro przelewów na konto bankowe (mogą upłynąć 1-2 dni robocze, zanim je zobaczysz). Wpisz te kwoty, aby zweryfikować konto bankowe." @@ -3100,7 +3125,7 @@ "message": "Nazwa posiadacza konta" }, "bankAccountType": { - "message": "Typ konta" + "message": "Rodzaj konta" }, "bankAccountTypeCompany": { "message": "Firmowe" @@ -3324,7 +3349,7 @@ "description": "ex. Date this item was created" }, "datePasswordUpdated": { - "message": "Aktualizacja hasła", + "message": "Hasło zostało zaktualizowane", "description": "ex. Date this password was updated" }, "organizationIsDisabled": { @@ -3586,7 +3611,7 @@ } }, "permanentlyDeletedItemId": { - "message": "Element $ID$ został trwale usunięty.", + "message": "Element $ID$ został trwale usunięty", "placeholders": { "id": { "content": "$1", @@ -3625,7 +3650,7 @@ } }, "restoredItemId": { - "message": "Element $ID$ został przywrócony.", + "message": "Element $ID$ został przywrócony", "placeholders": { "id": { "content": "$1", @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Identyfikator organizacji jest wymagany." }, + "ssoIdentifier": { + "message": "Identyfikator SSO" + }, + "ssoIdentifierHint": { + "message": "Podaj ten identyfikator swoim użytkownikom, aby zalogować się za pomocą SSO." + }, "unlinkSso": { "message": "Odłącz logowanie jednokrotne SSO" }, @@ -3736,7 +3767,7 @@ "message": "Tekst" }, "createSend": { - "message": "Utwórz nową wysyłkę", + "message": "Nowa wysyłka", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { @@ -3744,11 +3775,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Wysyłka została utworzona", + "message": "Wysyłka została zapisana", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Wysyłka została zaktualizowana", + "message": "Wysyłka została zapisana", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deletedSend": { @@ -4001,7 +4032,7 @@ } }, "emergencyApproved": { - "message": "Dostęp awaryjny został zatwierdzony." + "message": "Dostęp awaryjny został zatwierdzony" }, "emergencyRejected": { "message": "Dostęp awaryjny został odrzucony" @@ -4038,7 +4069,7 @@ "message": "Użytkownicy organizacji, którzy mogą zarządzać zasadami organizacji są zwolnieni z przestrzegania wymagań zasad." }, "sendDisabled": { - "message": "Wysyłka została wyłączona", + "message": "Wysyłka została usunięta", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -4091,6 +4122,9 @@ "permissions": { "message": "Uprawnienia" }, + "permission": { + "message": "Uprawnienie" + }, "managerPermissions": { "message": "Menedżer uprawnień" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Klienci" }, + "client": { + "message": "Klient", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Administrator dostawcy" }, @@ -4570,7 +4608,7 @@ "message": "Dostawca jest wyłączony." }, "providerUpdated": { - "message": "Dostawca został zaktualizowany" + "message": "Dostawca został zapisany" }, "yourProviderIs": { "message": "Twój dostawca to $PROVIDER$. Posiada on uprawnienia administracyjne i rozliczeniowe dla Twojej organizacji.", @@ -5057,7 +5095,7 @@ "message": "Aby skonfigurować swoją organizację na własnym serwerze, musisz przesłać plik licencyjny. Aby wesprzeć darmowe plany rodzinne i zaawansowane możliwości rozliczeniowe dla własnej organizacji, musisz skonfigurować synchronizację płatności." }, "billingSyncApiKeyRotated": { - "message": "Token został zmieniony." + "message": "Token został zmieniony" }, "billingSync": { "message": "Synchronizacja płatności" @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Dane wejściowe nie mogą przekraczać długości $COUNT$ znaków.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "Pola powyżej wymagające Twojej uwagi: $COUNT$.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Wł." }, + "members": { + "message": "Członkowie" + }, + "reporting": { + "message": "Zgłaszanie" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Liczba użytkowników" }, + "loggingInAs": { + "message": "Logowanie jako" + }, + "notYou": { + "message": "To nie Ty?" + }, "multiSelectPlaceholder": { "message": "-- Pisz, aby filtrować --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Wyczyść wszystko" + }, + "from": { + "message": "Od" + }, + "to": { + "message": "Do" + }, + "member": { + "message": "Członek" + }, + "update": { + "message": "Zaktualizuj" + }, + "role": { + "message": "Rola" + }, + "canView": { + "message": "Może wyświetlać" + }, + "canViewExceptPass": { + "message": "Może wyświetlać z wyjątkiem haseł" + }, + "canEdit": { + "message": "Można edytować" + }, + "canEditExceptPass": { + "message": "Może edytować z wyjątkiem haseł" + }, + "group": { + "message": "Grupa" + }, + "groupAccessAll": { + "message": "Ta grupa może otwierać i modyfikować wszystkie elementy." + }, + "memberAccessAll": { + "message": "Ten użytkownik może otwierać i modyfikować wszystkie elementy." } } diff --git a/apps/web/src/locales/pt_BR/messages.json b/apps/web/src/locales/pt_BR/messages.json index 2e717bd85aa..beb467202f5 100644 --- a/apps/web/src/locales/pt_BR/messages.json +++ b/apps/web/src/locales/pt_BR/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Login com dispositivo deve ser habilitado nas configurações do aplicativo móvel do Bitwarden. Necessita de outra opção?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Criar conta" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Mostrar uma imagem reconhecível ao lado de cada login." }, - "enableGravatars": { - "message": "Habilitar Gravatar", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use imagens de avatar carregadas do gravatar.com." - }, "enableFullWidth": { "message": "Habilitar Esquema de Largura Total", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Login em Duas Etapas" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Proteja a sua conta exigindo uma etapa adicional ao iniciar sessão." }, - "twoStepLoginOrganizationDesc": { - "message": "Exigir login em duas etapas para os usuários da organização, configurando provedores no nível da organização." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Ativar o login em duas etapas pode bloquear você permanentemente da sua conta no Bitwarden. Um código de recuperação permite que você acesse sua conta no caso de não poder mais usar seu provedor de login em duas etapas normalmente (por exemplo, você perde seu dispositivo). O suporte do Bitwarden não poderá ajudá-lo se você perder o acesso à sua conta. Recomendamos que você anote ou imprima o código de recuperação e mantenha-o em um local seguro." @@ -1547,6 +1556,10 @@ "message": "Identifique e feche as lacunas de segurança em suas contas online clicando nos relatórios abaixo.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Relatório de Sites Inseguros" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Código de segurança visualizado para o item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Minha Organização" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Excluir Organização" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "O Identificador da Organização é obrigatório." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Desvincular SSO" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissões" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Permissões de Gerente" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Clientes" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Administrador do Provedor" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ campos(s) acima precisam de sua atenção.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Ligado" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Número de usuários" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Digite para filtrar --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Limpar todos" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/pt_PT/messages.json b/apps/web/src/locales/pt_PT/messages.json index 1334c574d55..e7724527aef 100644 --- a/apps/web/src/locales/pt_PT/messages.json +++ b/apps/web/src/locales/pt_PT/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "O início de sessão com o dispositivo deve ser ativado nas definições da aplicação móvel do Bitwarden. Necessita de outra opção?" }, + "loginWithMasterPassword": { + "message": "Iniciar sessão com a palavra-passe mestra" + }, "createAccount": { "message": "Criar conta" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Mostre uma imagem reconhecível ao lado de cada login." }, - "enableGravatars": { - "message": "Ativar Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Utilizar imagens de avatar carregadas a partir de gravatar.com." - }, "enableFullWidth": { "message": "Ativar layout de largura total", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Início de sessão de dois passos" }, + "twoStepLoginEnforcement": { + "message": "Aplicação do Início de Sessão de Dois Passos" + }, "twoStepLoginDesc": { "message": "Reforce a segurança da sua conta ao requerer um passo adicional para iniciar sessão." }, - "twoStepLoginOrganizationDesc": { - "message": "Requeira início de sessão de dois passos para os utilizadores da sua organização ao configurar os provedores ao nível da organização." + "twoStepLoginOrganizationDescStart": { + "message": "Aplique as opções do Início de Sessão de Dois Passos do Bitwarden para membros ao utilizar as ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Políticas do Início de Sessão de Dois Passos" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Para aplicar o Início de Sessão de Dois Passos através do Duo, utilize as opções abaixo." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Se tiver a configuração SSO, ou planeia tê-la, o Início de Sessão de Dois Passos já pode ser aplicado pelo seu Fornecedor de Identidade." }, "twoStepLoginRecoveryWarning": { "message": "Ativar o início de sessão de dois passos pode bloquear-lhe permanentemente o acesso à sua conta Bitwarden. Um código de recuperação permite-lhe aceder à sua conta caso já não possa utilizar o seu provedor normal de início de sessão de dois passos (ex. perde o seu dispositivo). O apoio do Bitwarden não o poderá ajudar se perder acesso à sua conta. Recomendamos que anote ou imprima o código de recuperação e mantenha-o em local seguro." @@ -1547,6 +1556,10 @@ "message": "Identifique e feche lacunas de segurança nas suas contas online clicando nos relatórios abaixo.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identifique e feche lacunas de segurança nas contas da sua organização ao clicar nos relatórios abaixo.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Relatório de websites inseguros" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Número do Cartão Visualizado para o item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Código de segurança visto para o item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Minha organização" }, + "organizationInfo": { + "message": "Informações da Organização" + }, "deleteOrganization": { "message": "Eliminar organização" }, @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Identificador da organização é requerido." }, + "ssoIdentifier": { + "message": "Identificador SSO" + }, + "ssoIdentifierHint": { + "message": "Forneça este ID aos seus membros para iniciar sessão com SSO." + }, "unlinkSso": { "message": "Desligar SSO" }, @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Envio desabilitado", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissões" }, + "permission": { + "message": "Permissão" + }, "managerPermissions": { "message": "Gestão de permissões" }, @@ -4365,7 +4399,7 @@ "message": "Permitir que administradores redefinam senhas mestres dos membros." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Inscrição Automática" @@ -4374,7 +4408,7 @@ "message": "Todos os utilizadores serão inscritos automaticamente na redefinição de senha assim que o convite for aceito e não será possível anular." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { "message": "Exigir que novos utilizadore sejam inscritos automaticamente" @@ -4496,6 +4530,10 @@ "clients": { "message": "Clientes" }, + "client": { + "message": "Cliente", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Administração de fornecedor" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "A entrada não pode exceder os $COUNT$ caracteres de comprimento.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ campos(s) acima precisam da sua atenção.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Ligado" }, + "members": { + "message": "Membros" + }, + "reporting": { + "message": "A relatar" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Número de utilizadores" }, + "loggingInAs": { + "message": "A iniciar sessão como" + }, + "notYou": { + "message": "Utilizador incorreto?" + }, "multiSelectPlaceholder": { "message": "-- Escreva para Filtrar --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Limpar tudo" + }, + "from": { + "message": "De" + }, + "to": { + "message": "Para" + }, + "member": { + "message": "Membro" + }, + "update": { + "message": "Atualizar" + }, + "role": { + "message": "Cargo" + }, + "canView": { + "message": "Pode ver" + }, + "canViewExceptPass": { + "message": "Pode ver, excepto palavras-passe" + }, + "canEdit": { + "message": "Pode editar" + }, + "canEditExceptPass": { + "message": "Pode editar, excepto palavras-passe" + }, + "group": { + "message": "Grupo" + }, + "groupAccessAll": { + "message": "Este grupo pode aceder e modificar todos os itens." + }, + "memberAccessAll": { + "message": "Este membro pode aceder e modificar todos os itens." } } diff --git a/apps/web/src/locales/ro/messages.json b/apps/web/src/locales/ro/messages.json index 6be8b599310..e48387a3715 100644 --- a/apps/web/src/locales/ro/messages.json +++ b/apps/web/src/locales/ro/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Autentificarea cu dispozitivul trebuie să fie configurată în setările aplicației mobile Bitwarden. Aveți nevoie de o altă opțiune?" }, + "loginWithMasterPassword": { + "message": "Autentificați-vă cu parola principală" + }, "createAccount": { "message": "Creare cont" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Afișează o imagine ușor de recunoscut lângă fiecare autentificare." }, - "enableGravatars": { - "message": "Afișare Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Folosește imagini avatar încărcate de pe gravatar.com." - }, "enableFullWidth": { "message": "Afișare aspect pe toată lățimea", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Autentificare în doi pași" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Vă securizează contul solicitând un pas suplimentar la conectare." }, - "twoStepLoginOrganizationDesc": { - "message": "Necesită autentificarea în două etape pentru utilizatorii organizației dvs. prin configurarea furnizorilor la nivel de organizație." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Configurarea unei autentificări în două etape vă poate bloca permanent din contul Bitwarden. Un cod de recuperare vă permite să vă accesați contul în cazul în care nu mai puteți utiliza furnizorul normal de autentificare în două etape (exemplu: vă pierdeți dispozitivul). Serviciul de asistență Bitwarden nu vă va putea ajuta dacă pierdeți accesul la cont. Vă recomandăm să notați sau să imprimați codul de recuperare și să-l păstrați într-un loc sigur." @@ -1547,6 +1556,10 @@ "message": "Identificați și eliminați lacunele de securitate din conturile dvs. online făcând clic pe rapoartele de mai jos.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Website-uri nesigure" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Codul de securitate al elementului $ID$ a fost vizualizat.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Organizația mea" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Ștergere organizație" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Identificatorul organizației este obligatoriu." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Deconectare SSO" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permisiuni" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Permisiuni manager" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Clienți" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Administrator furnizor" }, @@ -4715,31 +4753,31 @@ "message": "Tipuri de claim cu nume personalizat" }, "acrValues": { - "message": "Requested authentication context class reference values" + "message": "Valorile de referință ale clasei de context de autentificare solicitate" }, "expectedReturnAcrValue": { - "message": "Expected \"acr\" claim value in response" + "message": "Valoarea claim „acr” așteptată ca răspuns" }, "spEntityId": { - "message": "SP entity ID" + "message": "ID entitate SP" }, "spMetadataUrl": { - "message": "SAML 2.0 metadata URL" + "message": "URL metadata SAML 2.0" }, "spAcsUrl": { - "message": "Assertion consumer service (ACS) URL" + "message": "URL-ul Serviciului de aserțiuni consumatori (ACS)" }, "spNameIdFormat": { - "message": "Name ID format" + "message": "Format nume ID" }, "spOutboundSigningAlgorithm": { - "message": "Outbound signing algorithm" + "message": "Algoritm de semnare de ieșire" }, "spSigningBehavior": { - "message": "Signing behavior" + "message": "Comportament de semnare" }, "spMinIncomingSigningAlgorithm": { - "message": "Minimum incoming signing algorithm" + "message": "Algoritm de semnare de intrare minim" }, "spWantAssertionsSigned": { "message": "Se așteaptă afirmații semnate" @@ -4751,19 +4789,19 @@ "message": "ID-ul Entității" }, "idpBindingType": { - "message": "Binding type" + "message": "Tipul de legare" }, "idpSingleSignOnServiceUrl": { - "message": "Single sign-on service URL" + "message": "URL-ul serviciului de autentificare unică" }, "idpSingleLogoutServiceUrl": { - "message": "Single log-out service URL" + "message": "URL-ul serviciului de deconectare unică" }, "idpX509PublicCert": { - "message": "X509 public certificate" + "message": "Certificat public X509" }, "idpOutboundSigningAlgorithm": { - "message": "Outbound signing algorithm" + "message": "Algoritm de semnare de ieșire" }, "idpAllowUnsolicitedAuthnResponse": { "message": "Se permite răspunsul nesolicitat de autentificare" @@ -4775,7 +4813,7 @@ "message": "Semnare a solicitărilor de autentificare" }, "ssoSettingsSaved": { - "message": "Single sign-on configuration saved" + "message": "Configurație de autentificare unică salvată" }, "sponsoredFamilies": { "message": "Planul Bitwarden Familii gratuit" @@ -4820,10 +4858,10 @@ "message": "Acceptați oferta pentru o organizație existentă sau creați o nouă organizație Familiile." }, "setupSponsoredFamiliesLoginDesc": { - "message": "You've been offered a free Bitwarden Families plan organization. To continue, you need to log in to the account that received the offer." + "message": "Vi s-a oferit o organizare gratuită a planului Bitwarden Familii. Pentru a continua, trebuie să vă conectați la contul care a primit oferta." }, "sponsoredFamiliesAcceptFailed": { - "message": "Unable to accept offer. Please resend the offer email from your Enterprise account and try again." + "message": "Oferta nu poate fi acceptată. Retrimiteți e-mailul de ofertă din contul Enterprise și încercați din nou." }, "sponsoredFamiliesAcceptFailedShort": { "message": "Imposibil de acceptat oferta. $DESCRIPTION$", @@ -4844,7 +4882,7 @@ "message": "Revendicată" }, "redeemedAccount": { - "message": "Account redeemed" + "message": "Cont revendicat" }, "revokeAccount": { "message": "Revocare cont $NAME$", @@ -4856,7 +4894,7 @@ } }, "resendEmailLabel": { - "message": "Resend sponsorship email to $NAME$ sponsorship", + "message": "Retrimiteți e-mailul de sponsorizare la sponsorizarea $NAME$", "placeholders": { "name": { "content": "$1", @@ -4865,31 +4903,31 @@ } }, "freeFamiliesPlan": { - "message": "Free Families plan" + "message": "Plan gratuit pentru familii" }, "redeemNow": { - "message": "Redeem now" + "message": "Revendicați acum" }, "recipient": { "message": "Beneficiar" }, "removeSponsorship": { - "message": "Remove sponsorship" + "message": "Înlăturare sponsorizare" }, "removeSponsorshipConfirmation": { "message": "După eliminarea unei sponsorizări, veți fi responsabil pentru acest abonament și facturile conexe. Sigur doriți să continuați?" }, "sponsorshipCreated": { - "message": "Sponsorship created" + "message": "Sponsorizare creată" }, "emailSent": { - "message": "Email sent" + "message": "E-mail trimis" }, "revokeSponsorshipConfirmation": { "message": "După eliminarea acestui cont, sponsorizarea planului Familii va expira la sfârșitul perioadei de facturare. Nu veți putea revendica o nouă ofertă de sponsorizare până când nu expiră cea existentă. Sunteți sigur că doriți să continuați?" }, "removeSponsorshipSuccess": { - "message": "Sponsorship removed" + "message": "Sponsorizare înlăturată" }, "ssoKeyConnectorError": { "message": "Eroare de Conector Cheie: asigurați-vă că aveți conectorul Cheie disponibil și că funcționează corect." @@ -4901,13 +4939,13 @@ "message": "Trimite un cod de verificare la adresa dvs. de e-mail" }, "sendCode": { - "message": "Send code" + "message": "Trimitere cod" }, "codeSent": { - "message": "Code sent" + "message": "Cod trimis" }, "verificationCode": { - "message": "Verification code" + "message": "Cod de verificare" }, "confirmIdentity": { "message": "Confirmați-vă identitatea pentru a continua." @@ -4928,13 +4966,13 @@ } }, "leaveOrganization": { - "message": "Leave organization" + "message": "Părăsire organizație" }, "removeMasterPassword": { - "message": "Remove master password" + "message": "Înlăturare parolă principală" }, "removedMasterPassword": { - "message": "Master password removed" + "message": "Parola principală înlăturată" }, "allowSso": { "message": "Permite autentificarea SSO" @@ -4958,34 +4996,34 @@ "message": "Pentru a configura decriptarea Conectorul Cheie este necesară atât autentificarea SSO, cât și politicile de organizație unică." }, "memberDecryptionOption": { - "message": "Member decryption options" + "message": "Opțiuni de decriptare a membrilor" }, "memberDecryptionPassDesc": { - "message": "Once authenticated, members will decrypt vault data using their master passwords." + "message": "Odată autentificați, membrii vor decripta datele din seif folosind parolele lor principale." }, "keyConnector": { "message": "Conector Cheie" }, "memberDecryptionKeyConnectorDesc": { - "message": "Connect login with SSO to your self-hosted decryption key server. Using this option, members won’t need to use their master passwords to decrypt vault data. Contact Bitwarden Support for set up assistance." + "message": "Conectați-vă autentificarea cu SSO la propriul server de chei de decriptare găzduit. Utilizând această opțiune, membrii nu vor trebui să-și folosească parolele principale pentru a decripta datele din seif. Contactați serviciul de asistență Bitwarden pentru asistență la configurare." }, "keyConnectorPolicyRestriction": { - "message": "\"Login with SSO and Key Connector Decryption\" is activated. This policy will only apply to owners and admins." + "message": "„Autentificare cu SSO și Decriptare conector cheie” este activată. Această politică se va aplica numai la proprietari și administratori." }, "enabledSso": { - "message": "SSO turned on" + "message": "SSO a fost activat" }, "disabledSso": { - "message": "SSO turned on" + "message": "SSO a fost activat" }, "enabledKeyConnector": { - "message": "Key Connector activated" + "message": "Conector cheie activat" }, "disabledKeyConnector": { - "message": "Key Connector deactivated" + "message": "Conector cheie dezactivat" }, "keyConnectorWarning": { - "message": "Once members begin using Key Connector, your organization cannot revert to master password decryption. Proceed only if you are comfortable deploying and managing a key server." + "message": "Odată ce membrii încep să utilizeze Conectorul cheie, organizația dvs. nu mai poate reveni la decriptarea parolei principale. Continuați numai dacă vă simțiți confortabil cu implementarea și gestionarea unui server cheie." }, "migratedKeyConnector": { "message": "Migrat la Conectorul Cheie" @@ -4997,13 +5035,13 @@ "message": "Oferta de sponsorizare a expirat. Puteți șterge organizația pe care ați creat-o pentru a evita o taxă la sfârșitul perioadei de încercare de 7 zile. În caz contrar, puteți închide această solicitare pentru a păstra organizația și pentru a vă asuma responsabilitatea de facturare." }, "newFamiliesOrganization": { - "message": "New Families organization" + "message": "Organizație de familii nouă" }, "acceptOffer": { - "message": "Accept offer" + "message": "Acceptare ofertă" }, "sponsoringOrg": { - "message": "Sponsoring organization" + "message": "Organizație de sponsorizare" }, "keyConnectorTest": { "message": "Test" @@ -5021,55 +5059,55 @@ "message": "GRATUIT cu sponsorizare" }, "viewBillingSyncToken": { - "message": "View billing sync token" + "message": "Afișare token sincronizare facturare" }, "generateBillingSyncToken": { - "message": "Generate billing sync token" + "message": "Generare token de sincronizare facturare" }, "copyPasteBillingSync": { - "message": "Copy and paste this token into the billing sync settings of your self-hosted organization." + "message": "Copiați și lipiți acest token în setările de sincronizare a facturării organizației auto-găzduite." }, "billingSyncCanAccess": { - "message": "Your billing sync token can access and edit this organization's subscription settings." + "message": "Tokenul de sincronizare a facturării poate accesa și edita setările de abonament ale acestei organizații." }, "manageBillingSync": { - "message": "Manage billing sync" + "message": "Gestionare sincronizare de facturare" }, "setUpBillingSync": { - "message": "Set up billing sync" + "message": "Configurare sincronizare de facturare" }, "generateToken": { - "message": "Generate token" + "message": "Generare token" }, "rotateToken": { - "message": "Rotate token" + "message": "Revocare token" }, "rotateBillingSyncTokenWarning": { "message": "Continuând, va trebui să reinițializați sincronizarea facturării pe serverul dvs. auto-găzduit." }, "rotateBillingSyncTokenTitle": { - "message": "Rotating the billing sync token will invalidate the previous token." + "message": "Revocarea tokenului de sincronizare a facturării va invalida tokenul anterior." }, "selfHostingTitle": { - "message": "Self-hosting" + "message": "Auto-găzduire" }, "selfHostingEnterpriseOrganizationSectionCopy": { "message": "Pentru a vă configura organizația pe propriul server, va trebui să încărcați fișierul de licență. Pentru a susține planurile Familii gratuite și capacitățile avansate de facturare pentru organizația dvs. auto-găzduită, va trebui să configurați sincronizarea facturării." }, "billingSyncApiKeyRotated": { - "message": "Token rotated" + "message": "Token revocat" }, "billingSync": { - "message": "Billing sync" + "message": "Sincronizare facturare" }, "billingSyncDesc": { - "message": "Billing sync provides Free Families plans for members and advanced billing capabilities by linking your self-hosted Bitwarden to the Bitwarden cloud server." + "message": "Sincronizarea de facturare oferă planuri gratuite de familii pentru membri și capabilități avansate de facturare prin conectarea Bitwarden-ului dvs. auto-găzduit la serverul cloud Bitwarden." }, "billingSyncKeyDesc": { - "message": "A billing sync token from your cloud organization's subscription settings is required to complete this form." + "message": "Pentru a completa acest formular este necesar un token de sincronizare a facturării din setările de abonament ale organizației dvs. cloud." }, "billingSyncKey": { - "message": "Billing sync token" + "message": "Token de sincronizare a facturării" }, "active": { "message": "Activ" @@ -5078,13 +5116,13 @@ "message": "Inactiv" }, "sentAwaitingSync": { - "message": "Sent (awaiting sync)" + "message": "Trimis (în așteptarea sincronizării)" }, "sent": { "message": "Trimis" }, "requestRemoved": { - "message": "Removed (awaiting sync)" + "message": "Înlăturat (în așteptare de sincronizare)" }, "requested": { "message": "Solicitat" @@ -5117,7 +5155,7 @@ "message": "Necesar dacă ID-ul de entitate nu este un URL." }, "openIdOptionalCustomizations": { - "message": "Optional customizations" + "message": "Personalizări opționale" }, "openIdAuthorityRequired": { "message": "Necesar dacă Autoritatea nu este validă." @@ -5129,13 +5167,13 @@ "message": "Sesiunea dvs. a expirat. Vă rugăm reveniți și încercați să vă autentificați din nou." }, "exportingPersonalVaultTitle": { - "message": "Exporting individual vault" + "message": "Exportul seifului individual" }, "exportingOrganizationVaultTitle": { - "message": "Exporting organization vault" + "message": "Exportul seifului organizației" }, "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Numai articolele de seif individuale asociate cu $EMAIL$ vor fi exportate. Articolele de seif ale organizației nu vor fi incluse.", "placeholders": { "email": { "content": "$1", @@ -5144,7 +5182,7 @@ } }, "exportingOrganizationVaultDescription": { - "message": "Only the organization vault associated with $ORGANIZATION$ will be exported. Individual vault items and items from other organizations will not be included.", + "message": "Numai seiful organizației asociat cu $ORGANIZATION$ va fi exportat. Articolele de seif individuale și articolele din alte organizații nu vor fi incluse.", "placeholders": { "organization": { "content": "$1", @@ -5153,10 +5191,10 @@ } }, "accessDenied": { - "message": "Access denied. You do not have permission to view this page." + "message": "Acces refuzat. Nu aveți permisiunea de a vizualiza această pagină." }, "masterPassword": { - "message": "Master password" + "message": "Parola principală" }, "security": { "message": "Securitate" @@ -5165,10 +5203,10 @@ "message": "Chei" }, "billingHistory": { - "message": "Billing history" + "message": "Istoric facturare" }, "backToReports": { - "message": "Back to reports" + "message": "Înapoi la rapoarte" }, "organizationPicker": { "message": "Selector de organizație" @@ -5178,7 +5216,7 @@ "description": "This is used by screen readers to indicate the organization that is currently being shown to the user." }, "accountSettings": { - "message": "Account settings" + "message": "Setări cont" }, "generator": { "message": "Generator" @@ -5187,26 +5225,26 @@ "message": "Ce doriți să generați?" }, "passwordType": { - "message": "Password type" + "message": "Tip de parolă" }, "regenerateUsername": { - "message": "Regenerate username" + "message": "Regenerare nume de utilizator" }, "generateUsername": { - "message": "Generate username" + "message": "Generare nume de utilizator" }, "usernameType": { - "message": "Username type" + "message": "Tip de nume de utilizator" }, "plusAddressedEmail": { - "message": "Plus addressed email", + "message": "E-mail Plus adresat", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Utilizați capacitățile de subadresare ale furnizorului dvs. de e-mail." }, "catchallEmail": { - "message": "Catch-all email" + "message": "E-mail Catch-all" }, "catchallEmailDesc": { "message": "Utilizați inbox-ul catch-all configurat pentru domeniul dvs." @@ -5216,13 +5254,13 @@ "description": "Generates domain-based username using random letters" }, "randomWord": { - "message": "Random word" + "message": "Cuvânt aleatoriu" }, "service": { "message": "Serviciu" }, "unknownCipher": { - "message": "Unknown item, you may need to request permission to access this item." + "message": "Articol necunoscut, ar putea fi necesară solicitarea permisiunii de a accesa acest articol." }, "cannotSponsorSelf": { "message": "Nu puteți revendica pentru contul activ. Introduceți un alt e-mail." @@ -5255,7 +5293,7 @@ } }, "lastSync": { - "message": "Last sync", + "message": "Ultima sincronizare", "Description": "Used as a prefix to indicate the last time a sync occured. Example \"Last sync 1968-11-16 00:00:00\"" }, "sponsorshipsSynced": { @@ -5275,7 +5313,7 @@ "description": "This text is displayed if an organization's billing is managed by a Provider. It tells the user to contact the Provider for assistance." }, "forwardedEmail": { - "message": "Forwarded email alias" + "message": "Alias de e-mail redirecționat" }, "forwardedEmailDesc": { "message": "Generați un alias de e-mail cu un serviciu de redirecționare extern." @@ -5285,22 +5323,22 @@ "description": "Part of a URL." }, "apiAccessToken": { - "message": "API access token" + "message": "Token de acces API" }, "deviceVerification": { - "message": "Device verification" + "message": "Verificarea dispozitivului" }, "enableDeviceVerification": { - "message": "Turn on device verification" + "message": "Activare verificare dispozitiv" }, "deviceVerificationDesc": { - "message": "Verification codes are sent to your email address when logging in from an unrecognized device" + "message": "Codurile de verificare sunt trimise la adresa dvs. de e-mail la conectarea de pe un dispozitiv nerecunoscut" }, "updatedDeviceVerification": { - "message": "Updated device verification" + "message": "Verificare dispozitiv actualizată" }, "areYouSureYouWantToEnableDeviceVerificationTheVerificationCodeEmailsWillArriveAtX": { - "message": "Are you sure you want to turn on device verification? The verification code emails will arrive at: $EMAIL$", + "message": "Sunteți sigur că doriți să activați verificarea dispozitivului? E-mailurile cu codul de verificare vor sosi la: $EMAIL$", "placeholders": { "email": { "content": "$1", @@ -5312,7 +5350,7 @@ "message": "Este necesar un abonament Premium" }, "scim": { - "message": "SCIM provisioning", + "message": "Provizionare SCIM", "description": "The text, 'SCIM', is an acronymn and should not be translated." }, "scimDescription": { @@ -5331,11 +5369,11 @@ "message": "Această cheie API are acces pentru a gestiona utilizatorii din cadrul organizației dumneavoastră. Ar trebui să fie păstrată secretă." }, "copyScimKey": { - "message": "Copy the SCIM API key to your clipboard", + "message": "Copiere cheie API SCIM în clipboard", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKey": { - "message": "Rotate the SCIM API key", + "message": "Revocare cheie API SCIM", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKeyWarning": { @@ -5343,10 +5381,10 @@ "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateKey": { - "message": "Rotate key" + "message": "Revocare cheie" }, "scimApiKey": { - "message": "SCIM API key", + "message": "Cheia API SCIM", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "copyScimUrl": { @@ -5358,18 +5396,18 @@ "description": "the text, 'SCIM' and 'URL', are acronymns and should not be translated." }, "scimApiKeyRotated": { - "message": "SCIM API key successfully rotated", + "message": "Revocarea cheii API SCIM s-a finalizat", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "scimSettingsSaved": { - "message": "SCIM settings saved", + "message": "Setări SCIM salvate", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "inputRequired": { "message": "Este necesară o intrare." }, "inputEmail": { - "message": "Input is not an email address." + "message": "Intrarea nu este o adresă de e-mail." }, "inputMinLength": { "message": "Intrarea trebuie să aibă o lungime de cel puțin $COUNT$ caractere.", @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ câmp/câmpuri de mai sus necesită atenția dumneavoastră.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Pornit" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Număr de utilizatori" }, + "loggingInAs": { + "message": "Autentificare ca" + }, + "notYou": { + "message": "Nu sunteți dvs.?" + }, "multiSelectPlaceholder": { "message": "-- Introduceți pentru a filtra --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Ștergeți tot" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/ru/messages.json b/apps/web/src/locales/ru/messages.json index dda4855c4c9..3994f458d63 100644 --- a/apps/web/src/locales/ru/messages.json +++ b/apps/web/src/locales/ru/messages.json @@ -485,7 +485,7 @@ "message": "Элемент добавлен" }, "editedItem": { - "message": "Элемент изменен" + "message": "Элемент сохранен" }, "movedItemToOrg": { "message": "$ITEMNAME$ перемещен в $ORGNAME$", @@ -534,7 +534,7 @@ "message": "Вы хотите перезаписать текущий пароль?" }, "editedFolder": { - "message": "Папка отредактирована" + "message": "Папка сохранена" }, "addedFolder": { "message": "Папка добавлена" @@ -573,7 +573,10 @@ "message": "Войти с помощью устройства" }, "loginWithDeviceEnabledInfo": { - "message": "Вход с устройства должен быть включен в настройках мобильного приложения Bitwarden. Нужен другой вариант?" + "message": "Вход с устройства должен быть настроен в настройках мобильного приложения Bitwarden. Нужен другой вариант?" + }, + "loginWithMasterPassword": { + "message": "Войти с мастер-паролем" }, "createAccount": { "message": "Создать аккаунт" @@ -694,7 +697,7 @@ "message": "Неверный пароль к файлу. Используйте пароль, введенный при создании файла экспорта." }, "lockNow": { - "message": "Заблокировать сейчас" + "message": "Заблокировать" }, "noItemsInList": { "message": "Нет элементов для отображения." @@ -757,7 +760,7 @@ "message": "Отправить код подтверждения еще раз" }, "useAnotherTwoStepMethod": { - "message": "Использовать другой метод двухфакторной аутентификации" + "message": "Использовать другой метод двухэтапной аутентификации" }, "insertYubiKey": { "message": "Вставьте свой YubiKey в USB-порт компьютера и нажмите его кнопку." @@ -769,7 +772,7 @@ "message": "Вход недоступен" }, "noTwoStepProviders": { - "message": "У этого аккаунта включена двухфакторная аутентификация, однако ни один из настроенных вариантов не поддерживается этим веб-браузером." + "message": "У этой учетной записи включена двухэтапная аутентификация, однако ни один из настроенных вариантов не поддерживается этим браузером." }, "noTwoStepProviders2": { "message": "Используйте поддерживаемый веб-браузер (например Chrome) и/или добавьте дополнительные варианты аутентификации, которые поддерживаются в веб-браузерах (например приложение-аутентификатор)." @@ -778,7 +781,7 @@ "message": "Настройки двухэтапной аутентификации" }, "recoveryCodeDesc": { - "message": "Потеряли доступ ко всем вариантам двухфакторной аутентификации? Используйте код восстановления, чтобы отключить ее для вашего аккаунта." + "message": "Потеряли доступ ко всем вариантам двухэтапной аутентификации? Используйте код восстановления, чтобы отключить ее для вашего аккаунта." }, "recoveryCodeTitle": { "message": "Код восстановления" @@ -805,7 +808,7 @@ "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "u2fDesc": { - "message": "Используйте любой защищенный ключ FIDO U2F для доступа к вашему аккаунту." + "message": "Используйте любой ключ безопасности FIDO U2F для доступа к вашей учетной записи." }, "u2fTitle": { "message": "Ключ безопасности FIDO U2F" @@ -814,7 +817,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Используйте любой ключ безопасности с поддержкой WebAuthn для доступа к своей учетной записи." + "message": "Используйте любой ключ безопасности WebAuthn для доступа к вашей учетной записи." }, "webAuthnMigrated": { "message": "(Перенесено из FIDO)" @@ -1019,7 +1022,7 @@ "message": "Изменить email" }, "changeEmailTwoFactorWarning": { - "message": "При продолжении будет изменен адрес электронной почты вашей учетной записи. Это не изменит адрес электронной почты для двухфакторной аутентификации. Этот адрес электронной почты можно изменить в настройках двухэтапного входа." + "message": "При продолжении будет изменен адрес email вашего аккаунта. Это не изменит адрес email для двухэтапной аутентификации. Его можно изменить в настройках двухэтапной аутентификации." }, "newEmail": { "message": "Новый email" @@ -1040,7 +1043,7 @@ "message": "В случае продолжения, ваша сессия будет завершена и вам будет предложено авторизоваться повторно. Сессии на других устройствах могут оставаться активными в течение одного часа." }, "emailChanged": { - "message": "Email изменен" + "message": "Email сохранен" }, "logBackIn": { "message": "Пожалуйста, войдите снова." @@ -1052,7 +1055,7 @@ "message": "Изменить мастер-пароль" }, "masterPasswordChanged": { - "message": "Мастер-пароль изменен" + "message": "Мастер-пароль сохранен" }, "currentMasterPass": { "message": "Текущий мастер-пароль" @@ -1094,22 +1097,22 @@ "message": "Изменить KDF" }, "encKeySettingsChanged": { - "message": "Настройки ключа шифрования изменены" + "message": "Настройки ключа шифрования сохранены" }, "dangerZone": { - "message": "Опасная зона" + "message": "Зона опасности" }, "dangerZoneDesc": { "message": "Осторожно, эти действия необратимы!" }, "deauthorizeSessions": { - "message": "Деавторизовать сеансы" + "message": "Деавторизовать сессии" }, "deauthorizeSessionsDesc": { - "message": "Беспокоитесь о том, что ваша учетная запись авторизована на другом устройстве? Чтобы деавторизовать все ранее использовавшиеся компьютеры или устройства, выполните действие ниже. Этот шаг безопасности рекомендуется, если вы ранее использовали общедоступный компьютер или случайно сохранили свой пароль на устройстве, которое вам не принадлежит. Это действие также очистит все ранее сохраненные сессии двухфакторной аутентификации." + "message": "Обеспокоены тем, что ваша учетная запись авторизована на другом устройстве? Чтобы деавторизовать все ранее использовавшиеся компьютеры или устройства, выполните действие ниже. Этот шаг безопасности рекомендуется, если вы ранее использовали общедоступный компьютер или случайно сохранили свой пароль на чужом устройстве. Это действие также очистит все ранее сохраненные сессии двухэтапной аутентификации." }, "deauthorizeSessionsWarning": { - "message": "В случае продолжения, ваша сессия будет завершена и вам будет предложено авторизоваться повторно. При активированной двухфакторной аутентификации вам потребуется ввести код. Сессии на других устройствах могут оставаться активными в течение одного часа." + "message": "В случае продолжения, ваша сессия будет завершена и вам будет предложено авторизоваться повторно. Вам также будет предложено выполнить двухэтапную аутентификацию, если она настроена. Сессии на других устройствах могут оставаться активными в течение одного часа." }, "sessionsDeauthorized": { "message": "Все сеансы деавторизованы" @@ -1121,7 +1124,7 @@ "message": "Хранилище организации очищено." }, "vaultAccessedByProvider": { - "message": "Хранилище, к которому имеет доступ поставщик." + "message": "Хранилище, доступное провайдеру." }, "purgeVaultDesc": { "message": "Чтобы удалить все элементы и папки из вашего хранилища, выполните следующие действия. Элементы, принадлежащие организации, с которой вы делитесь, удалены не будут." @@ -1166,7 +1169,7 @@ "message": "Возникла проблема с данными, которые вы пытались импортировать. Пожалуйста, исправьте ошибки, перечисленные ниже в вашем исходном файле и попробуйте еще раз." }, "importSuccess": { - "message": "Данные успешно импортированы в хранилище." + "message": "Данные успешно импортированы" }, "importWarning": { "message": "Вы импортируете данные в $ORGANIZATION$. Члены этой организации могут получить доступ к вашим данным. Хотите продолжить?", @@ -1221,7 +1224,7 @@ "message": "Настройте возможности вашего веб-хранилища." }, "preferencesUpdated": { - "message": "Настройки обновлены" + "message": "Настройки сохранены" }, "language": { "message": "Язык" @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Отображать узнаваемое изображение рядом с каждым логином." }, - "enableGravatars": { - "message": "Включить Gravatar", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Использовать аватары с сайта gravatar.com." - }, "enableFullWidth": { "message": "Активировать отображение на всю ширину", "description": "Allows scaling the web vault UI's width" @@ -1253,7 +1249,7 @@ "message": "По умолчанию" }, "domainRules": { - "message": "Доменные правила" + "message": "Правила домена" }, "domainRulesDesc": { "message": "Если у вас есть тот же логин на нескольких разных доменах сайта, вы можете отметить сайт как \"эквивалентный\". \"Глобальные\" - это домены, созданные для вас Bitwarden." @@ -1289,19 +1285,32 @@ } }, "domainsUpdated": { - "message": "Домены обновлены" + "message": "Домены сохранены" }, "twoStepLogin": { - "message": "Двухфакторная аутентификация" + "message": "Двухэтапная аутентификация" + }, + "twoStepLoginEnforcement": { + "message": "Обеспечение двухэтапной аутентификации" }, "twoStepLoginDesc": { "message": "Защитите свою учетную запись, при помощи дополнительного шага при авторизации." }, - "twoStepLoginOrganizationDesc": { - "message": "Требовать двухфакторную аутентификацию для пользователей вашей организации, путем конфигурации ее на уровне организации." + "twoStepLoginOrganizationDescStart": { + "message": "Применить параметры двухэтапной аутентификации Bitwarden для пользователей, используя ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Политика двухэтапной аутентификации" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Чтобы задействовать двухэтапный вход через Duo, воспользуйтесь приведенными ниже опциями." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Если вы установили SSO или планируете это сделать, двухэтапная аутентификация может быть реализован через вашего поставщика идентификационных данных." }, "twoStepLoginRecoveryWarning": { - "message": "При включении двухфакторной аутентификации вы можете навсегда потерять доступ к вашей учетной записи Bitwarden. Код восстановления позволяет получить доступ к вашему аккаунту в случае, если вы больше не можете использовать свой обычный метод двухфакторной аутентификации (например, при потере устройства). Поддержка Bitwarden не сможет вам помочь, если вы потеряете доступ к своей учетной записи. Мы рекомендуем вам записать или распечатать код восстановления и сохранить его в надежном месте." + "message": "При включении двухэтапной аутентификации вы можете навсегда потерять доступ к вашей учетной записи Bitwarden. Код восстановления позволяет получить доступ к вашему аккаунту в случае, если вы больше не можете использовать свой обычный метод двухэтапной аутентификации (например, при потере устройства). Служба поддержки Bitwarden не сможет вам помочь, если вы потеряете доступ к своему аккаунту. Мы рекомендуем вам записать или распечатать код восстановления и хранить его в надежном месте." }, "viewRecoveryCode": { "message": "Просмотреть код восстановления" @@ -1336,7 +1345,7 @@ "message": "У вас есть Премиум" }, "alreadyPremiumFromOrg": { - "message": "У вас уже есть доступ к Премиум, так как вы член организации." + "message": "У вас уже есть доступ к Премиум, поскольку вы являетесь членом организации." }, "manage": { "message": "Управление" @@ -1348,13 +1357,13 @@ "message": "Отозвать доступ" }, "twoStepLoginProviderEnabled": { - "message": "Этот провайдер двухфакторной аутентификации включен для вашего аккаунта." + "message": "Этот провайдер двухэтапной аутентификации включен для вашего аккаунта." }, "twoStepLoginAuthDesc": { - "message": "Для изменения настроек двухфакторной аутентификации введите мастер-пароль." + "message": "Для изменения настроек двухэтапной аутентификации введите мастер-пароль." }, "twoStepAuthenticatorDesc": { - "message": "Выполните следующие шаги, чтобы настроить двухфакторную аутентификацию с помощью приложения-аутетификатора:" + "message": "Выполните следующие шаги, чтобы настроить двухэтапную аутентификацию с помощью приложения-аутетификатора:" }, "twoStepAuthenticatorDownloadApp": { "message": "Загрузите приложение-аутентификатор" @@ -1387,10 +1396,10 @@ "message": "Если вам нужно добавить его на другое устройство, ниже указан QR-код для приложения-аутентификатора." }, "twoStepDisableDesc": { - "message": "Вы действительно хотите отключить этого провайдера двухфакторной аутентификации?" + "message": "Вы действительно хотите отключить этого провайдера двухэтапной аутентификации?" }, "twoStepDisabled": { - "message": "Провайдер двухфакторной аутентификации отключен." + "message": "Провайдер двухэтапной аутентификации отключен." }, "twoFactorYubikeyAdd": { "message": "Добавить в аккаунт новый YubiKey" @@ -1408,7 +1417,7 @@ "message": "Сохранить форму." }, "twoFactorYubikeyWarning": { - "message": "Из-за ограничений платформы, YubiKey можно использовать не во всех приложениях Bitwarden. Если использовать YubiKey не удается, то включите другого провайдера двухфакторной аутентификации, чтобы иметь доступ к своему аккаунту. Поддерживаемые платформы:" + "message": "Из-за ограничений платформы YubiKey нельзя использовать во всех приложениях Bitwarden. Вы должны настроить другого провайдера двухэтапной аутентификации, чтобы иметь возможность получить доступ к своей учетной записи, когда YubiKey не может быть использован. Поддерживаемые платформы:" }, "twoFactorYubikeySupportUsb": { "message": "Веб-хранилище, приложение для компьютера, интерфейс командной строки (CLI) и все расширения браузеров на устройстве с USB-портом, совместимым с YubiKey." @@ -1456,7 +1465,7 @@ "message": "YubiKey обновлены" }, "disableAllKeys": { - "message": "Отключить все ключи" + "message": "Деактивировать все ключи" }, "twoFactorDuoDesc": { "message": "Введите информацию о приложении Bitwarden из панели администратора Duo." @@ -1471,7 +1480,7 @@ "message": "Имя хоста API" }, "twoFactorEmailDesc": { - "message": "Выполните следующие шаги, чтобы настроить двухфакторную аутентификацию по email:" + "message": "Выполните следующие шаги, чтобы настроить двухэтапную аутентификацию по email:" }, "twoFactorEmailEnterEmail": { "message": "Введите адрес email, на который вы хотите получать коды подтверждения" @@ -1510,7 +1519,7 @@ "message": "Сохранить форму." }, "twoFactorU2fWarning": { - "message": "Из-за ограничений платформы, FIDO U2F можно использовать не во всех приложениях Bitwarden. Если использовать FIDO U2F не удается, то включите другого провайдера двухфакторной аутентификации, чтобы иметь доступ к своему аккаунту. Поддерживаемые платформы:" + "message": "Из-за ограничений платформы FIDO U2F нельзя использовать во всех приложениях Bitwarden. Вы должны настроить другого провайдера двухэтапной аутентификации, чтобы иметь возможность получить доступ к своей учетной записи, когда FIDO U2F не может быть использован. Поддерживаемые платформы:" }, "twoFactorU2fSupportWeb": { "message": "Веб-хранилище и расширения браузера на компьютере/ноутбуке с браузером с поддержкой U2F (Chrome, Opera, Vivaldi или Firefox с включенным FIDO U2F)." @@ -1519,22 +1528,22 @@ "message": "В ожидании нажатия кнопки на ключе безопасности" }, "twoFactorU2fClickSave": { - "message": "Нажмите кнопку 'Сохранить' ниже, чтобы включить этот ключ безопасности для двухфакторной аутентификации." + "message": "Нажмите кнопку 'Сохранить' ниже, чтобы включить этот ключ безопасности для двухэтапной аутентификации." }, "twoFactorU2fProblemReadingTryAgain": { "message": "Не удалось прочитать ключ безопасности. Попробуйте снова." }, "twoFactorWebAuthnWarning": { - "message": "Из-за ограничений платформы WebAuthn нельзя использовать во всех приложениях Bitwarden. Вы должны включить другого провайдера двухфакторной аутентификации, чтобы иметь возможность получить доступ к своей учетной записи, когда WebAuthn не может быть использован. Поддерживаемые платформы:" + "message": "Из-за ограничений платформы WebAuthn нельзя использовать во всех приложениях Bitwarden. Вы должны настроить другого провайдера двухэтапной аутентификации, чтобы иметь возможность получить доступ к своей учетной записи, когда WebAuthn не может быть использован. Поддерживаемые платформы:" }, "twoFactorWebAuthnSupportWeb": { "message": "Веб-хранилище и расширения браузера на компьютере/ноутбуке с браузером с поддержкой WebAuthn (Chrome, Opera, Vivaldi или Firefox с включенным FIDO U2F)." }, "twoFactorRecoveryYourCode": { - "message": "Ваш код восстановления двухфакторной аутентификации Bitwarden" + "message": "Ваш код восстановления двухэтапной аутентификации Bitwarden" }, "twoFactorRecoveryNoCode": { - "message": "Вы еще не включили ни одного провайдера двухфакторной аутентификации. После включения вернитесь сюда и получите свой код восстановления." + "message": "Вы еще не настроили провайдеров двухэтапной аутентификации. После настройки вы можете вернуться сюда для получения кода восстановления." }, "printCode": { "message": "Печать кода", @@ -1547,6 +1556,10 @@ "message": "Выявите и устраните проблемы с безопасностью в ваших онлайн-аккаунтах, перейдя по ссылкам на отчеты ниже.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Выявите и устраните проблемы с безопасностью в аккаунтах вашей организации, перейдя по ссылкам на отчеты ниже.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Небезопасные сайты" }, @@ -1569,16 +1582,16 @@ "message": "В вашем хранилище нет элементов с незащищенными URI." }, "inactive2faReport": { - "message": "Неактивная двухфакторная аутентификация" + "message": "Неактивная двухэтапная аутентификация" }, "inactive2faReportDesc": { - "message": "Двухфакторная аутентификация добавляет уровень защиты для ваших аккаунтов. Включите ее для этих учетных записей с помощью Bitwarden Authenticator или используйте альтернативный метод." + "message": "Двухэтапная аутентификация добавляет уровень защиты для ваших аккаунтов. Настройте ее для этих учетных записей с помощью аутентификатора Bitwarden или используйте альтернативный метод." }, "inactive2faFound": { - "message": "Найдены логины без 2ЭА" + "message": "Найдены логины без двухэтапной аутентификации" }, "inactive2faFoundDesc": { - "message": "В хранилище обнаружены сайты ($COUNT$ шт.), у которых может быть не настроена двухфакторная аутентификация (согласно 2fa.directory). Для дополнительной защиты этих аккаунтов следует включить двухфакторную аутентификацию.", + "message": "В хранилище обнаружены сайты ($COUNT$ шт.), у которых может быть не настроена двухэтапная аутентификация (согласно 2fa.directory). Для дополнительной защиты этих аккаунтов следует настроить двухэтапную аутентификацию.", "placeholders": { "count": { "content": "$1", @@ -1587,7 +1600,7 @@ } }, "noInactive2fa": { - "message": "В вашем хранилище нет сайтов с ненастроенной двухфакторной аутентификацией." + "message": "В вашем хранилище нет сайтов с ненастроенной двухэтапной аутентификацией." }, "instructions": { "message": "Инструкции" @@ -1680,7 +1693,7 @@ "message": "Утечка данных" }, "breachDesc": { - "message": "Взломанные аккаунты могут раскрыть вашу личную информацию. Защитите их, включив 2ФА или создав более надежный пароль." + "message": "Взломанные аккаунты могут раскрыть вашу личную информацию. Защитите их, включив 2ЭА или создав более надежный пароль." }, "breachCheckUsernameEmail": { "message": "Проверьте имена пользователей или адреса email, которые вы используете." @@ -1783,7 +1796,7 @@ "message": "1 ГБ зашифрованного хранилища для вложенных файлов." }, "premiumSignUpTwoStep": { - "message": "Дополнительные варианты двухфакторной аутентификации, такие как YubiKey, FIDO U2F и Duo." + "message": "Дополнительные варианты двухэтапной аутентификации, такие как YubiKey, FIDO U2F и Duo." }, "premiumSignUpEmergency": { "message": "Экстренный доступ" @@ -1792,13 +1805,13 @@ "message": "Гигиена паролей, здоровье аккаунта и отчеты об утечках данных для обеспечения безопасности вашего хранилища." }, "premiumSignUpTotp": { - "message": "TOTP-генератор кодов (2ФА) для логинов в хранилище." + "message": "Генератор кода подтверждения TOTP (2ЭА) для входа в ваше хранилище." }, "premiumSignUpSupport": { "message": "Приоритетная поддержка." }, "premiumSignUpFuture": { - "message": "Все будущие функции Премиум-статуса. Их будет больше!" + "message": "Все будущие функции Премиум. Их будет больше!" }, "premiumPrice": { "message": "Всего лишь $PRICE$ /в год!", @@ -2236,7 +2249,7 @@ "message": "Отслеживание действий пользователей с помощью журналов аудита" }, "enforce2faDuo": { - "message": "Принудительная 2ФА с Duo" + "message": "Принудительная 2ЭА с Duo" }, "priorityCustomerSupport": { "message": "Приоритетная поддержка" @@ -2404,7 +2417,7 @@ } }, "userUsingTwoStep": { - "message": "Этот пользователь использует двухфакторную аутентификацию для защиты своего аккаунта." + "message": "Этот пользователь использует двухэтапную аутентификацию для защиты своего аккаунта." }, "userAccessAllItems": { "message": "Эта пользователь может иметь доступ и изменять все элементы." @@ -2494,19 +2507,19 @@ "message": "Изменен пароль аккаунта." }, "enabledUpdated2fa": { - "message": "Двухфакторная аутентификация включена/обновлена." + "message": "Двухэтапная аутентификация сохранена" }, "disabled2fa": { - "message": "Двухфакторная аутентификация отключена." + "message": "Двухэтапная аутентификация отключена" }, "recovered2fa": { - "message": "Аккаунт восстановлен после двухфакторной аутентификации." + "message": "Аккаунт восстановлен после двухэтапной аутентификации." }, "failedLogin": { "message": "Ошибка входа из-за неправильного пароля." }, "failedLogin2fa": { - "message": "Ошибка входа из-за некорректной двухфакторной аутентификации." + "message": "Ошибка входа из-за некорректной двухэтапной аутентификации." }, "exportedVault": { "message": "Хранилище экспортировано." @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Просмотренный номер карты предмета $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Просмотрен код безопасности элемента $ID$.", "placeholders": { @@ -2971,13 +2993,13 @@ "message": "Запомнить email" }, "recoverAccountTwoStepDesc": { - "message": "Если у вас нет доступа к своему аккаунту с помощью двухфакторной аутентификации, для ее отключения вы можете использовать свой код восстановления." + "message": "Если вы не можете получить доступ к своему аккаунту с помощью двухэтапной аутентификации, для ее отключения вы можете использовать свой код восстановления." }, "recoverAccountTwoStep": { - "message": "Восстановить двухфакторную аутентификацию аккаунта" + "message": "Восстановить двухэтапную аутентификацию аккаунта" }, "twoStepRecoverDisabled": { - "message": "Двухфакторная аутентификация для вашего аккаунта отключена." + "message": "В вашей учетной записи отключена двухэтапная аутентификация." }, "learnMore": { "message": "Подробнее" @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Моя организация" }, + "organizationInfo": { + "message": "Информация об организации" + }, "deleteOrganization": { "message": "Удалить организацию" }, @@ -3470,16 +3495,16 @@ "message": "Установите требования к надежности мастер-пароля." }, "twoStepLoginPolicyTitle": { - "message": "Требуется двухфакторная аутентификация" + "message": "Требуется двухэтапная аутентификация" }, "twoStepLoginPolicyDesc": { - "message": "Требовать от пользователей настройки двухфакторной аутентификации." + "message": "Требовать от пользователей настройки двухэтапной аутентификации." }, "twoStepLoginPolicyWarning": { - "message": "Члены организации, которые не являются владельцами или администраторами и не включили двухфакторную авторизацию в своем аккаунте, будут удалены из организации и получат об этом уведомление по email." + "message": "Члены организации, которые не являются владельцами или администраторами и не настроили двухэтапную аутентификацию для своего аккаунта, будут удалены из организации и получат об этом уведомление по email." }, "twoStepLoginPolicyUserWarning": { - "message": "Вы участник организации, которая требует, чтобы в вашем аккаунте была включена двухфакторная аутентификация. Если вы отключите всех провайдеров двухфакторной аутентификации, то будете автоматически удалены из этих организаций." + "message": "Вы участник организации, которая требует, чтобы в вашем аккаунте была настроена двухэтапная аутентификация. Если вы отключите всех провайдеров двухэтапной аутентификации, то будете автоматически удалены из этих организаций." }, "passwordGeneratorPolicyDesc": { "message": "Установить требования к генератору паролей." @@ -3670,7 +3695,7 @@ "message": "Авторизуйтесь при помощи единого корпоративного портала. Чтобы начать, введите идентификатор вашей организации." }, "enterpriseSingleSignOn": { - "message": "Единая корпоративная авторизация (SSO)" + "message": "Единая корпоративная авторизация" }, "ssoHandOff": { "message": "Теперь вы можете закрыть эту вкладку и продолжить в расширении." @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Требуется идентификатор организации." }, + "ssoIdentifier": { + "message": "SSO идентификатор" + }, + "ssoIdentifierHint": { + "message": "Предоставьте этот ID участникам для входа с помощью SSO." + }, "unlinkSso": { "message": "Отключить SSO" }, @@ -3715,7 +3746,7 @@ "message": "Требовать авторизацию через единый вход (SSO)" }, "requireSsoPolicyDesc": { - "message": "Требовать от пользователей авторизацию через единый вход (SSO)." + "message": "Требовать от участников входа с помощью единой корпоративной авторизации." }, "prerequisite": { "message": "Обязательное условие" @@ -3826,7 +3857,7 @@ "message": "Скрыть мой адрес email от получателей." }, "disableThisSend": { - "message": "Отключить эту Send, чтобы никто не мог получить к ней доступ.", + "message": "Деактивировать эту Send, чтобы никто не мог получить к ней доступ.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "allSends": { @@ -4091,6 +4122,9 @@ "permissions": { "message": "Разрешения" }, + "permission": { + "message": "Разрешения" + }, "managerPermissions": { "message": "Права менеджера" }, @@ -4260,7 +4294,7 @@ "message": "Произошла ошибка при сохранении данных о сроках удаления и истечения." }, "webAuthnFallbackMsg": { - "message": "Для подтверждения 2ФА нажмите кнопку ниже." + "message": "Для подтверждения 2ЭА нажмите кнопку ниже." }, "webAuthnAuthenticate": { "message": "Аутентификация WebAutn" @@ -4368,7 +4402,7 @@ "message": "Пользователи организации должны зарегистрироваться самостоятельно или быть зарегистрированными автоматически, чтобы администраторы могли сбросить их мастер-пароль." }, "resetPasswordPolicyAutoEnroll": { - "message": "Автоматическая регистрация" + "message": "Автоматическое развертывание" }, "resetPasswordPolicyAutoEnrollDescription": { "message": "Все пользователи будут автоматически записаны на сброс пароля, после того как их приглашение будет принято, и им не будет разрешено отказаться от его выполнения." @@ -4496,6 +4530,10 @@ "clients": { "message": "Клиенты" }, + "client": { + "message": "Клиент", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Администратор поставщика" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Длина ввода не должна превышать $COUNT$ символов.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ поля(ей) выше требуют вашего внимания.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Вкл" }, + "members": { + "message": "Участники" + }, + "reporting": { + "message": "Отчеты" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Количество пользователей" }, + "loggingInAs": { + "message": "Войти как" + }, + "notYou": { + "message": "Не вы?" + }, "multiSelectPlaceholder": { "message": "-- Тип фильтра --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Очистить все" + }, + "from": { + "message": "От" + }, + "to": { + "message": "Для" + }, + "member": { + "message": "Участник" + }, + "update": { + "message": "Обновить" + }, + "role": { + "message": "Роль" + }, + "canView": { + "message": "Может просматривать" + }, + "canViewExceptPass": { + "message": "Может просматривать, кроме паролей" + }, + "canEdit": { + "message": "Может редактировать" + }, + "canEditExceptPass": { + "message": "Может просматривать, кроме паролей" + }, + "group": { + "message": "Группа" + }, + "groupAccessAll": { + "message": "Эта группа может иметь доступ и изменять все элементы." + }, + "memberAccessAll": { + "message": "Эта пользователь может иметь доступ и изменять все элементы." } } diff --git a/apps/web/src/locales/si/messages.json b/apps/web/src/locales/si/messages.json index 760ffeaa13b..904b1019020 100644 --- a/apps/web/src/locales/si/messages.json +++ b/apps/web/src/locales/si/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "ගිණුමක් සාදන්න" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Show Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Two-step login" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organization's users by configuring providers at the organization level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Setting up two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (example: you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecure websites" }, @@ -2491,7 +2504,7 @@ "message": "Logged in" }, "changedPassword": { - "message": "Account password saved" + "message": "Changed account password" }, "enabledUpdated2fa": { "message": "Two-step login saved" @@ -2500,7 +2513,7 @@ "message": "Two-step login turned off" }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2512,10 +2525,10 @@ "message": "Vault exported" }, "exportedOrganizationVault": { - "message": "Organization vault exported" + "message": "Exported organization vault." }, "editedOrgSettings": { - "message": "Organization settings saved" + "message": "Edited organization settings." }, "createdItemId": { "message": "Created item $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My organization" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organization" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3133,7 +3158,7 @@ "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." }, "subscriptionUserSeats": { - "message": "Your subscription allows for a total of $COUNT$ users.", + "message": "Your subscription allows for a total of $COUNT$ members.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Organization identifier" }, "ssoLogInWithOrgIdentifier": { - "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + "message": "Log in using your organization's single sign-on portal. Please enter your organization's SSO identifier to begin." }, "enterpriseSingleSignOn": { "message": "Enterprise single sign-on" @@ -3688,7 +3713,13 @@ "message": "SSO validation failed" }, "ssoIdentifierRequired": { - "message": "Organization identifier is required." + "message": "Organization SSO identifier is required." + }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." }, "unlinkSso": { "message": "Unlink SSO" @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send removed", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/sk/messages.json b/apps/web/src/locales/sk/messages.json index 713df091ce4..09c0781426d 100644 --- a/apps/web/src/locales/sk/messages.json +++ b/apps/web/src/locales/sk/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Prihlásenie pomocou zariadenia musí byť povolené v nastaveniach mobilnej aplikácie Biwarden. Potrebujete inú možnosť?" }, + "loginWithMasterPassword": { + "message": "Prihlásenie pomocou hlavného hesla" + }, "createAccount": { "message": "Vytvoriť účet" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Pri každom prihlásení zobraziť rozpoznateľný obrázok." }, - "enableGravatars": { - "message": "Zobraziť Gravatary", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Použiť avatar obrázky načítané z gravatar.com." - }, "enableFullWidth": { "message": "Zapnúť vzhľad na celú šírku strany", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Dvojstupňové prihlásenie" }, + "twoStepLoginEnforcement": { + "message": "Vynútenie dvojstupňového prihlásenia" + }, "twoStepLoginDesc": { "message": "Zabezpečte svoj účet požadovaním ďalšieho kroku pri prihlasovaní." }, - "twoStepLoginOrganizationDesc": { - "message": "Vynúťte dvojstupňové prihlásenie pre členov organizácie nastavením poskytovateľov na úrovni organizácie." + "twoStepLoginOrganizationDescStart": { + "message": "Vynútiť Bitwarden dvojstupňové prihlásenie pre členov použitím ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Pravidlá dvojstupňového prihlásenia" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Pre vynútenie dvojstupňového prihlásenia cez Duo, použite voľby nižšie." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Ak už máte alebo plánujete nastaviť SSO, dvojstupňové prihlásenie môže už byť vynútené vaším poskytovateľom identity." }, "twoStepLoginRecoveryWarning": { "message": "Zapnutie dvojstupňového prihlásenia vás môže natrvalo vymknúť z vášho Bitwarden účtu. Záchranný kód umožňuje prístup k vášmu kontu v prípade že už nemôžete použiť svoj normálny dvojstupňový spôsob overenia. (napríklad ak stratíte zariadenie) Zákaznícka podpora nebude schopná pomôcť vám ak stratíte prístup k účtu. Preto vám odporúčame zapísať si, alebo si vytlačiť záchranný kód a uložiť ho na bezpečnom mieste." @@ -1547,6 +1556,10 @@ "message": "Identifikujte a opravte bezpečnostné nedostatky kliknutím na reporty nižšie.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identifikujte a opravte bezpečnostné nedostatky vo vašej organizácii kliknutím na reporty nižšie.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Nezabezpečené stránky" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Zobrazené číslo karty položky $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Zobrazený bezpečnostný kód položky $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Moja organizácia" }, + "organizationInfo": { + "message": "Informácie o organizácii" + }, "deleteOrganization": { "message": "Odstrániť organizáciu" }, @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Identifikátor organizácie" }, "ssoLogInWithOrgIdentifier": { - "message": "Prihláste sa prostredníctvom jednotného prihlasovania (SSO) vašej organizácie. Najskôr zadajte identifikátor vašej organizácie." + "message": "Prihláste sa prostredníctvom jednotného prihlásenie (SSO) vašej organizácie. Najskôr zadajte identifikátor vašej organizácie." }, "enterpriseSingleSignOn": { "message": "Jednotné prihlásenie pre podniky (SSO)" @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Pole identifikátora organizácie je povinné." }, + "ssoIdentifier": { + "message": "SSO identifikátor" + }, + "ssoIdentifierHint": { + "message": "Poskytnite toto ID vaším členom pre prihlásenie prostredníctvom SSO." + }, "unlinkSso": { "message": "Odpojiť SSO" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Povolenia" }, + "permission": { + "message": "Oprávnenie" + }, "managerPermissions": { "message": "Oprávnenia manažéra" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Klienti" }, + "client": { + "message": "Klient", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Správca poskytovateľa" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Nemôžete zadať viac než $COUNT$ znakov.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "Niektoré polia ($COUNT$) vyžadujú vašu pozornosť.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Zapnuté" }, + "members": { + "message": "Členovia" + }, + "reporting": { + "message": "Reportuje" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Počet používateľov" }, + "loggingInAs": { + "message": "Prihlasujete sa ako" + }, + "notYou": { + "message": "Nie ste to vy?" + }, "multiSelectPlaceholder": { "message": "-- Začnite písať pre filtrovanie --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Vyčistiť všetko" + }, + "from": { + "message": "Od" + }, + "to": { + "message": "Do" + }, + "member": { + "message": "Člen" + }, + "update": { + "message": "Aktualizovať" + }, + "role": { + "message": "Rola" + }, + "canView": { + "message": "Môže zobraziť" + }, + "canViewExceptPass": { + "message": "Môže zobraziť okrem hesiel" + }, + "canEdit": { + "message": "Môže upraviť" + }, + "canEditExceptPass": { + "message": "Môže upravovať okrem hesiel" + }, + "group": { + "message": "Skupina" + }, + "groupAccessAll": { + "message": "Táto skupina môže upravovať a pristupovať k všetkým položkám." + }, + "memberAccessAll": { + "message": "Tento člen môže upravovať a pristupovať k všetkým položkám." } } diff --git a/apps/web/src/locales/sl/messages.json b/apps/web/src/locales/sl/messages.json index fd63d6c8fd4..8e2bf2592c5 100644 --- a/apps/web/src/locales/sl/messages.json +++ b/apps/web/src/locales/sl/messages.json @@ -309,13 +309,13 @@ "message": "Logins" }, "typeCardPlural": { - "message": "Cards" + "message": "Plačilne kartice" }, "typeIdentityPlural": { - "message": "Identities" + "message": "Identitete" }, "typeSecureNotePlural": { - "message": "Secure notes" + "message": "Varni zapiski" }, "folders": { "message": "Mape" @@ -422,22 +422,22 @@ "description": "Copy URI to clipboard" }, "me": { - "message": "Me" + "message": "Jaz" }, "myVault": { "message": "Moj sef" }, "allVaults": { - "message": "All vaults" + "message": "Vsi trezorji" }, "vault": { "message": "Sef" }, "vaults": { - "message": "Vaults" + "message": "Trezorji" }, "vaultItems": { - "message": "Vault items" + "message": "Predmeti trezorja" }, "moveSelectedToOrg": { "message": "Premakni označeno v organizacijo" @@ -570,10 +570,13 @@ "message": "Prijavite se ali ustvarite nov račun za dostop do vašega varnega trezorja." }, "loginWithDevice": { - "message": "Log in with device" + "message": "Prijava z napravo" }, "loginWithDeviceEnabledInfo": { - "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" + "message": "Prijava z napravo mora biti nastavljena v nastavitvah mobilne aplikacije Bitwarden. Potrebujete drugo možnost?" + }, + "loginWithMasterPassword": { + "message": "Prijava z glavnim geslom" }, "createAccount": { "message": "Ustvari račun" @@ -582,13 +585,13 @@ "message": "New around here?" }, "startTrial": { - "message": "Start trial" + "message": "Začnite z brezplačnim poskusom" }, "logIn": { "message": "Prijava" }, "logInInitiated": { - "message": "Log in initiated" + "message": "Prijava se je začela" }, "submit": { "message": "Potrdi" @@ -609,7 +612,7 @@ "message": "Glavno geslo je geslo, ki ga uporabljate za dostop do vašega trezorja. Zelo pomembno je, da ne pozabite vaše glavno geslo. Gesla ni mogoče obnoviti v primeru, če ga pozabite." }, "masterPassImportant": { - "message": "Master passwords cannot be recovered if you forget it!" + "message": "Če ga pozabiš, glavnega gesla ni mogoče obnoviti!" }, "masterPassHintDesc": { "message": "Namig glavnega gesla vam lahko pomaga, da se spomnite vašega gesla, če ga pozabite." @@ -642,13 +645,13 @@ "message": "Neveljaven e-poštni naslov." }, "masterPasswordRequired": { - "message": "Master password is required." + "message": "Glavno geslo je obvezno." }, "confirmMasterPasswordRequired": { - "message": "Master password retype is required." + "message": "Potrebno je ponovno vnesti glavno geslo." }, "masterPasswordMinlength": { - "message": "Master password must be at least 8 characters long." + "message": "Glavno geslo mora biti dolgo najmanj 8 znakov." }, "masterPassDoesntMatch": { "message": "Potrditev glavnega gesla se ne ujema." @@ -657,7 +660,7 @@ "message": "Vaš nov račun je bil ustvarjen! Sedaj se lahko prijavite." }, "trialAccountCreated": { - "message": "Account created successfully." + "message": "Račun uspešno ustvarjen." }, "masterPassSent": { "message": "Poslali smo vam epoštno spročilo z namigom za vaše glavno geslo." @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Show Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Prijava v dveh korakih" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organization's users by configuring providers at the organization level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Setting up two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (example: you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecure websites" }, @@ -2491,7 +2504,7 @@ "message": "Logged in" }, "changedPassword": { - "message": "Account password saved" + "message": "Changed account password" }, "enabledUpdated2fa": { "message": "Two-step login saved" @@ -2500,7 +2513,7 @@ "message": "Two-step login turned off" }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2512,10 +2525,10 @@ "message": "Vault exported" }, "exportedOrganizationVault": { - "message": "Organization vault exported" + "message": "Exported organization vault." }, "editedOrgSettings": { - "message": "Organization settings saved" + "message": "Edited organization settings." }, "createdItemId": { "message": "Created item $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My organization" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organization" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3133,7 +3158,7 @@ "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." }, "subscriptionUserSeats": { - "message": "Your subscription allows for a total of $COUNT$ users.", + "message": "Your subscription allows for a total of $COUNT$ members.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Organization identifier" }, "ssoLogInWithOrgIdentifier": { - "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + "message": "Log in using your organization's single sign-on portal. Please enter your organization's SSO identifier to begin." }, "enterpriseSingleSignOn": { "message": "Enterprise single sign-on" @@ -3688,7 +3713,13 @@ "message": "SSO validation failed" }, "ssoIdentifierRequired": { - "message": "Organization identifier is required." + "message": "Organization SSO identifier is required." + }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." }, "unlinkSso": { "message": "Unlink SSO" @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send removed", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/sr/messages.json b/apps/web/src/locales/sr/messages.json index 0d86412f24a..bc0fe56cf7e 100644 --- a/apps/web/src/locales/sr/messages.json +++ b/apps/web/src/locales/sr/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Пријава помоћу уређаја мора бити омогућена у подешавањима Bitwarden апликације. Потребна је друга опција?" }, + "loginWithMasterPassword": { + "message": "Пријавите се са главном лозинком" + }, "createAccount": { "message": "Креирај налог" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Прикажи препознатљиву слику поред сваке ставке за пријаву." }, - "enableGravatars": { - "message": "Омогући Gravatar", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Користите слике аватара учитане са gravatar.com." - }, "enableFullWidth": { "message": "Упали пуни ширину распореда", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Дво-коракна лозинка" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Заштитите свој налог захтевањем додатног корака приликом пријављивања." }, - "twoStepLoginOrganizationDesc": { - "message": "Захтевајте пријаву у два корака за кориснике ваше организације конфигурисањем добављача на нивоу организације." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Омогућавање пријаве у два корака може вас трајно закључати са вашег Bitwarden-а налога. Код за опоравак омогућава вам приступ вашем налогу у случају да више не можете да користите свог уобичајеног добављача услуге пријављивања у два корака (нпр. ако изгубите уређај). Подршка Bitwarden-а неће вам моћи помоћи ако изгубите приступ свом налогу. Препоручујемо да запишете или одштампате код за опоравак и сачувате га на сигурном месту." @@ -1547,6 +1556,10 @@ "message": "Идентификујте и затворите безбедносне празнине у вашим онлајн налозима кликом на извештаје у наставку.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Извештај о несигурним веб локацијама" }, @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Прегледан број картице за ставку $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Прогледан сигурносни код за $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Моја организација" }, + "organizationInfo": { + "message": "Инфо о организацији" + }, "deleteOrganization": { "message": "Уклони организацију" }, @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Потребан је идентификатор организације." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Откачи SSO" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "Дозволе" }, + "permission": { + "message": "Дозвола" + }, "managerPermissions": { "message": "Менаџер созвола" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Клијента" }, + "client": { + "message": "Клијент", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Администратор провајдера" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ поље(а) изнад захтевај(у) вашу пажњу.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Укључено" }, + "members": { + "message": "Чланови" + }, + "reporting": { + "message": "Пријављивање" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Број корисника" }, + "loggingInAs": { + "message": "Пријављивање као" + }, + "notYou": { + "message": "Нисте Ви?" + }, "multiSelectPlaceholder": { "message": "-- Тип за филтрирање --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Обриши све" + }, + "from": { + "message": "Од" + }, + "to": { + "message": "За" + }, + "member": { + "message": "Члан" + }, + "update": { + "message": "Ажурирај" + }, + "role": { + "message": "Улога" + }, + "canView": { + "message": "Може прегледати" + }, + "canViewExceptPass": { + "message": "Може видетим осим лозинке" + }, + "canEdit": { + "message": "Може уређивати" + }, + "canEditExceptPass": { + "message": "Ноже уређивати осим лозинке" + }, + "group": { + "message": "Група" + }, + "groupAccessAll": { + "message": "Ова група може приступити и изменити све ставке." + }, + "memberAccessAll": { + "message": "Овај члан може приступити и изменити све ставке." } } diff --git a/apps/web/src/locales/sr_CS/messages.json b/apps/web/src/locales/sr_CS/messages.json index f91edebe61a..b0e0e899588 100644 --- a/apps/web/src/locales/sr_CS/messages.json +++ b/apps/web/src/locales/sr_CS/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Napravi Nalog" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Omogućite Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Prijava u dva koraka" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Secure your account by requiring an additional step when logging in." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organization's users by configuring providers at the organization level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Setting up two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (example: you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Unsecure websites" }, @@ -2491,7 +2504,7 @@ "message": "Logged in" }, "changedPassword": { - "message": "Account password saved" + "message": "Changed account password" }, "enabledUpdated2fa": { "message": "Two-step login saved" @@ -2500,7 +2513,7 @@ "message": "Two-step login turned off" }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2512,10 +2525,10 @@ "message": "Vault exported" }, "exportedOrganizationVault": { - "message": "Organization vault exported" + "message": "Exported organization vault." }, "editedOrgSettings": { - "message": "Organization settings saved" + "message": "Edited organization settings." }, "createdItemId": { "message": "Created item $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My organization" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organization" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3133,7 +3158,7 @@ "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." }, "subscriptionUserSeats": { - "message": "Your subscription allows for a total of $COUNT$ users.", + "message": "Your subscription allows for a total of $COUNT$ members.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Organization identifier" }, "ssoLogInWithOrgIdentifier": { - "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + "message": "Log in using your organization's single sign-on portal. Please enter your organization's SSO identifier to begin." }, "enterpriseSingleSignOn": { "message": "Enterprise single sign-on" @@ -3688,7 +3713,13 @@ "message": "SSO validation failed" }, "ssoIdentifierRequired": { - "message": "Organization identifier is required." + "message": "Organization SSO identifier is required." + }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." }, "unlinkSso": { "message": "Unlink SSO" @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Send removed", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Number of users" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/sv/messages.json b/apps/web/src/locales/sv/messages.json index 7905fd55fec..690b57e0fa9 100644 --- a/apps/web/src/locales/sv/messages.json +++ b/apps/web/src/locales/sv/messages.json @@ -467,7 +467,7 @@ "message": "Är du säker på att du vill radera denna bilaga?" }, "attachmentSaved": { - "message": "Bilagan har sparats." + "message": "Bilaga sparad" }, "file": { "message": "Fil" @@ -482,10 +482,10 @@ "message": "Du kan inte använda denna funktion förrän du uppdaterar din krypteringsnyckel." }, "addedItem": { - "message": "Lade till objekt" + "message": "Nytt objekt skapat" }, "editedItem": { - "message": "Redigerade objekt" + "message": "Objekt sparat" }, "movedItemToOrg": { "message": "$ITEMNAME$ flyttades till $ORGNAME$", @@ -534,7 +534,7 @@ "message": "Är du säker på att du vill skriva över det nuvarande lösenordet?" }, "editedFolder": { - "message": "Redigerade mapp" + "message": "Mapp sparad" }, "addedFolder": { "message": "Lade till mapp" @@ -543,7 +543,7 @@ "message": "Är du säker på att du vill radera denna mapp?" }, "deletedFolder": { - "message": "Raderade mapp" + "message": "Mapp raderad" }, "loggedOut": { "message": "Utloggad" @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Skapa konto" }, @@ -582,7 +585,7 @@ "message": "New around here?" }, "startTrial": { - "message": "Påbörja utvärdering" + "message": "Starta provversion" }, "logIn": { "message": "Logga in" @@ -805,7 +808,7 @@ "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "u2fDesc": { - "message": "Använd en FIDO U2F-aktiverad säkerhetsnyckel för att komma åt ditt konto." + "message": "Använd en FIDO U2F-kompatibel säkerhetsnyckel för att komma åt ditt konto." }, "u2fTitle": { "message": "FIDO U2F-säkerhetsnyckel" @@ -915,10 +918,10 @@ "message": "This password will be used to export and import this file" }, "confirmMasterPassword": { - "message": "Confirm master password" + "message": "Bekräfta huvudlösenord" }, "confirmFormat": { - "message": "Confirm format" + "message": "Bekräfta format" }, "filePassword": { "message": "File password" @@ -933,10 +936,10 @@ "message": "Set a password to encrypt the export and import it to any Bitwarden account using the password for decryption." }, "fileTypeHeading": { - "message": "File type" + "message": "Filtyp" }, "accountBackup": { - "message": "Account backup" + "message": "Kontobackup" }, "passwordProtected": { "message": "Password protected" @@ -951,7 +954,7 @@ "message": "This file is password-protected. Please enter the file password to import data." }, "exportSuccess": { - "message": "Ditt valv har exporterats." + "message": "Ditt valv har exporterats" }, "passwordGenerator": { "message": "Lösenordsgenerator" @@ -970,7 +973,7 @@ "message": "Undvik tvetydiga tecken" }, "regeneratePassword": { - "message": "Skapa nytt lösenord" + "message": "Återskapa lösenord" }, "length": { "message": "Längd" @@ -1139,7 +1142,7 @@ "message": "Radera konto" }, "deleteAccountDesc": { - "message": "Fortsätt nedan för att radera ditt konto och all tillhörande data." + "message": "Fortsätt nedan för att radera ditt konto och all valvdata." }, "deleteAccountWarning": { "message": "Att radera ditt konto är permanent. Det går inte att ångra." @@ -1166,7 +1169,7 @@ "message": "Det uppstod ett problem med datan du försökte importera. Lös nedanstående fel i källfilen och försök igen." }, "importSuccess": { - "message": "Data har importerats till ditt valv." + "message": "Data har importerats till ditt valv" }, "importWarning": { "message": "Du importerar data till $ORGANIZATION$. Din data kan komma att delas med medlemmar i den här organisationen. Vill du fortsätta?", @@ -1193,10 +1196,10 @@ "message": "Välj importfilen" }, "chooseFile": { - "message": "Choose File" + "message": "Välj fil" }, "noFileChosen": { - "message": "No file chosen" + "message": "Ingen fil har valts" }, "orCopyPasteFileContents": { "message": "eller kopiera och klistra in innehållet från filen" @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Aktivera gravatarer", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Använd avatarbilder hämtade från gravatar.com." - }, "enableFullWidth": { "message": "Aktivera layout med full bredd", "description": "Allows scaling the web vault UI's width" @@ -1292,13 +1288,26 @@ "message": "Domänerna uppdaterades" }, "twoStepLogin": { - "message": "Tvåstegsverifiering" + "message": "Tvåfaktorsautentisering" + }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" }, "twoStepLoginDesc": { "message": "Säkra ditt konto genom att kräva ett ytterligare steg vid inloggning." }, - "twoStepLoginOrganizationDesc": { - "message": "Kräv tvåstegsverifiering för din organisations användare genom att konfigurera metoder på organisationsnivå." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Att aktivera tvåstegsverifiering kan låsa ute dig från ditt Bitwarden-konto permanent. En återställningskod låter dig komma åt ditt konto om du inte längre kan använda din vanliga metod för tvåstegsverifiering (t.ex. om du förlorar din enhet). Bitwardens kundservice kommer inte att kunna hjälpa dig om du förlorar åtkomst till ditt konto. Vi rekommenderar att du skriver ner eller skriver ut återställningskoden och förvarar den på ett säkert ställe." @@ -1547,6 +1556,10 @@ "message": "Identifiera och åtgärda säkerhetsluckor på dina online-konton genom att klicka på rapporterna nedan.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Rapport om osäkra webbplatser" }, @@ -1774,10 +1787,10 @@ "description": "Another way of saying \"Get a Premium membership\"" }, "premiumUpdated": { - "message": "Du har uppgraderat till Premium." + "message": "Du har uppgraderat till premium." }, "premiumUpgradeUnlockFeatures": { - "message": "Uppgradera ditt konto till ett premiummedlemskap för att låsa upp ytterligare funktioner." + "message": "Uppgradera ditt konto till ett premium-medlemskap och lås upp några riktigt bra extrafunktioner." }, "premiumSignUpStorage": { "message": "1 GB krypterad lagring." @@ -1901,7 +1914,7 @@ "message": "Klicka på PayPal-knappen för att logga in på ditt PayPal-konto, tryck sedan på \"Skicka\"-knappen nedan för att fortsätta." }, "cancelSubscription": { - "message": "Avbryt prenumeration" + "message": "Avsluta prenumeration" }, "subscriptionCanceled": { "message": "Abonnemanget har avslutats." @@ -1913,7 +1926,7 @@ "message": "Abonnemanget har markerats för avslutning vid slutet av den nuvarande faktureringsperioden." }, "reinstateSubscription": { - "message": "Återuppta abonnemang" + "message": "Återuppta prenumeration" }, "reinstateConfirmation": { "message": "Är du säker att du vill ta bort den väntande avslutningsförfrågan och återuppta ditt abonnemang?" @@ -1925,10 +1938,10 @@ "message": "Är du säker på att du vill avsluta? Du kommer förlora tillgång till alla funktioner som abonnemanget erbjuder vid slutet av den nuvarande faktureringsperioden." }, "canceledSubscription": { - "message": "Abonnemanget har avslutats." + "message": "Prenumerationen har avslutats" }, "neverExpires": { - "message": "Går aldrig ut" + "message": "Upphör aldrig" }, "status": { "message": "Status" @@ -2093,7 +2106,7 @@ "message": "Företagsnamn" }, "chooseYourPlan": { - "message": "Välj din plan" + "message": "Välj abonnemang" }, "users": { "message": "Användare" @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Visade säkerhetskod för objektet $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Min organisation" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Radera organisation" }, @@ -3038,7 +3063,7 @@ "description": "A billing plan/package. For example: Families, Teams, Enterprise, etc." }, "changeBillingPlan": { - "message": "Uppgradera plan", + "message": "Uppgradera abbonemanget", "description": "A billing plan/package. For example: Families, Teams, Enterprise, etc." }, "changeBillingPlanUpgrade": { @@ -3074,7 +3099,7 @@ "message": "Om du inte verifierar bankkontot kommer det att resultera i en missad betalning och ditt abonnemang kommer inaktiveras." }, "verifiedBankAccount": { - "message": "Bankkontot har verifierats." + "message": "Bankkontot har verifierats" }, "bankAccount": { "message": "Bankkonto" @@ -3112,7 +3137,7 @@ "message": "Ange ditt installations-id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3328,7 +3353,7 @@ "description": "ex. Date this password was updated" }, "organizationIsDisabled": { - "message": "Organisationen är inaktiverad." + "message": "Organisationen är inaktiverad" }, "disabledOrganizationFilterError": { "message": "Items in suspended organizations cannot be accessed. Contact your organization owner for assistance." @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Organisationens identifierare krävs." }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." + }, "unlinkSso": { "message": "Avlänka SSO" }, @@ -3830,7 +3861,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "allSends": { - "message": "Alla Send" + "message": "Alla Sends" }, "maxAccessCountReached": { "message": "Det maximala antalet åtkomster har uppnåtts", @@ -4001,7 +4032,7 @@ } }, "emergencyApproved": { - "message": "Nödåtkomst godkänd." + "message": "Nödåtkomst godkänd" }, "emergencyRejected": { "message": "Nödåtkomst nekad" @@ -4016,7 +4047,7 @@ } }, "personalOwnership": { - "message": "Personligt ägarskap" + "message": "Radera individuellt valv" }, "personalOwnershipPolicyDesc": { "message": "Kräv att användare sparar objekt till en organisation genom att ta bort det personliga ägarskapsalternativet." @@ -4038,7 +4069,7 @@ "message": "Användare som kan hantera organisationens policyer är berörs inte av den här policyn." }, "sendDisabled": { - "message": "Send inaktiverad", + "message": "Send borttagen", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -4091,6 +4122,9 @@ "permissions": { "message": "Behörigheter" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4116,7 +4150,7 @@ "message": "Skapa ny samling" }, "editAnyCollection": { - "message": "Ändra samling" + "message": "Redigera samling" }, "deleteAnyCollection": { "message": "Delete any collection" @@ -4371,13 +4405,13 @@ "message": "Automatiskt deltagande" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { "message": "Användare som redan är med i organisationen kommer inte att retroaktivt delta i lösenordsåterställning. De kommer behöva delta själva innan administratörer kan återställa sitt huvudlösenord." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "Denna organisation har en företagspolicy som automatiskt registrerar dig för lösenordsåterställning. Deltagandet gör det möjligt för organisationsadministratörer att ändra ditt huvudlösenord." @@ -4496,6 +4530,10 @@ "clients": { "message": "Klienter" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Medlemmar" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Antal användare" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "Från" + }, + "to": { + "message": "Till" + }, + "member": { + "message": "Medlem" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Roll" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Grupp" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/tr/messages.json b/apps/web/src/locales/tr/messages.json index 939d859fc72..fd895926467 100644 --- a/apps/web/src/locales/tr/messages.json +++ b/apps/web/src/locales/tr/messages.json @@ -38,7 +38,7 @@ "message": "Parola" }, "newPassword": { - "message": "Yeni Parola" + "message": "Yeni parola" }, "passphrase": { "message": "Uzun söz" @@ -47,7 +47,7 @@ "message": "Notlar" }, "customFields": { - "message": "Özel alanlar" + "message": "Özel Alanlar" }, "cardholderName": { "message": "Kart sahibinin adı" @@ -137,10 +137,10 @@ "message": "Dr" }, "expirationMonth": { - "message": "Son Kullanma Ayı" + "message": "Son kullanma ayı" }, "expirationYear": { - "message": "Son Kullanma Yılı" + "message": "Son kullanma yılı" }, "authenticatorKeyTotp": { "message": "Kimlik doğrulama anahtarı (TOTP)" @@ -149,7 +149,7 @@ "message": "Klasör" }, "newCustomField": { - "message": "Yeni Özel Alan" + "message": "Yeni özel alan" }, "value": { "message": "Değer" @@ -269,23 +269,23 @@ "message": "Düzenle" }, "searchCollection": { - "message": "Koleksiyon Ara" + "message": "Koleksiyonda ara" }, "searchFolder": { - "message": "Klasör Ara" + "message": "Klasörde ara" }, "searchFavorites": { - "message": "Favorilerde Ara" + "message": "Favorilerde ara" }, "searchType": { - "message": "Arama Tipi", + "message": "Arama türü", "description": "Search item type" }, "searchVault": { "message": "Kasada ara" }, "allItems": { - "message": "Tüm Öğeler" + "message": "Tüm kayıtlar" }, "favorites": { "message": "Favoriler" @@ -303,7 +303,7 @@ "message": "Kimlik" }, "typeSecureNote": { - "message": "Güvenli Not" + "message": "Güvenli not" }, "typeLoginPlural": { "message": "Hesaplar" @@ -315,7 +315,7 @@ "message": "Kimlikler" }, "typeSecureNotePlural": { - "message": "Güvenli Notlar" + "message": "Güvenli notlar" }, "folders": { "message": "Klasörler" @@ -351,7 +351,7 @@ "message": "İl / eyalet" }, "zipPostalCode": { - "message": "Posta Kodu" + "message": "Posta kodu" }, "country": { "message": "Ülke" @@ -467,7 +467,7 @@ "message": "Bu dosyayı silmek istediğinizden emin misiniz?" }, "attachmentSaved": { - "message": "Dosya kaydedildi." + "message": "Dosya kaydedildi" }, "file": { "message": "Dosya" @@ -485,7 +485,7 @@ "message": "Kayıt eklendi" }, "editedItem": { - "message": "Kayıt düzenlendi" + "message": "Kayıt kaydedildi" }, "movedItemToOrg": { "message": "$ITEMNAME$ $ORGNAME$ kuruluşuna taşındı", @@ -534,10 +534,10 @@ "message": "Mevcut parolanın üzerine kaydetmek istediğinizden emin misiniz?" }, "editedFolder": { - "message": "Klasör düzenlendi" + "message": "Klasör kaydedildi" }, "addedFolder": { - "message": "Klasör Eklendi" + "message": "Klasör eklendi" }, "deleteFolderConfirmation": { "message": "Bu klasörü silmek istediğinizden emin misiniz?" @@ -570,10 +570,13 @@ "message": "Güvenli kasanıza ulaşmak için giriş yapın veya yeni bir hesap oluşturun." }, "loginWithDevice": { - "message": "Cihaz ile Giriş Yap" + "message": "Cihazla giriş yap" }, "loginWithDeviceEnabledInfo": { - "message": "Cihazla oturum açma, Bitwarden mobil uygulamasının ayarlarında etkinleştirilmelidir. Başka bir seçeneğe mi ihtiyacınız var?" + "message": "Cihazla girişi Bitwarden mobil uygulamasının ayarlarından etkinleştirmelisiniz. Başka bir seçeneğe mi ihtiyacınız var?" + }, + "loginWithMasterPassword": { + "message": "Ana parola ile giriş yap" }, "createAccount": { "message": "Hesap aç" @@ -588,7 +591,7 @@ "message": "Giriş yap" }, "logInInitiated": { - "message": "Oturum açma başlatıldı" + "message": "Giriş başlatıldı" }, "submit": { "message": "Gönder" @@ -609,7 +612,7 @@ "message": "Ana parola, kasanıza ulaşmak için kullanacağınız paroladır. Ana parolanızı unutmamanız çok önemlidir. Unutursanız parolalarınızı asla kurtaramazsınız." }, "masterPassImportant": { - "message": "Ana şifreler, unutursanız kurtarılamaz!" + "message": "Ana parolayı unutursanız kurtaramazsınız!" }, "masterPassHintDesc": { "message": "Ana parolanızı unutursanız bu ipucuna bakınca size ana parolanızı hatırlatacak bir şey yazabilirsiniz." @@ -691,7 +694,7 @@ "message": "Geçersiz ana parola" }, "invalidFilePassword": { - "message": "Geçersiz dosya şifresi, lütfen dışa aktarma dosyasını oluştururken girdiğiniz şifreyi kullanın." + "message": "Geçersiz dosya parolası. Lütfen dışa aktardığınız dosyayı oluştururken girdiğiniz parolayı kullanın." }, "lockNow": { "message": "Şimdi kilitle" @@ -769,7 +772,7 @@ "message": "Giriş yapılamıyor" }, "noTwoStepProviders": { - "message": "Bu hesapta iki aşamalı giriş özelliği etkin ama yapılandırdığınız iki aşamalı giriş sağlayıcılarının hiçbiri bu tarayıcıyı desteklemiyor." + "message": "Bu hesapta iki aşamalı giriş açık ama yapılandırdığınız iki aşamalı giriş sağlayıcılarının hiçbiri bu web tarayıcısını desteklemiyor." }, "noTwoStepProviders2": { "message": "Lütfen desteklenen bir web tarayıcısı (örn. Chrome) kullanın ve/veya web tarayıcılarında daha iyi desteklenen sağlayıcılar (örn. kimlik doğrulama uygulaması) ekleyin." @@ -778,7 +781,7 @@ "message": "İki aşamalı giriş seçenekleri" }, "recoveryCodeDesc": { - "message": "İki aşamalı doğrulama sağlayıcılarınıza ulaşamıyor musunuz? Kurtarma kodunuzu kullanarak hesabınızdaki tüm iki aşamalı giriş sağlayıcılarını devre dışı bırakabilirsiniz." + "message": "İki aşamalı giriş sağlayıcılarınıza ulaşamıyor musunuz? Kurtarma kodunuzu kullanarak hesabınızdaki tüm iki aşamalı giriş sağlayıcılarını devre dışı bırakabilirsiniz." }, "recoveryCodeTitle": { "message": "Kurtarma kodu" @@ -909,49 +912,49 @@ "message": "Dosya biçimi" }, "fileEncryptedExportWarningDesc": { - "message": "Bu dosya dışa aktarma, şifre korumalı olacak ve şifrenin çözülmesi için dosya şifresi gerektirecek." + "message": "Dışarı aktarılan bu dosya parola korumalı olacak ve dosyanın çözülmesi için parolayı girmeniz gerekecek." }, "exportPasswordDescription": { - "message": "Bu şifre, bu dosyayı dışa ve içe aktarmak için kullanılacaktır" + "message": "Bu parola, bu dosyayı dışa ve içe aktarmak için kullanılacaktır" }, "confirmMasterPassword": { - "message": "Ana Şifreyi Onayla" + "message": "Ana parolayı onaylayın" }, "confirmFormat": { - "message": "Biçimi Onayla" + "message": "Biçimi onaylayın" }, "filePassword": { - "message": "Dosya Şifresi" + "message": "Dosya parolası" }, "confirmFilePassword": { - "message": "Dosya Şifresini Onayla" + "message": "Dosya parolasını onaylayın" }, "accountBackupOptionDescription": { - "message": "Dışa aktarmayı şifrelemek ve içe aktarmayı yalnızca geçerli Bitwarden hesabıyla kısıtlamak için hesap çözme anahtarınızı kullanın." + "message": "Dışa aktarmayı şifrelemek ve içe aktarmayı yalnızca geçerli Bitwarden hesabıyla sınırlandırmak için hesap şifreleme anahtarınızı kullanın." }, "passwordProtectedOptionDescription": { - "message": "Dışa aktarmayı şifrelemek için bir şifre belirleyin ve şifre çözme parolasını kullanarak herhangi bir Bitwarden hesabına içe aktarın." + "message": "Dışa aktardığınız dosyayı şifrelemek ve bir Bitwarden hesabına içe aktarmak için kullanacağınız parolayı belirleyin." }, "fileTypeHeading": { - "message": "Dosya Tipi" + "message": "Dosya türü" }, "accountBackup": { - "message": "Hesap Yedeği" + "message": "Hesap yedeği" }, "passwordProtected": { - "message": "Şifre Korumalı" + "message": "Parola korumalı" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { - "message": "\"Dosya şifresi\" ve \"Dosya Şifresini Onayla\" eşleşmiyor." + "message": "\"Dosya parolası\" ile \"Dosya parolasını onaylayın\" eşleşmiyor." }, "confirmVaultImport": { - "message": "Kasayı İçe Aktarmayı Onaylayın" + "message": "Kasayı içe aktarmayı onaylayın" }, "confirmVaultImportDesc": { - "message": "Bu dosya şifre korumalıdır. Verileri içe aktarmak için lütfen dosya şifresini girin." + "message": "Bu dosya parola korumalıdır. Verileri içe aktarmak için lütfen dosya parolasını girin." }, "exportSuccess": { - "message": "Kasadaki verileriniz dışa aktarıldı." + "message": "Kasa verileriniz dışa aktarıldı" }, "passwordGenerator": { "message": "Parola oluşturucu" @@ -1013,13 +1016,13 @@ "description": "To clear something out. Example: To clear browser history." }, "accountUpdated": { - "message": "Hesap güncellendi" + "message": "Hesap kaydedildi" }, "changeEmail": { "message": "E-postayı değiştir" }, "changeEmailTwoFactorWarning": { - "message": "Devam ederseniz hesabınızın e-posta adresi değişecek. İki aşamalı doğrulama için kullandığınız e-posta adresiniz değişmeyecek. Onu iki aşamalı doğrulama ayarlarından değiştirebilirsiniz." + "message": "Devam ederseniz hesabınızın e-posta adresi değişecek. İki aşamalı giriş için kullandığınız e-posta adresiniz değişmeyecek. Onu iki aşamalı giriş ayarlarından değiştirebilirsiniz." }, "newEmail": { "message": "Yeni e-posta" @@ -1040,7 +1043,7 @@ "message": "Devam ederseniz geçerli oturumunuz sonlanacak ve yeniden oturum açmanız gerekecek. Diğer cihazlardaki aktif oturumlar bir saate kadar aktif kalabilir." }, "emailChanged": { - "message": "E-posta değiştirildi" + "message": "E-posta kaydedildi" }, "logBackIn": { "message": "Lütfen yeniden giriş yapın." @@ -1052,7 +1055,7 @@ "message": "Ana parolayı değiştir" }, "masterPasswordChanged": { - "message": "Ana parola değiştirildi" + "message": "Ana parola kaydedildi" }, "currentMasterPass": { "message": "Mevcut ana parola" @@ -1094,10 +1097,10 @@ "message": "KDF'i değiştir" }, "encKeySettingsChanged": { - "message": "Şifreleme anahtarı ayarları değişti" + "message": "Şifreleme anahtarı ayarları kaydedildi" }, "dangerZone": { - "message": "Tehlikeli Bölge" + "message": "Tehlikeli bölge" }, "dangerZoneDesc": { "message": "Dikkatli olun, bu işlemleri geri alamazsınız!" @@ -1115,7 +1118,7 @@ "message": "Tüm oturumlar kapatıldı" }, "purgeVault": { - "message": "Kasayı sil" + "message": "Kasayı boşalt" }, "purgedOrganizationVault": { "message": "Kuruluş kasası silindi." @@ -1133,13 +1136,13 @@ "message": "Kasanızı silmek kalıcıdır. Bu işlem geri alınamaz." }, "vaultPurged": { - "message": "Kasanız silindi." + "message": "Kasanız boşaltıldı." }, "deleteAccount": { "message": "Hesabı sil" }, "deleteAccountDesc": { - "message": "Hesabınızı ve ilişkili tüm verileri silmek için aşağıya devam edin." + "message": "Hesabınızı ve kasanızdaki tüm verileri silmek için aşağıdan devam edin." }, "deleteAccountWarning": { "message": "Hesabınızı silmek kalıcıdır. Geri alınamaz." @@ -1166,7 +1169,7 @@ "message": "İçe aktarmaya çalıştığınız verilerle ilgili bir problem var. Lütfen kaynak dosyanızdaki aşağıda belirtilen hataları çözüp tekrar deneyin." }, "importSuccess": { - "message": "Veriler kasanıza başarıyla aktarıldı." + "message": "Veriler başarıyla içe aktarıldı" }, "importWarning": { "message": "$ORGANIZATION$ kuruluşuna veri aktarıyorsunuz. Verileriniz bu kuruluşun üyeleriyle paylaşılabilir. Devam etmek istiyor musunuz?", @@ -1221,7 +1224,7 @@ "message": "Web kasası deneyiminizi özelleştirin." }, "preferencesUpdated": { - "message": "Tercihler güncellendi" + "message": "Tercihler kaydedildi" }, "language": { "message": "Dil" @@ -1235,15 +1238,8 @@ "faviconDesc": { "message": "Hesapların yanında tanıdık görseller göster." }, - "enableGravatars": { - "message": "Gravatar'ı Etkinleştir", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "gravatar.com adresinden yüklenen avatarları kullan." - }, "enableFullWidth": { - "message": "Tam genişlik görünümünü etkinleştir", + "message": "Tam genişlik düzeninde göster", "description": "Allows scaling the web vault UI's width" }, "enableFullWidthDesc": { @@ -1289,16 +1285,29 @@ } }, "domainsUpdated": { - "message": "Alan adları güncellendi" + "message": "Alan adları kaydedildi" }, "twoStepLogin": { "message": "İki aşamalı giriş" }, + "twoStepLoginEnforcement": { + "message": "İki-Aşamalı Giriş Zorunluluğu" + }, "twoStepLoginDesc": { "message": "Oturum açarken ek bir adım talep ederek hesabınızı güvenceye alabilirsiniz." }, - "twoStepLoginOrganizationDesc": { - "message": "Kuruluş düzeyinde sağlayıcıları düzenleyerek kuruluşunuzun kullanıcılarına iki aşamalı girişi zorunlu kılabilirsiniz." + "twoStepLoginOrganizationDescStart": { + "message": "Bitwarden İki-Aşamalı Giriş seçeneklerini zorunlu tut ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "İki-Aşamalı Oturum Açma Seçenekleri" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Duo ile İki-Aşamalı Giriş için aşağıdaki seçenekleri kullanın." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Eğer SSO kurduysanız ya da kurmayı planlıyorsanız, Kimlik Sağlayıcınız tarafından İki-Aşamalı Giriş halihazırda sağlanıyor olabilir." }, "twoStepLoginRecoveryWarning": { "message": "İki aşamalı girişi etkinleştirmek, Bitwarden hesabınızı kalıcı olarak kilitleyebilir. Kurtarma kodunuz, iki aşamalı giriş sağlayıcınızı kullanamamanız durumunda hesabınıza erişmenize olanak sağlar (ör. cihazınızı kaybedersiniz). Hesabınıza erişiminizi kaybederseniz Bitwarden destek ekibi size yardımcı olamaz. Kurtarma kodunu not almanızı veya yazdırmanızı ve güvenli bir yerde saklamanızı öneririz." @@ -1311,23 +1320,23 @@ "description": "Two-step login providers such as YubiKey, Duo, Authenticator apps, Email, etc." }, "enable": { - "message": "Etkinleştir" + "message": "Aç" }, "enabled": { - "message": "Etkin" + "message": "Açıldı" }, "restoreAccess": { - "message": "Erişimi geri yükle" + "message": "Erişimi geri getir" }, "premium": { "message": "Premium", "description": "Premium membership" }, "premiumMembership": { - "message": "Premium Üyelik" + "message": "Premium üyelik" }, "premiumRequired": { - "message": "Premium Gerekli" + "message": "Premium gerekli" }, "premiumRequiredDesc": { "message": "Bu özelliği kullanmak için premium üyelik gereklidir." @@ -1336,13 +1345,13 @@ "message": "Premium erişiminiz var" }, "alreadyPremiumFromOrg": { - "message": "Üyesi olduğunuz bir organizasyon nedeniyle premium özelliklere zaten erişiminiz var." + "message": "Üyesi olduğunuz kuruluş sayesinde premium özelliklere zaten erişiminiz var." }, "manage": { "message": "Yönet" }, "disable": { - "message": "Devre dışı bırak" + "message": "Kapat" }, "revokeAccess": { "message": "Erişimi iptal et" @@ -1387,10 +1396,10 @@ "message": "Başka bir cihaza eklemeniz gerekirse kimlik doğrulama uygulamanıza aşağıdaki QR kodunu (veya anahtarı) verebilirsiniz." }, "twoStepDisableDesc": { - "message": "Bu iki aşamalı giriş sağlayıcısını devre dışı bırakmak istediğinize emin misiniz?" + "message": "Bu iki aşamalı giriş sağlayıcısını kaptmak istediğinizden emin misiniz?" }, "twoStepDisabled": { - "message": "İki aşamalı giriş sağlayıcısı devre dışı." + "message": "İki aşamalı giriş sağlayıcısı kapatıldı." }, "twoFactorYubikeyAdd": { "message": "Hesabıma yeni bir YubiKey ekle" @@ -1547,8 +1556,12 @@ "message": "Aşağıdaki raporlara tıklayarak çevrimiçi hesaplarınızdaki güvenlik açıklarını görün ve kapatın.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Aşağıdaki raporlara tıklayarak kuruluş hesaplarınızdaki güvenlik açıklarını tanımlayın ve kapatın.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { - "message": "Güvensiz Web Siteleri" + "message": "Güvensiz web siteleri" }, "unsecuredWebsitesReportDesc": { "message": "http:// ile başlayan adreslerde şifreleme kullanılmıyor demektir. Daha güvenli gezinti için bu hesapların adreslerini https:// ile değiştirin." @@ -1569,16 +1582,16 @@ "message": "Kasanızda güvenli olmayan URI'ye sahip hiç kayıt yok." }, "inactive2faReport": { - "message": "Pasif İki Aşamalı Giriş" + "message": "Pasif iki aşamalı giriş" }, "inactive2faReportDesc": { - "message": "İki aşamalı kimlik doğrulama (2FA), hesaplarınızı güvenceye almanızı sağlayan önemli bir güvenlik ayarıdır. İki aşamalı kimlik doğrulamayı destekleyen sitelerde bu ayarı her zaman etkinleştirmenizi öneririz." + "message": "İki aşamalı giriş, hesaplarınızı güvenceye almanızı sağlayan bir güvenlik ayarıdır. Bu hesaplar için Bitwarden şifrematiği veya alternatif bir yöntemi kullanabilirsiniz." }, "inactive2faFound": { - "message": "2FA olmayan hesaplar bulundu" + "message": "İki aşamalı girişi olmayan hesaplar bulundu" }, "inactive2faFoundDesc": { - "message": "Kasanızda iki aşamalı kimlik doğrulaması kullanmıyor olabilecek $COUNT$ web sitesi bulduk (2fa.directory’ye göre). Bu hesapları daha iyi korumak için iki aşamalı kimlik doğrulamasını etkinleştirmelisiniz.", + "message": "Kasanızda iki aşamalı giriş kullanmıyor olabilecek $COUNT$ web sitesi bulduk (2fa.directory’ye göre). Bu hesapları daha iyi korumak için iki aşamalı girişi etkinleştirmelisiniz.", "placeholders": { "count": { "content": "$1", @@ -1587,19 +1600,19 @@ } }, "noInactive2fa": { - "message": "Kasanızda iki aşamalı kimlik doğrulama yapılandırması eksik olan web sitesi bulunamadı." + "message": "Kasanızda iki aşamalı giriş yapılandırması eksik olan web sitesi bulunamadı." }, "instructions": { "message": "Yönergeler" }, "exposedPasswordsReport": { - "message": "Açığa Çıkmış Parolalar" + "message": "Açığa çıkmış parolalar" }, "exposedPasswordsReportDesc": { - "message": "Açığa çıkmış parolalar, kamuya açık olarak yayınlanan veya bilgisayar korsanları tarafından karanlık ağda satıldığı bilinen parolalardır." + "message": "Veri ihlallerinde açığa çıkmış parolalar saldırganlar için kolay hedeftir. Olası saldırıları önlemek için bu parolaları değiştirin." }, "exposedPasswordsFound": { - "message": "Açığa Çıkmış Parolalar Bulundu" + "message": "Açığa çıkmış parolalar bulundu" }, "exposedPasswordsFoundDesc": { "message": "Kasanızda, bilinen veri ihlallerine maruz kalmış parolalara sahip $COUNT$ kayıt bulundu. Bu parolaları değiştirmelisiniz.", @@ -1614,7 +1627,7 @@ "message": "Kasanızdaki hiçbir kaydın parolası bilinen veri ihlallerinde ele geçirilmemiş." }, "checkExposedPasswords": { - "message": "Açığa Çıkmış Parolaları Kontrol Et" + "message": "Açığa çıkmış parolaları kontrol et" }, "exposedXTimes": { "message": "$COUNT$ kez açığa çıkmış", @@ -1626,7 +1639,7 @@ } }, "weakPasswordsReport": { - "message": "Zayıf Parolalar" + "message": "Zayıf parolalar" }, "weakPasswordsReportDesc": { "message": "Zayıf parolalar saldırganlar tarafından kolayca tahmin edilebilir. Bitwarden parola üreticisi ile daha güçlü parolalar oluşturarak bu parolaları değiştirin." @@ -1647,7 +1660,7 @@ "message": "Kasanızdaki hiçbir kaydın parolası zayıf değil." }, "reusedPasswordsReport": { - "message": "Yeniden Kullanılmış Parolalar" + "message": "Yeniden kullanılmış parolalar" }, "reusedPasswordsReportDesc": { "message": "Kullandığınız bir servis ele geçirilirse, aynı parolayı başka yerlerde kullanmanız hacker'ların diğer hesaplarınıza da kolayca erişmesine olanak tanıyabilir. bu yüzden her hesap ve hizmet için farklı bir parola kullanmalısınız." @@ -1677,7 +1690,7 @@ } }, "dataBreachReport": { - "message": "Veri İhlali" + "message": "Veri ihlali" }, "breachDesc": { "message": "Hacker'ların bir sitenin verilerine yasadışı bir şekilde erişip bunları herkese açık bir şekilde yayımlamalarına \"ihlal\" denir. Ele geçirilen veri türlerini (e-posta adresleri, parolalar, kredi kartları vb.) inceleyin ve gerekli önlemleri alın (örn. parolaları değiştirin)." @@ -1739,10 +1752,10 @@ "message": "Faturalandırma" }, "billingPlanLabel": { - "message": "Ödeme Planı" + "message": "Ödeme planı" }, "paymentType": { - "message": "Ödeme Türü" + "message": "Ödeme türü" }, "accountCredit": { "message": "Hesap kredisi", @@ -1774,7 +1787,7 @@ "description": "Another way of saying \"Get a Premium membership\"" }, "premiumUpdated": { - "message": "Premium'a yükselttiniz." + "message": "Premium'a geçtiniz." }, "premiumUpgradeUnlockFeatures": { "message": "Hesabınızı premium üyeliğe yükselterek harika ek özelliklere sahip olabilirsiniz." @@ -1886,13 +1899,13 @@ "message": "Paketiniz 7 günlük ücretsiz deneme süresiyle geliyor. Deneme süresi bitene kadar sizden ücret alınmayacak. İstediğiniz zaman aboneliğinizi iptal edebilirsiniz." }, "paymentInformation": { - "message": "Ödeme Bilgileri" + "message": "Ödeme bilgileri" }, "billingInformation": { - "message": "Fatura Bilgileri" + "message": "Fatura bilgileri" }, "billingTrialSubLabel": { - "message": "7 günlük ücretsiz deneme süresi boyunca ödeme yönteminizden ücret alınmayacaktır." + "message": "7 günlük ücretsiz deneme süresi boyunca ücret tahsil edilmeyecektir." }, "creditCard": { "message": "Kredi kartı" @@ -1925,7 +1938,7 @@ "message": "İptal etmek istediğinden emin misin? Bu fatura döneminin sonunda bu aboneliğin tüm özelliklerine erişiminizi kaybedeceksiniz." }, "canceledSubscription": { - "message": "Abonelik iptal edildi." + "message": "Abonelik iptal edildi" }, "neverExpires": { "message": "Zaman aşımı yok" @@ -1949,7 +1962,7 @@ "message": "Lisans güncellendi" }, "manageSubscription": { - "message": "Aboneliğimi yönet" + "message": "Aboneliği yönet" }, "storage": { "message": "Depolama" @@ -2251,7 +2264,7 @@ } }, "trialThankYou": { - "message": "$PLAN$ karşılığında Bitwarden'a kaydolduğunuz için teşekkür ederiz!", + "message": "Bitwarden $PLAN$ aboneliğinizi başlattığınız teşekkür ederiz!", "placeholders": { "plan": { "content": "$1", @@ -2260,7 +2273,7 @@ } }, "trialPaidInfoMessage": { - "message": "$PLAN$ 7 günlük ücretsiz denemeniz, 7 gün sonra ücretli aboneliğe dönüştürülecektir.", + "message": "7 günlük ücretsiz $PLAN$ denemeniz, 7 gün sonra ücretli aboneliğe dönüştürülecektir.", "placeholders": { "plan": { "content": "$1", @@ -2290,7 +2303,7 @@ "message": "Yeni kuruluşunuz hazır!" }, "organizationUpgraded": { - "message": "Kuruluşunuz yükseltildi." + "message": "Kuruluş yükseltildi" }, "leave": { "message": "Ayrıl" @@ -2299,7 +2312,7 @@ "message": "Bu kuruluştan ayrılmak istediğinizden emin misiniz?" }, "leftOrganization": { - "message": "Kuruluştan ayrıldınız." + "message": "Kuruluştan ayrıldınız" }, "defaultCollection": { "message": "Varsayılan koleksiyon" @@ -2323,7 +2336,7 @@ "message": "İlkeler" }, "singleSignOn": { - "message": "Tek Oturum Açma" + "message": "Tek oturum açma" }, "editPolicy": { "message": "İlkeyi düzenle" @@ -2488,19 +2501,19 @@ "message": "Web kasası" }, "loggedIn": { - "message": "Giriş yapıldı." + "message": "Giriş yapıldı" }, "changedPassword": { - "message": "Hesap parolası değiştirildi." + "message": "Hesap parolası değiştirildi" }, "enabledUpdated2fa": { - "message": "İki aşamalı giriş açıldı/güncellendi." + "message": "İki aşamalı giriş kaydedildi" }, "disabled2fa": { - "message": "İki aşamalı giriş kapatıldı." + "message": "İki aşamalı giriş kapatıldı" }, "recovered2fa": { - "message": "İki aşamalı giriş ile hesap kurtarıldı." + "message": "Hesap iki aşamalı girişten kurtarıldı." }, "failedLogin": { "message": "Hatalı parola sebebiyle oturum açma başarısız oldu." @@ -2509,7 +2522,7 @@ "message": "Hatalı iki aşamalı doğrulama sebebiyle oturum açma başarısız oldu." }, "exportedVault": { - "message": "Kasa dışa aktarıldı." + "message": "Kasa dışa aktarıldı" }, "exportedOrganizationVault": { "message": "Kuruluş kasası dışa aktarıldı." @@ -2554,7 +2567,7 @@ } }, "viewAllLoginOptions": { - "message": "Tüm oturum açma seçeneklerini gör" + "message": "Tüm giriş seçeneklerini gör" }, "viewedItemId": { "message": "$ID$ kaydı görüntülendi.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "$ID$ kaydının kart numarası görüntülendi.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "$ID$ güvenlik kodu görüntülendi.", "placeholders": { @@ -2701,7 +2723,7 @@ } }, "removeUserIdAccess": { - "message": "$ID$ Erişimini kaldır", + "message": "$ID$ erişimini kaldır", "placeholders": { "id": { "content": "$1", @@ -2710,7 +2732,7 @@ } }, "revokedUserId": { - "message": "$ID$ İçin kuruluş erişimi iptal edildi.", + "message": "$ID$ için kuruluş erişimi iptal edildi.", "placeholders": { "id": { "content": "$1", @@ -2719,7 +2741,7 @@ } }, "restoredUserId": { - "message": "$ID$ İçin kuruluş erişimi geri yüklendi.", + "message": "$ID$ için kuruluş erişimi geri getirildi.", "placeholders": { "id": { "content": "$1", @@ -2728,7 +2750,7 @@ } }, "revokeUserId": { - "message": "$ID$ Erişimini iptal et", + "message": "$ID$ erişimini iptal et", "placeholders": { "id": { "content": "$1", @@ -2869,7 +2891,7 @@ "message": "Bu kullanıcının gruplarını düzenleyin." }, "invitedUsers": { - "message": "Kullanıcı(lar) davet edildi." + "message": "Kullanıcı(lar) davet edildi" }, "resendInvitation": { "message": "Daveti yeniden gönder" @@ -2878,7 +2900,7 @@ "message": "E-postayı yeniden gönder" }, "hasBeenReinvited": { - "message": "$USER$ yeniden davet edildi.", + "message": "$USER$ yeniden davet edildi", "placeholders": { "user": { "content": "$1", @@ -2926,13 +2948,13 @@ "message": "Doğrulama linki için e-posta hesabınızı kontrol edin." }, "emailVerified": { - "message": "E-posta hesabınız doğrulandı." + "message": "Hesap e-postası doğrulandı" }, "emailVerifiedFailed": { "message": "E-posta hesabı doğrulanamadı. Yeniden doğrulama e-postası göndermeyi deneyin." }, "emailVerificationRequired": { - "message": "E-posta Doğrulaması Gerekli" + "message": "E-posta doğrulaması gerekiyor" }, "emailVerificationRequiredDesc": { "message": "Bu özelliği kullanmak için e-postanızı doğrulamalısınız." @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "Kuruluşum" }, + "organizationInfo": { + "message": "Kuruluş bilgileri" + }, "deleteOrganization": { "message": "Kuruluşu sil" }, @@ -3025,7 +3050,7 @@ "message": "Kuruluş ve ilişkili tüm veriler silindi." }, "organizationUpdated": { - "message": "Kuruluş güncellendi" + "message": "Kuruluş kaydedildi" }, "taxInformation": { "message": "Vergi bilgileri" @@ -3038,7 +3063,7 @@ "description": "A billing plan/package. For example: Families, Teams, Enterprise, etc." }, "changeBillingPlan": { - "message": "Paketi yükselt", + "message": "Planı yükselt", "description": "A billing plan/package. For example: Families, Teams, Enterprise, etc." }, "changeBillingPlanUpgrade": { @@ -3074,7 +3099,7 @@ "message": "Banka hesabınız doğrulanmazsa ödeme yapılamaz ve aboneliğiniz devre dışı bırakılır." }, "verifiedBankAccount": { - "message": "Banka hesabınız doğrulandı." + "message": "Banka hesabı doğrulandı" }, "bankAccount": { "message": "Banka hesabı" @@ -3112,7 +3137,7 @@ "message": "Yükleme numarasını girin" }, "limitSubscriptionDesc": { - "message": "Aboneliğiniz için kullanıcı sayısı sınırını belirleyin. Bu sınıra ulaşıldıktan sonra yeni kullanıcı davet edemezsiniz." + "message": "Aboneliğiniz için kullanıcı sayısı sınırını belirleyin. Bu sınıra ulaşıldıktan sonra yeni üye davet edemezsiniz." }, "maxSeatLimit": { "message": "Maksimum kullanıcı sayısı (isteğe bağlı)", @@ -3133,7 +3158,7 @@ "message": "Aboneliğinizde yapacağınız değişiklikler toplam faturanızın değişmesine yol açacaktır. Yeni davet edilen kullanıcıların sayısı abonelik paketinizdeki kullanıcı sayınızı aşarsa ek kullanıcılar için derhal ödeme alınır." }, "subscriptionUserSeats": { - "message": "Aboneliğiniz toplam $COUNT$ kullanıcıya izin veriyor.", + "message": "Aboneliğiniz toplam $COUNT$ üyeye izin veriyor.", "placeholders": { "count": { "content": "$1", @@ -3151,7 +3176,7 @@ "message": "Abonelik güncellendi" }, "additionalOptions": { - "message": "Ek Seçenekler" + "message": "Ek seçenekler" }, "additionalOptionsDesc": { "message": "Aboneliğinizin yönetimiyle ilgili ek yardım için lütfen müşteri hizmetleri ile iletişime geçin." @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "Kuruluş tanımlayıcısı gereklidir." }, + "ssoIdentifier": { + "message": "SSO Tanımlayıcı" + }, + "ssoIdentifierHint": { + "message": "SSO ile giriş yapan üyelere bu kimliği sağlayın." + }, "unlinkSso": { "message": "SSO bağlantısını kes" }, @@ -4091,6 +4122,9 @@ "permissions": { "message": "İzinler" }, + "permission": { + "message": "Yetki" + }, "managerPermissions": { "message": "Yetkili İzinleri" }, @@ -4496,6 +4530,10 @@ "clients": { "message": "Müşteriler" }, + "client": { + "message": "İstemci", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Sağlayıcı yöneticisi" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Girdi, $COUNT$ karakter uzunluğunu geçmemelidir.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "Üstteki $COUNT$ alan(lar) la ilgilenmeniz gerekiyor.", "placeholders": { @@ -5395,14 +5442,26 @@ "on": { "message": "Açık" }, + "members": { + "message": "Üyeler" + }, + "reporting": { + "message": "Raporlama" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Kullanıcı sayısı" }, + "loggingInAs": { + "message": "Giriş yapılan kullanıcı:" + }, + "notYou": { + "message": "Siz değil misiniz?" + }, "multiSelectPlaceholder": { - "message": "-- Type to Filter --" + "message": "-- Filtrelemek İçin Yazın --" }, "multiSelectLoading": { "message": "Seçenekler alınıyor..." @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Tümünü temizle" + }, + "from": { + "message": "Kimden" + }, + "to": { + "message": "Kime" + }, + "member": { + "message": "Üye" + }, + "update": { + "message": "Güncelle" + }, + "role": { + "message": "Rol" + }, + "canView": { + "message": "Görüntüleyebilir" + }, + "canViewExceptPass": { + "message": "Parolalar hariç görüntüleyebilir" + }, + "canEdit": { + "message": "Düzenleyebilir" + }, + "canEditExceptPass": { + "message": "Parolalar hariç düzenleyebilir" + }, + "group": { + "message": "Grup" + }, + "groupAccessAll": { + "message": "Bu grup tüm kayıtlara erişebilir ve kayıtları değiştirebilir." + }, + "memberAccessAll": { + "message": "Bu kullanıcı tüm kayıtlara erişebilir ve kayıtları değiştirebilir." } } diff --git a/apps/web/src/locales/uk/messages.json b/apps/web/src/locales/uk/messages.json index 37dae125923..babbe3cd7d3 100644 --- a/apps/web/src/locales/uk/messages.json +++ b/apps/web/src/locales/uk/messages.json @@ -467,7 +467,7 @@ "message": "Ви дійсно хочете видалити це вкладення?" }, "attachmentSaved": { - "message": "Вкладення збережено." + "message": "Вкладення збережено" }, "file": { "message": "Файл" @@ -485,7 +485,7 @@ "message": "Запис додано" }, "editedItem": { - "message": "Запис змінено" + "message": "Запис збережено" }, "movedItemToOrg": { "message": "$ITEMNAME$ переміщено до $ORGNAME$", @@ -516,7 +516,7 @@ "message": "Видалити теку" }, "deleteAttachment": { - "message": "Видалити файл" + "message": "Видалити вкладення" }, "deleteItemConfirmation": { "message": "Ви дійсно хочете перенести до смітника?" @@ -534,7 +534,7 @@ "message": "Ви дійсно хочете перезаписати поточний пароль?" }, "editedFolder": { - "message": "Теку змінено" + "message": "Теку збережено" }, "addedFolder": { "message": "Теку додано" @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Необхідно увімкнути вхід з пристроєм у налаштуваннях мобільної програми Bitwarden. Потрібен інший варіант?" }, + "loginWithMasterPassword": { + "message": "Увійти з головним паролем" + }, "createAccount": { "message": "Створити обліковий запис" }, @@ -694,7 +697,7 @@ "message": "Неправильний пароль файлу. Використайте пароль, який ви вводили під час створення експортованого файлу." }, "lockNow": { - "message": "Заблокувати зараз" + "message": "Блокувати зараз" }, "noItemsInList": { "message": "Немає записів." @@ -769,7 +772,7 @@ "message": "Вхід недоступний" }, "noTwoStepProviders": { - "message": "Для цього облікового запису увімкнено двоетапну перевірку. Однак, жоден з налаштованих провайдерів двоетапної перевірки не підтримується цим браузером." + "message": "Для цього облікового запису увімкнено двоетапну перевірку. Однак, жоден із налаштованих провайдерів не підтримується цим браузером." }, "noTwoStepProviders2": { "message": "Будь ласка, скористайтеся підтримуваним браузером (наприклад, Chrome) та/або іншими провайдерами, що краще підтримуються браузерами (наприклад, програма авторизації)." @@ -903,7 +906,7 @@ "message": "Експорт" }, "exportVault": { - "message": "Експорт сховища" + "message": "Експортувати сховище" }, "fileFormat": { "message": "Формат файлу" @@ -951,7 +954,7 @@ "message": "Цей файл захищений паролем. Будь ласка, введіть пароль для імпортування даних." }, "exportSuccess": { - "message": "Дані сховища експортовано." + "message": "Дані сховища експортовано" }, "passwordGenerator": { "message": "Генератор паролів" @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Показувати впізнаване зображення біля кожного запису." }, - "enableGravatars": { - "message": "Показувати Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Використовувати зображення профілю завантажені з gravatar.com." - }, "enableFullWidth": { "message": "Показувати на всю ширину сторінки", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Двоетапна перевірка" }, + "twoStepLoginEnforcement": { + "message": "Обов'язкова двоетапна перевірка" + }, "twoStepLoginDesc": { "message": "Захистіть обліковий запис, вимагаючи додатковий крок перевірки під час входу." }, - "twoStepLoginOrganizationDesc": { - "message": "Вимагати двоетапну перевірку для користувачів вашої організації, змінивши конфігурацію провайдерів на рівні організації." + "twoStepLoginOrganizationDescStart": { + "message": "Зобов'язувати учасників використовувати двоетапну перевірку Bitwarden за допомогою ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Політики двоетапної перевірки" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "Для застосування двоетапної перевірки з Duo, скористайтеся наведеними нижче параметрами." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "Якщо ви вже налаштували чи плануєте налаштувати SSO, двоетапна перевірка може бути вже застосована через вашого провайдера ідентифікації." }, "twoStepLoginRecoveryWarning": { "message": "Увімкнення двоетапної перевірки може цілком заблокувати доступ до облікового запису Bitwarden. Код відновлення дає вам змогу отримати доступ до свого облікового запису у випадку, якщо ви не можете скористатися провайдером двоетапної перевірки (наприклад, якщо втрачено пристрій). Служба підтримки Bitwarden не зможе допомогти відновити доступ до вашого облікового запису. Ми радимо вам записати чи надрукувати цей код відновлення і зберігати його в надійному місці." @@ -1333,10 +1342,10 @@ "message": "Для використання цієї функції необхідна передплата преміум." }, "youHavePremiumAccess": { - "message": "У вас є преміум-доступ" + "message": "У вас є преміумдоступ" }, "alreadyPremiumFromOrg": { - "message": "У вас вже є доступ до преміум-функцій, тому що ви входите до організації, яка вам їх надає." + "message": "У вас вже є доступ до преміумфункцій, тому що ви входите до організації, яка вам їх надає." }, "manage": { "message": "Керувати" @@ -1408,7 +1417,7 @@ "message": "Збережіть форму." }, "twoFactorYubikeyWarning": { - "message": "У зв'язку з обмеженнями платформи, YubiKey не можна використовувати в усіх програмах Bitwarden. Вам слід активувати іншого провайдера двоетапної перевірки, щоб ви могли отримати доступ до свого облікового запису, коли неможливо скористатися YubiKey. Підтримувані платформи:" + "message": "У зв'язку з обмеженнями платформи, YubiKey не можна використовувати в усіх програмах Bitwarden. Вам слід активувати іншого провайдера двоетапної перевірки, щоб мати змогу отримати доступ до свого облікового запису, коли неможливо скористатися YubiKey. Підтримувані платформи:" }, "twoFactorYubikeySupportUsb": { "message": "Веб сховище, програма для комп'ютера, CLI, а також усі розширення браузера на пристроях, де можливо під'єднати YubiKey до USB." @@ -1456,7 +1465,7 @@ "message": "YubiKey оновлено" }, "disableAllKeys": { - "message": "Вимкнути всі ключі" + "message": "Деактивувати всі ключі" }, "twoFactorDuoDesc": { "message": "Введіть інформацію про програму Bitwarden з вашої панелі адміністратора Duo." @@ -1510,7 +1519,7 @@ "message": "Зберегти форму." }, "twoFactorU2fWarning": { - "message": "У зв'язку з обмеженнями платформи, FIDO U2F не можна використовувати в усіх програмах Bitwarden. Вам слід активувати іншого провайдера двоетапної перевірки, щоб ви могли отримати доступ до свого облікового запису, коли неможливо скористатися FIDO U2F. Підтримувані платформи:" + "message": "У зв'язку з обмеженнями платформи, FIDO U2F не можна використовувати в усіх програмах Bitwarden. Вам слід активувати іншого провайдера двоетапної перевірки, щоб мати змогу отримати доступ до свого облікового запису, коли неможливо скористатися FIDO U2F. Підтримувані платформи:" }, "twoFactorU2fSupportWeb": { "message": "Веб сховище і розширення браузера на комп'ютерах і ноутбуках з браузерами, що мають підтримку U2F (Chrome, Opera, Vivaldi, або Firefox з увімкненим FIDO U2F)." @@ -1525,7 +1534,7 @@ "message": "Сталася проблема при читанні ключа безпеки. Спробуйте знову." }, "twoFactorWebAuthnWarning": { - "message": "У зв'язку з обмеженнями платформи, WebAuthn не можна використовувати в усіх програмах Bitwarden. Вам слід активувати іншого провайдера двоетапної перевірки, щоб ви могли отримати доступ до свого облікового запису, коли неможливо скористатися WebAuthn. Підтримувані платформи:" + "message": "У зв'язку з обмеженнями платформи, WebAuthn не можна використовувати в усіх програмах Bitwarden. Вам слід активувати іншого провайдера двоетапної перевірки, щоб мати змогу отримати доступ до свого облікового запису, коли неможливо скористатися WebAuthn. Підтримувані платформи:" }, "twoFactorWebAuthnSupportWeb": { "message": "Веб сховище і розширення браузера на комп'ютерах і ноутбуках з браузерами, що мають підтримку WebAuthn (Chrome, Opera, Vivaldi, або Firefox з увімкненим FIDO U2F)." @@ -1534,7 +1543,7 @@ "message": "Ваш код відновлення двоетапної перевірки Bitwarden" }, "twoFactorRecoveryNoCode": { - "message": "Ви ще не увімкнули жодного провайдера двоетапної перевірки. Після того, як ви це зробите, ви можете повернутися сюди для отримання коду відновлення." + "message": "Ви ще не увімкнули жодного провайдера двоетапної перевірки. Після того, як ви це зробите, можна повернутися сюди для отримання коду відновлення." }, "printCode": { "message": "Друкувати код", @@ -1544,9 +1553,13 @@ "message": "Звіти" }, "reportsDesc": { - "message": "Визначте і закрийте прогалини в безпеці у ваших облікових записах, натиснувши на звіти нижче.", + "message": "Визначте і закрийте прогалини в безпеці ваших облікових записів, натиснувши на звіти нижче.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Визначте і закрийте прогалини в безпеці облікових записів вашої організації, натиснувши на звіти нижче.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Незахищені вебсайти" }, @@ -1572,7 +1585,7 @@ "message": "Неактивна двоетапна перевірка" }, "inactive2faReportDesc": { - "message": "Двоетапна перевірка забезпечує додатковий рівень захисту для ваших облікових записів. Увімкніть двоетапну перевірку з використанням вбудованих засобів Bitwarden для цих облікових записів, або скористайтеся альтернативним способом." + "message": "Двоетапна перевірка забезпечує додатковий рівень захисту для ваших облікових записів. Налаштуйте двоетапну перевірку для цих облікових записів за допомогою вбудованих засобів Bitwarden, або скористайтеся альтернативним способом." }, "inactive2faFound": { "message": "Знайдено записи без двоетапної перевірки" @@ -1587,7 +1600,7 @@ } }, "noInactive2fa": { - "message": "У вашому сховищі не знайдено вебсайтів з неналаштованою двоетапною перевіркою." + "message": "У вашому сховищі не знайдено вебсайтів з неактивною двоетапною перевіркою." }, "instructions": { "message": "Інструкції" @@ -1724,7 +1737,7 @@ "message": "Вебсайт" }, "affectedUsers": { - "message": "Постраждалі користувачі" + "message": "Стосується користувачів" }, "breachOccurred": { "message": "Стався витік даних" @@ -1813,10 +1826,10 @@ "message": "Додатки" }, "premiumAccess": { - "message": "Преміум-доступ" + "message": "Premium" }, "premiumAccessDesc": { - "message": "Ви можете додати преміум-доступ для всіх учасників вашої організації за $PRICE$ /$INTERVAL$.", + "message": "Ви можете додати доступ Premium для всіх учасників вашої організації за $PRICE$ /$INTERVAL$.", "placeholders": { "price": { "content": "$1", @@ -1895,10 +1908,10 @@ "message": "З вас не буде стягнуто кошти протягом 7 днів пробного періоду." }, "creditCard": { - "message": "Кредитна карта" + "message": "Кредитна картка" }, "paypalClickSubmit": { - "message": "Натисніть кнопку PayPal для входу в свій обліковий запис PayPal, потім натисніть кнопку Відправити внизу для продовження." + "message": "Натисніть кнопку PayPal, щоб увійти до свого облікового запису PayPal, потім натисніть кнопку \"Відправити\" для продовження." }, "cancelSubscription": { "message": "Скасувати передплату" @@ -1925,7 +1938,7 @@ "message": "Ви справді хочете скасувати? Ви втратите доступ до всіх можливостей, пов'язаних з нею після завершення поточного періоду передплати." }, "canceledSubscription": { - "message": "Передплату було скасовано." + "message": "Передплату скасовано" }, "neverExpires": { "message": "Необмежений термін дії" @@ -1955,10 +1968,10 @@ "message": "Сховище" }, "addStorage": { - "message": "Додати сховище" + "message": "Збільшити сховище" }, "removeStorage": { - "message": "Вилучити сховище" + "message": "Зменшити сховище" }, "subscriptionStorage": { "message": "Ваша передплата включає всього $MAX_STORAGE$ ГБ зашифрованого сховища файлів. Ви зараз використовуєте $USED_STORAGE$.", @@ -2024,10 +2037,10 @@ } }, "gbStorageAdd": { - "message": "ГБ сховища для додавання" + "message": "ГБ додаткового обсягу сховища" }, "gbStorageRemove": { - "message": "ГБ сховища для вилучення" + "message": "ГБ обсягу сховища вилучається" }, "storageAddNote": { "message": "Додавання сховища призведе до змін суми вашої оплати і негайно буде стягнуто плату способом, зазначеним у файлі. Перша оплата буде пропорційна решті за поточний цикл оплати." @@ -2045,7 +2058,7 @@ } }, "contactSupport": { - "message": "Зв'язатися зі службою підтримки клієнтів" + "message": "Звернутися до служби підтримки клієнтів" }, "updatedPaymentMethod": { "message": "Спосіб оплати оновлено." @@ -2066,7 +2079,7 @@ } }, "uploadLicenseFilePremium": { - "message": "Для оновлення вашого облікового запису до Premium, вам необхідно вивантажити дійсний файл ліцензії." + "message": "Щоб оновити обліковий запис до Premium, вам необхідно вивантажити дійсний файл ліцензії." }, "uploadLicenseFileOrg": { "message": "Для створення організації, розміщеної на локальному хостингу, вам необхідно вивантажити дійсний файл ліцензії." @@ -2099,16 +2112,16 @@ "message": "Користувачі" }, "userSeats": { - "message": "Місця користувачів" + "message": "Місця для користувачів" }, "additionalUserSeats": { - "message": "Додаткові місця користувачів" + "message": "Додаткові місця для користувачів" }, "userSeatsDesc": { - "message": "# місць користувачів" + "message": "# місць для користувачів" }, "userSeatsAdditionalDesc": { - "message": "Ваш тарифний план постачається з $BASE_SEATS$ місць користувачів. Ви можете додати місця для користувачів по ціні $SEAT_PRICE$ за користувача на місяць.", + "message": "Ваш тарифний план включає $BASE_SEATS$ місць для користувачів. Ви можете додати нових користувачів за ціною $SEAT_PRICE$ за одного користувача на місяць.", "placeholders": { "base_seats": { "content": "$1", @@ -2121,7 +2134,7 @@ } }, "userSeatsHowManyDesc": { - "message": "Скільки місць користувачів вам необхідно? При необхідності, ви також можете пізніше додати місця користувачів." + "message": "Скільки вам потрібно місць для користувачів? Згодом ви зможете додати більше місць для користувачів за необхідності." }, "planNameFree": { "message": "Безплатно", @@ -2290,7 +2303,7 @@ "message": "Ваша нова організація готова до використання!" }, "organizationUpgraded": { - "message": "Вашу організацію було оновлено." + "message": "Організацію оновлено" }, "leave": { "message": "Покинути" @@ -2299,7 +2312,7 @@ "message": "Ви справді хочете покинути цю організацію?" }, "leftOrganization": { - "message": "Ви покинули організацію." + "message": "Ви покинули організацію" }, "defaultCollection": { "message": "Типова збірка" @@ -2326,7 +2339,7 @@ "message": "Єдиний вхід" }, "editPolicy": { - "message": "Змінити політику" + "message": "Редагувати політику" }, "groups": { "message": "Групи" @@ -2338,7 +2351,7 @@ "message": "Додати групу" }, "editGroup": { - "message": "Змінити групу" + "message": "Редагувати групу" }, "deleteGroupConfirmation": { "message": "Ви справді хочете видалити цю групу?" @@ -2380,7 +2393,7 @@ "message": "Додати збірку" }, "editCollection": { - "message": "Змінити збірку" + "message": "Редагувати збірку" }, "deleteCollectionConfirmation": { "message": "Ви справді хочете видалити цю збірку?" @@ -2488,19 +2501,19 @@ "message": "Веб сховище" }, "loggedIn": { - "message": "Вхід виконано." + "message": "Вхід виконано" }, "changedPassword": { - "message": "Пароль облікового запису змінено." + "message": "Пароль облікового запису змінено" }, "enabledUpdated2fa": { - "message": "Двоетапну перевірку увімкнено/оновлено." + "message": "Двоетапну перевірку збережено" }, "disabled2fa": { - "message": "Двоетапну перевірку вимкнено." + "message": "Двоетапну перевірку вимкнено" }, "recovered2fa": { - "message": "Обліковий запис відновлено після двоетапної перевірки." + "message": "Для облікового запису вилучено двоетапну перевірку." }, "failedLogin": { "message": "Не вдалося виконати вхід через неправильний пароль." @@ -2509,10 +2522,10 @@ "message": "Не вдалося виконати вхід через невдалу двоетапну перевірку." }, "exportedVault": { - "message": "Експортовано сховище." + "message": "Сховище експортовано" }, "exportedOrganizationVault": { - "message": "Експортовано сховище організації." + "message": "Сховище організації експортовано." }, "editedOrgSettings": { "message": "Налаштування організації змінено." @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Переглянуто номер картки для елемента $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Переглянуто код безпеки запису $ID$.", "placeholders": { @@ -2869,7 +2891,7 @@ "message": "Змінюйте приналежність користувача до груп." }, "invitedUsers": { - "message": "Запрошений користувач." + "message": "Запрошені користувачі" }, "resendInvitation": { "message": "Повторно надіслати запрошення" @@ -2878,7 +2900,7 @@ "message": "Надіслати лист повторно" }, "hasBeenReinvited": { - "message": "$USER$ було повторно запрошено.", + "message": "$USER$ повторно запрошено", "placeholders": { "user": { "content": "$1", @@ -2893,7 +2915,7 @@ "message": "Підтвердити користувача" }, "hasBeenConfirmed": { - "message": "$USER$ було підтверджено.", + "message": "$USER$ підтверджено.", "placeholders": { "user": { "content": "$1", @@ -2926,7 +2948,7 @@ "message": "Знайдіть посилання для підтвердження у своїх поштовій скриньці." }, "emailVerified": { - "message": "Вашу е-пошту було підтверджено." + "message": "Адресу е-пошти підтверджено" }, "emailVerifiedFailed": { "message": "Неможливо підтвердити вашу е-пошту. Спробуйте надіслати нове повідомлення для підтвердження." @@ -2977,7 +2999,7 @@ "message": "Відновити вхід з використанням двоетапної перевірки" }, "twoStepRecoverDisabled": { - "message": "Вхід з використанням двоетапної перевірки було вимкнено." + "message": "Вхід з використанням двоетапної перевірки вимкнено." }, "learnMore": { "message": "Докладніше" @@ -2989,11 +3011,14 @@ "message": "Якщо ваш обліковий запис існує, ми надіслали вам електронне повідомлення з подальшими інструкціями." }, "deleteRecoverConfirmDesc": { - "message": "Ви відправили запит видалення облікового запису Bitwarden. Натисніть на кнопку внизу для підтвердження." + "message": "Ви відправили запит на видалення облікового запису Bitwarden. Натисніть кнопку внизу для підтвердження." }, "myOrganization": { "message": "Моя організація" }, + "organizationInfo": { + "message": "Інформація про організацію" + }, "deleteOrganization": { "message": "Видалити організацію" }, @@ -3025,7 +3050,7 @@ "message": "Організацію і всі пов'язані дані було видалено." }, "organizationUpdated": { - "message": "Організацію оновлено" + "message": "Організацію збережено" }, "taxInformation": { "message": "Інформація про податки" @@ -3071,10 +3096,10 @@ "message": "Оплата з банківського рахунку доступна лише для клієнтів США. Вам необхідно буде засвідчити свій банківський рахунок. Ми зробимо два мікро-депозити протягом наступних 1-2 днів. Введіть ці суми на сторінці оплати організації для підтвердження банківського рахунку." }, "verifyBankAccountFailureWarning": { - "message": "Неможливість засвідчення банківського рахунку призведе до втраченого платежу і ваша передплата залишиться неактивною." + "message": "Якщо не вдасться підтвердити банківський рахунок, платіж не виконається, а вашу передплату буде призупинено." }, "verifiedBankAccount": { - "message": "Банківський рахунок було засвідчено." + "message": "Банківський рахунок підтверджено" }, "bankAccount": { "message": "Банківський рахунок" @@ -3112,10 +3137,10 @@ "message": "Введіть ID вашої інсталяції" }, "limitSubscriptionDesc": { - "message": "Встановіть ліміт місць для вашої передплати. Після досягнення цього ліміту ви не зможете запрошувати нових користувачів." + "message": "Встановіть обмеження кількості місць для вашої передплати. Після досягнення цього обмеження ви не зможете запросити нових користувачів." }, "maxSeatLimit": { - "message": "Максимальний ліміт місць (необов'язково)", + "message": "Обмеження кількості місць (необов'язково)", "description": "Upper limit of seats to allow through autoscaling" }, "maxSeatCost": { @@ -3130,10 +3155,10 @@ "description": "Seat = User Seat" }, "subscriptionDesc": { - "message": "Коригування вашої передплати призведе до відповідних змін у ваших рахунках. Якщо нові запрошені користувачі перевищать обмеження ваших місць, ви відразу отримаєте пропорційний рахунок для оплати за додаткових користувачів." + "message": "Коригування передплати призведе до відповідної зміни суми вашого рахунку. Якщо нові запрошені користувачі перевищать кількість передплачених місць, з вас негайно буде стягнуто пропорційну оплату за додаткових користувачів." }, "subscriptionUserSeats": { - "message": "Ваша передплата дозволяє всього $COUNT$ користувачів.", + "message": "Ваша передплата дозволяє всього $COUNT$ учасників.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "Для отримання додаткової допомоги в керуванні вашою передплатою, будь ласка, зверніться до служби підтримки." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Коригування вашої передплати призведе до відповідних змін у ваших рахунках. Якщо нові запрошені користувачі перевищать обмеження ваших місць, ви відразу отримаєте пропорційний рахунок для оплати за додаткових користувачів." + "message": "Коригування передплати призведе до відповідної зміни суми вашого рахунку. Якщо нові запрошені користувачі перевищать кількість передплачених місць, з вас негайно буде стягнуто пропорційну оплату за додаткових користувачів." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Коригування вашої передплати призведе до відповідних змін у ваших рахунках. Якщо нові запрошені користувачі перевищать обмеження ваших місць, ви відразу отримаєте пропорційний рахунок для оплати за додаткових користувачів, доки не досягнуто вашого обмеження $MAX$ місць.", + "message": "Коригування передплати призведе до відповідної зміни суми вашого рахунку. Якщо нові запрошені користувачі перевищать кількість передплачених місць, з вас негайно буде стягнуто пропорційну оплату за додаткових користувачів, доки не буде досягнуто встановленого вами обмеження $MAX$ місць.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "Ви не можете запросити більше $COUNT$ користувачів без переходу на вищий тарифний план.", + "message": "Ви не можете запросити більш як $COUNT$ учасників, не підвищивши свій тарифний план.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "Ви не можете запросити більше $COUNT$ користувачів без оновлення вашого тарифного плану. Будь ласка, зв'яжіться зі службою підтримки для оновлення.", + "message": "Ви не можете запросити більш як $COUNT$ учасників, не підвищивши свій тарифний план. Будь ласка, зверніться до служби підтримки для оновлення.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Ваша передплата дозволяє всього $COUNT$ користувачів. Ваш тарифний план спонсорується та оплачується сторонньою організацією.", + "message": "Ваша передплата дозволяє всього $COUNT$ учасників. Ваш тарифний план спонсорується та оплачується сторонньою організацією.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Коригування вашої передплати призведе до відповідних змін у ваших рахунках. Ви не можете запросити понад $COUNT$ користувачів без збільшення передплачених місць.", + "message": "Коригування передплати призведе до відповідної зміни суми вашого рахунку. Ви не можете запросити понад $COUNT$ користувачів, не збільшивши кількість передплачених місць.", "placeholders": { "count": { "content": "$1", @@ -3205,16 +3230,16 @@ } }, "seatsToAdd": { - "message": "Додається місць" + "message": "Додаються місця" }, "seatsToRemove": { - "message": "Вилучається місць" + "message": "Вилучаються місця" }, "seatsAddNote": { - "message": "Додавання місць користувачів призведе до змін суми вашого рахунку і одразу ж буде стягнуто плату згідно зазначеного способу. Перша оплата буде пропорційною залишку поточного циклу оплати." + "message": "Додавання місць для користувачів призведе до зміни суми вашого рахунку та негайного платежу з використанням визначеного способу оплати. Перший платіж буде пропорційним залишку поточного платіжного періоду." }, "seatsRemoveNote": { - "message": "Вилучення місць користувачів призведе до змін суми вашого рахунку, що буде пропорційно розділено у вигляді кредитів за наступний цикл оплати." + "message": "Вилучення місць для користувачів призведе до зміни суми вашого рахунку та пропорційного розподілу залишку коштів у вигляді кредитів для наступного платіжного періоду." }, "adjustedSeats": { "message": "Змінено $AMOUNT$ місць користувачів.", @@ -3256,7 +3281,7 @@ "message": "Оновити" }, "upgradeOrganization": { - "message": "Оновити організацію" + "message": "Підвищити рівень організації" }, "upgradeOrganizationDesc": { "message": "Ця функція недоступна для безплатних організацій. Перемкніться на платний тарифний план для розблокування додаткових можливостей." @@ -3328,10 +3353,10 @@ "description": "ex. Date this password was updated" }, "organizationIsDisabled": { - "message": "Організацію вимкнено." + "message": "Організацію призупинено" }, "disabledOrganizationFilterError": { - "message": "Записи у вимкнених організаціях недоступні. Зверніться до власника вашої організації для отримання допомоги." + "message": "Записи у призупинених організаціях недоступні. Зверніться до власника вашої організації для отримання допомоги." }, "licenseIsExpired": { "message": "Термін дії ліцензії завершився." @@ -3407,7 +3432,7 @@ "message": "Фраза відбитка" }, "dontAskFingerprintAgain": { - "message": "Ніколи не питати про перевірку фрази відбитка для запрошених користувачів (Не рекомендовано)", + "message": "Ніколи не вимагати перевірки фрази відбитка у запрошених користувачів (не рекомендовано)", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "free": { @@ -3449,7 +3474,7 @@ "message": "Нам не вдалося виконати оплату з вашої картки. Будь ласка, перегляньте і проведіть оплату за рахунком, вказаним внизу." }, "inAppPurchase": { - "message": "Покупка в додатку" + "message": "Покупка в програмі" }, "cannotPerformInAppPurchase": { "message": "Ви не можете виконати цю дію під час використання способу оплати покупки в додатку." @@ -3476,7 +3501,7 @@ "message": "Зобов'язувати учасників встановлювати двоетапну перевірку." }, "twoStepLoginPolicyWarning": { - "message": "Учасники організації, які не є власниками, чи адміністратори, в яких не увімкнено двоетапну перевірку для їхніх облікових записів, будуть вилучені з організації та проінформовані поштовим повідомленням." + "message": "Учасники організації, які не є власниками чи адміністраторами, і в яких не налаштовано двоетапну перевірку для їхніх облікових записів, будуть вилучені з організації та проінформовані поштовим повідомленням." }, "twoStepLoginPolicyUserWarning": { "message": "Ви включені до організації, яка зобов'язує використання двоетапної перевірки у вашому обліковому записі. Якщо ви вимкнете всі способи двоетапної перевірки, вас буде автоматично вилучено з цієї організації." @@ -3536,7 +3561,7 @@ "message": "Стандартний тип" }, "userPreference": { - "message": "Користувацьке налаштування" + "message": "Налаштовано користувачем" }, "vaultTimeoutAction": { "message": "Дія після часу очікування сховища" @@ -3586,7 +3611,7 @@ } }, "permanentlyDeletedItemId": { - "message": "Запис $ID$ остаточно видалено.", + "message": "Запис $ID$ остаточно видалено", "placeholders": { "id": { "content": "$1", @@ -3625,7 +3650,7 @@ } }, "restoredItemId": { - "message": "Запис $ID$ відновлено.", + "message": "Запис $ID$ відновлено", "placeholders": { "id": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Ідентифікатор організації" }, "ssoLogInWithOrgIdentifier": { - "message": "Виконуйте вхід з використанням порталу єдиного входу вашої організації. Для початку введіть ідентифікатор вашої організації." + "message": "Виконуйте вхід з використанням порталу єдиного входу вашої організації. Щоб почати, введіть SSO-ідентифікатор вашої організації." }, "enterpriseSingleSignOn": { "message": "Єдиний корпоративний вхід (SSO)" @@ -3688,7 +3713,13 @@ "message": "Збій перевірки SSO" }, "ssoIdentifierRequired": { - "message": "Потрібен ідентифікатор організації." + "message": "Потрібен SSO-ідентифікатор організації." + }, + "ssoIdentifier": { + "message": "SSO-ідентифікатор" + }, + "ssoIdentifierHint": { + "message": "Надайте цей ID своїм учасникам для входу з використанням SSO." }, "unlinkSso": { "message": "Від'єднати SSO" @@ -3715,16 +3746,16 @@ "message": "Вимагати авторизацію через єдиний вхід (SSO)" }, "requireSsoPolicyDesc": { - "message": "Зобов'язувати учасників входити в систему через єдиний вхід (SSO) компанії." + "message": "Зобов'язувати учасників входити в систему через єдиний корпоративний вхід (SSO)." }, "prerequisite": { "message": "Передумови" }, "requireSsoPolicyReq": { - "message": "Для активації цієї політики необхідно увімкнути політику єдиної організації компанії." + "message": "Для активації цієї політики необхідно увімкнути політику єдиної організації." }, "requireSsoPolicyReqError": { - "message": "Політику єдиної організації компанії не увімкнено." + "message": "Політику єдиної організації не налаштовано." }, "requireSsoExemption": { "message": "Власники організації та адміністратори звільняються від дотримання цієї політики." @@ -3736,7 +3767,7 @@ "message": "Текст" }, "createSend": { - "message": "Створити нове відправлення", + "message": "Нове відправлення", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { @@ -3744,11 +3775,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Відправлення створено", + "message": "Відправлення збережено", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Відправлення змінено", + "message": "Відправлення збережено", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deletedSend": { @@ -3775,7 +3806,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Термін дії" + "message": "Дата завершення" }, "expirationDateDesc": { "message": "Якщо встановлено, термін дії цього відправлення завершиться у вказаний час.", @@ -4001,7 +4032,7 @@ } }, "emergencyApproved": { - "message": "Екстрений доступ схвалено." + "message": "Екстрений доступ схвалено" }, "emergencyRejected": { "message": "Екстрений доступ відхилено" @@ -4025,20 +4056,20 @@ "message": "Власники організації та адміністратори звільняються від дотримання цієї політики." }, "personalOwnershipSubmitError": { - "message": "У зв'язку з корпоративною політикою, вам не дозволено зберігати записи до особистого сховища. Змініть налаштування власності на організацію та виберіть серед доступних збірок." + "message": "У зв'язку з політикою компанії, вам не дозволено зберігати записи до особистого сховища. Змініть налаштування власності на організацію та виберіть серед доступних збірок." }, "disableSend": { "message": "Вилучити відправлення" }, "disableSendPolicyDesc": { - "message": "Не дозволяти учасникам створювати чи змінювати відправлення.", + "message": "Не дозволяти учасникам створювати чи редагувати відправлення.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Користувачі організації, які можуть керувати політиками організації, звільняються від дотримання цієї політики." + "message": "Учасники організації, які можуть керувати політиками організації, звільняються від дотримання цієї політики." }, "sendDisabled": { - "message": "Відправлення вимкнено", + "message": "Відправлення вилучено", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Користувачі організації, які можуть керувати політиками організації, звільняються від дотримання цієї політики." + "message": "Учасники організації, які можуть керувати політиками організації, звільняються від дотримання цієї політики." }, "disableHideEmail": { "message": "Завжди показувати отримувачам адресу е-пошти учасників під час створення чи редагування відправлень.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Дозволи" }, + "permission": { + "message": "Дозвіл" + }, "managerPermissions": { "message": "Дозволи менеджера" }, @@ -4110,7 +4144,7 @@ "message": "У вас недостатньо повноважень для виконання цієї дії." }, "manageAllCollections": { - "message": "Керування всіма збірками" + "message": "Керувати всіма збірками" }, "createNewCollections": { "message": "Створювати нові збірки" @@ -4122,25 +4156,25 @@ "message": "Видаляти будь-яку збірку" }, "manageAssignedCollections": { - "message": "Керування призначеними збірками" + "message": "Керувати призначеними збірками" }, "editAssignedCollections": { - "message": "Редагувати призначені колекції" + "message": "Редагувати призначені збірки" }, "deleteAssignedCollections": { - "message": "Видаляти призначені колекції" + "message": "Видалити призначені збірки" }, "manageGroups": { "message": "Керування групами" }, "managePolicies": { - "message": "Керування політиками" + "message": "Керувати політиками" }, "manageSso": { "message": "Керування SSO" }, "manageUsers": { - "message": "Керування користувачами" + "message": "Керувати користувачами" }, "manageResetPassword": { "message": "Керувати скиданням пароля" @@ -4158,10 +4192,10 @@ "message": "Політика організації впливає на ваші параметри власності." }, "personalOwnershipPolicyInEffectImports": { - "message": "Політика організації вимкнула імпортування елементів до вашого особистого сховища." + "message": "Політика організації заблокувала імпортування елементів до вашого особистого сховища." }, "personalOwnershipCheckboxDesc": { - "message": "Вимкнути особисту власність для користувачів організації" + "message": "Вилучити особисту власність для учасників організації" }, "textHiddenByDefault": { "message": "При доступі до відправлення типово приховувати текст", @@ -4281,7 +4315,7 @@ "message": "Запит на скидання пароля подано" }, "withdrawPasswordReset": { - "message": "Відмовитись від скидання пароля" + "message": "Відкликати запит на скидання пароля" }, "enrollPasswordResetSuccess": { "message": "Запит успішно подано!" @@ -4290,7 +4324,7 @@ "message": "Відмову успішно прийнято!" }, "eventEnrollPasswordReset": { - "message": "Користувач $ID$ подав запит на допомогу зі скиданням пароля.", + "message": "Користувач $ID$ подав запит на скидання пароля.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "Користувач $ID$ відмовився від допомоги зі скиданням пароля.", + "message": "Користувач $ID$ відмовився від скидання пароля.", "placeholders": { "id": { "content": "$1", @@ -4365,22 +4399,22 @@ "message": "Дозволити адміністраторам скидати головний пароль учасників." }, "resetPasswordPolicyWarning": { - "message": "Користувачі в організації мають виконати самостійне розгортання, або отримати автоматичне розгортання, перш ніж адміністратори зможуть скинути їхній пароль." + "message": "Учасники організації мають подати запит самостійно, або отримати автоматичне подання запиту, перш ніж адміністратори зможуть скинути їхній пароль." }, "resetPasswordPolicyAutoEnroll": { - "message": "Автоматичне розгортання" + "message": "Автоматичне подання запиту" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "Усі користувачі отримають автоматичне розгортання на скидання пароля одразу після схвалення запрошення та не зможуть його відкликати." + "message": "Для всіх учасників буде автоматично подано запит на скидання пароля одразу після схвалення запрошення без можливості його відкликання." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Вже наявні користувачі організації не отримають активного розгортання на скидання пароля. Їм необхідно буде виконати самостійне розгортання, перш ніж адміністратори зможуть скинути їхній пароль." + "message": "Вже наявні учасники організації не отримають запиту на скидання пароля. Їм необхідно буде самостійно подати запит, перш ніж адміністратори зможуть скинути їхній пароль." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Вимагати автоматичне розгортання нових користувачів" + "message": "Вимагати у нових учасників автоматичне подання запиту" }, "resetPasswordAutoEnrollInviteWarning": { - "message": "Ця організація має корпоративну політику, яка автоматично розгортає вас на скидання пароля. Розгортання дозволятиме адміністраторам організації змінювати ваш головний пароль." + "message": "Ця організація має політику, яка автоматично подає запит для вас на скидання пароля. Подання запиту дозволятиме адміністраторам організації змінювати ваш головний пароль." }, "resetPasswordOrgKeysError": { "message": "Порожня відповідь на ключі організації" @@ -4389,10 +4423,10 @@ "message": "Порожня відповідь на скидання пароля" }, "trashCleanupWarning": { - "message": "Записи, що знаходяться в смітнику понад 30 днів, автоматично видалятимуться." + "message": "Елементи, що знаходяться в смітнику понад 30 днів, автоматично видалятимуться." }, "trashCleanupWarningSelfHosted": { - "message": "Записи, що знаходяться в смітнику деякий час, автоматично видалятимуться." + "message": "Елементи, що знаходяться в смітнику деякий час, автоматично видалятимуться." }, "passwordPrompt": { "message": "Повторний запит головного пароля" @@ -4443,10 +4477,10 @@ "message": "Стан масової дії" }, "bulkConfirmMessage": { - "message": "Успішно підтверджено." + "message": "Успішно підтверджено" }, "bulkReinviteMessage": { - "message": "Повторне запрошення успішне." + "message": "Повторне запрошення успішне" }, "bulkRemovedMessage": { "message": "Успішно вилучено" @@ -4458,7 +4492,7 @@ "message": "Доступ до організації успішно відновлено" }, "bulkFilteredMessage": { - "message": "Виключено, не застосовується для цієї дії." + "message": "Виключено, не застосовується для цієї дії" }, "fingerprint": { "message": "Цифровий відбиток" @@ -4476,7 +4510,7 @@ "message": "Помилка" }, "resetPasswordManageUsers": { - "message": "Керування користувачами має також бути увімкнено з дозволом Керувати скиданням пароля" + "message": "Разом із дозволом на керування скиданням пароля також необхідно надати дозвіл на керування користувачами" }, "setupProvider": { "message": "Налаштування постачальника" @@ -4485,22 +4519,26 @@ "message": "Вас запрошено налаштувати нового постачальника. Для продовження вам необхідно увійти чи створити новий обліковий запис Bitwarden." }, "setupProviderDesc": { - "message": "Будь ласка, введіть наведені нижче подробиці, щоб завершити налаштування постачальника. Зверніться до служби підтримки, якщо у вас виникли будь-які запитання." + "message": "Будь ласка, введіть зазначену нижче інформацію, щоб завершити налаштування постачальника. Зверніться до служби підтримки, якщо у вас виникли будь-які запитання." }, "providerName": { "message": "Назва постачальника" }, "providerSetup": { - "message": "Постачальника було налаштовано." + "message": "Постачальника успішно налаштовано" }, "clients": { "message": "Клієнти" }, + "client": { + "message": "Клієнт", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Адміністратор постачальника" }, "providerAdminDesc": { - "message": "Користувач з найвищими привілеями, який може керувати усіма аспектами вашого постачальника, а також отримувати доступ до керування організаціями клієнтів." + "message": "Користувач із найвищими привілеями, який може керувати усіма аспектами вашого постачальника, а також отримувати доступ і керувати організаціями клієнтів." }, "serviceUser": { "message": "Сервісний користувач" @@ -4524,7 +4562,7 @@ "message": "Ви можете отримати доступ до цього постачальника одразу після підтвердження адміністратором. Ми надішлемо вам електронне повідомлення, коли це станеться." }, "providerUsersNeedConfirmed": { - "message": "У вас є користувачі, які підтвердили ваше запрошення, але все ще мають бути схвалені. Користувачі не матимуть доступу до постачальника доки ви їх не затвердите." + "message": "У вас є користувачі, які прийняли запрошення, але все ще мають бути підтверджені. Користувачі не матимуть доступу до постачальника доки ви їх не затвердите." }, "provider": { "message": "Постачальник" @@ -4567,10 +4605,10 @@ } }, "providerIsDisabled": { - "message": "Постачальника вимкнено." + "message": "Постачальника призупинено" }, "providerUpdated": { - "message": "Постачальника оновлено" + "message": "Постачальника збережено" }, "yourProviderIs": { "message": "Ваш постачальник $PROVIDER$. Він має адміністраторські та платіжні повноваження для вашої організації.", @@ -4591,19 +4629,19 @@ } }, "detachOrganizationConfirmation": { - "message": "Ви дійсно хочете від'єднати цю організацію? Організація продовжить існувати, але більше не керуватиметься провайдером." + "message": "Ви дійсно хочете від'єднати цю організацію? Організація продовжить існувати, але більше не керуватиметься постачальником." }, "add": { "message": "Додати" }, "updatedMasterPassword": { - "message": "Головний пароль оновлено" + "message": "Головний пароль збережено" }, "updateMasterPassword": { "message": "Оновити головний пароль" }, "updateMasterPasswordWarning": { - "message": "Ваш головний пароль нещодавно був змінений адміністратором організації. Щоб отримати доступ до сховища, вам необхідно оновити свій головний пароль зараз. Продовживши, ви вийдете з поточного сеансу, після чого потрібно буде повторно виконати вхід. Сеанси на інших пристроях можуть залишатися активними протягом однієї години." + "message": "Ваш головний пароль нещодавно було змінено адміністратором організації. Щоб отримати доступ до сховища, вам необхідно оновити свій головний пароль зараз. Продовживши, ви вийдете з поточного сеансу, після чого потрібно буде повторно виконати вхід. Сеанси на інших пристроях можуть залишатися активними протягом однієї години." }, "masterPasswordInvalidWarning": { "message": "Ваш головний пароль не відповідає вимогам політики цієї організації. Щоб приєднатися до організації, необхідно оновити свій головний пароль зараз. Продовживши, ви вийдете з поточного сеансу, після чого потрібно буде повторно виконати вхід. Сеанси на інших пристроях можуть залишатися активними протягом однієї години." @@ -4658,13 +4696,13 @@ "message": "Заборонити учасникам експортувати дані їхнього особистого сховища." }, "vaultExportDisabled": { - "message": "Експорт сховища вимкнено" + "message": "Експорт сховища вилучено" }, "personalVaultExportPolicyInEffect": { - "message": "Одна чи декілька організаційних політик не дозволяють вам експортувати особисте сховище." + "message": "Одна чи декілька політик організації не дозволяють вам експортувати особисте сховище." }, "selectType": { - "message": "Виберіть тип SSO" + "message": "Оберіть тип SSO" }, "type": { "message": "Тип" @@ -4676,13 +4714,13 @@ "message": "Конфігурація постачальника послуг SAML" }, "samlIdpConfig": { - "message": "Конфігурація ідентифікації постачальника SAML" + "message": "Конфігурація постачальника ідентифікації SAML" }, "callbackPath": { "message": "Шлях до зворотного виклику" }, "signedOutCallbackPath": { - "message": "Вихід зі шляху зворотного виклику" + "message": "Виконано вихід зі шляху зворотного виклику" }, "authority": { "message": "Установа" @@ -4715,10 +4753,10 @@ "message": "Типи запитів власного імені" }, "acrValues": { - "message": "Запитані значення посилання класу контексту автентифікації" + "message": "Запитані пов'язані значення класу контексту автентифікації" }, "expectedReturnAcrValue": { - "message": "Очікувалось значення запиту \"acr\" у відповіді" + "message": "Очікується значення \"acr\" у відповіді на запит" }, "spEntityId": { "message": "ID об'єкта SP" @@ -4736,7 +4774,7 @@ "message": "Алгоритм вихідного підпису" }, "spSigningBehavior": { - "message": "Поведінка при підписанні" + "message": "Поведінка підписання" }, "spMinIncomingSigningAlgorithm": { "message": "Мінімальний алгоритм вхідного підписання" @@ -4775,7 +4813,7 @@ "message": "Підписувати запити авторизації" }, "ssoSettingsSaved": { - "message": "Конфігурацію єдиного входу збережено." + "message": "Конфігурацію єдиного входу збережено" }, "sponsoredFamilies": { "message": "Bitwarden Families безплатно" @@ -4820,10 +4858,10 @@ "message": "Прийняти пропозицію для наявної організації або створити нову сімейну організацію." }, "setupSponsoredFamiliesLoginDesc": { - "message": "Вам запропоновано безплатний тарифний план Bitwarden Families від організації. Щоб продовжити, вам необхідно увійти в обліковий запис, на який вам прийшла пропозиція." + "message": "Вам запропоновано безплатний тарифний план Bitwarden Families від організації. Щоб продовжити, вам необхідно увійти в обліковий запис, на який прийшла пропозиція." }, "sponsoredFamiliesAcceptFailed": { - "message": "Не вдалося прийняти пропозицію. Будь ласка, повторно надішліть лист з пропозицією зі свого корпоративного облікового запису та спробуйте знову." + "message": "Не вдалося прийняти пропозицію. Будь ласка, повторно надішліть лист із пропозицією зі свого корпоративного облікового запису та спробуйте знову." }, "sponsoredFamiliesAcceptFailedShort": { "message": "Не вдалося прийняти пропозицію. $DESCRIPTION$", @@ -4934,7 +4972,7 @@ "message": "Вилучити головний пароль" }, "removedMasterPassword": { - "message": "Головний пароль вилучено." + "message": "Головний пароль вилучено" }, "allowSso": { "message": "Дозволити авторизацію SSO" @@ -4967,10 +5005,10 @@ "message": "Key Connector" }, "memberDecryptionKeyConnectorDesc": { - "message": "Під'єднайте вхід з SSO до свого власного сервера ключів розшифрування. Скориставшись цією можливістю, учасникам не потрібен буде головний пароль для розшифрування даних сховища. Для отримання допомоги з налаштуванням зв'яжіться зі службою підтримки Bitwarden." + "message": "Під'єднайте вхід із SSO до власного сервера ключів розшифрування. Скориставшись цією можливістю, учасникам не потрібен буде головний пароль для розшифрування даних сховища. Для отримання допомоги з налаштуванням зв'яжіться зі службою підтримки Bitwarden." }, "keyConnectorPolicyRestriction": { - "message": "\"Вхід з SSO та розшифрування Key Connector\" увімкнено. Ця політика застосовується лише для власників та адміністраторів." + "message": "\"Вхід із SSO та розшифрування Key Connector\" увімкнено. Ця політика застосовується лише для власників та адміністраторів." }, "enabledSso": { "message": "SSO увімкнено" @@ -5003,7 +5041,7 @@ "message": "Прийняти пропозицію" }, "sponsoringOrg": { - "message": "Організація спонсорування" + "message": "Спонсорська організація" }, "keyConnectorTest": { "message": "Тест" @@ -5024,10 +5062,10 @@ "message": "Переглянути токен платіжної синхронізації" }, "generateBillingSyncToken": { - "message": "Згенерувати токен платіжної синхронізації" + "message": "Генерувати токен платіжної синхронізації" }, "copyPasteBillingSync": { - "message": "Скопіюйте і вставте цей токен у налаштування платіжної синхронізації своєї власної розміщеної організації." + "message": "Скопіюйте і вставте цей токен у налаштування платіжної синхронізації власної розміщеної організації." }, "billingSyncCanAccess": { "message": "Ваш токен платіжної синхронізації може отримувати доступ і редагувати налаштування передплати цієї організації." @@ -5057,7 +5095,7 @@ "message": "Щоб налаштувати свою організацію на власному сервері, вам необхідно вивантажити файл ліцензії. Для підтримки безплатних сімейних тарифних планів та розширених можливостей власної розміщеної організації, вам необхідно налаштувати платіжну синхронізацію." }, "billingSyncApiKeyRotated": { - "message": "Токен оновлено." + "message": "Токен оновлено" }, "billingSync": { "message": "Платіжна синхронізація" @@ -5078,13 +5116,13 @@ "message": "Неактивний" }, "sentAwaitingSync": { - "message": "Надіслано (Очікується синхронізація)" + "message": "Надіслано (очікується синхронізація)" }, "sent": { "message": "Надіслано" }, "requestRemoved": { - "message": "Вилучено (Очікується синхронізація)" + "message": "Вилучено (очікується синхронізація)" }, "requested": { "message": "Запитано" @@ -5285,7 +5323,7 @@ "description": "Part of a URL." }, "apiAccessToken": { - "message": "Токен доступу до АРІ" + "message": "Токен доступу до API" }, "deviceVerification": { "message": "Перевірка пристрою" @@ -5294,7 +5332,7 @@ "message": "Увімкнути перевірку пристрою" }, "deviceVerificationDesc": { - "message": "Якщо увімкнено, на вашу електронну пошту надсилаються коди підтвердження при вході з нового пристрою" + "message": "Якщо увімкнено, на вашу електронну пошту надсилаються коди підтвердження під час входу з нового пристрою" }, "updatedDeviceVerification": { "message": "Оновлена перевірка пристрою" @@ -5331,11 +5369,11 @@ "message": "Цей ключ API має доступ до керування користувачами в межах вашої організації. Його необхідно надійно зберігати." }, "copyScimKey": { - "message": "Копіювати ключ API для SCIM до буфера обміну", + "message": "Копіювати ключ SCIM API до буфера обміну", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKey": { - "message": "Оновити ключ API для SCIM", + "message": "Оновити ключ SCIM API", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKeyWarning": { @@ -5346,7 +5384,7 @@ "message": "Оновити ключ" }, "scimApiKey": { - "message": "Ключ API для SCIM", + "message": "Ключ SCIM API", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "copyScimUrl": { @@ -5358,11 +5396,11 @@ "description": "the text, 'SCIM' and 'URL', are acronymns and should not be translated." }, "scimApiKeyRotated": { - "message": "Ключ API для SCIM було успішно оновлено", + "message": "Ключ SCIM API успішно оновлено", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "scimSettingsSaved": { - "message": "Налаштування SCIM було успішно збережено", + "message": "Налаштування SCIM збережено", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "inputRequired": { @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Вхідне значення не повинно перевищувати $COUNT$ символів.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ поле (поля) вище потребують вашої уваги.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "Увімкнено" }, + "members": { + "message": "Учасники" + }, + "reporting": { + "message": "Звіти" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Кількість користувачів" }, + "loggingInAs": { + "message": "Вхід у систему як" + }, + "notYou": { + "message": "Не ви?" + }, "multiSelectPlaceholder": { "message": "-- Введіть для фільтрування --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Очистити все" + }, + "from": { + "message": "Від" + }, + "to": { + "message": "До" + }, + "member": { + "message": "Учасник" + }, + "update": { + "message": "Оновити" + }, + "role": { + "message": "Роль" + }, + "canView": { + "message": "Може переглядати" + }, + "canViewExceptPass": { + "message": "Може переглядати, крім паролів" + }, + "canEdit": { + "message": "Може редагувати" + }, + "canEditExceptPass": { + "message": "Може редагувати, крім паролів" + }, + "group": { + "message": "Група" + }, + "groupAccessAll": { + "message": "Ця група має доступ і може редагувати всі елементи." + }, + "memberAccessAll": { + "message": "Цей учасник має доступ і може редагувати всі елементи." } } diff --git a/apps/web/src/locales/vi/messages.json b/apps/web/src/locales/vi/messages.json index a031f4b0290..78301d7d0b0 100644 --- a/apps/web/src/locales/vi/messages.json +++ b/apps/web/src/locales/vi/messages.json @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "Log in with device must be set up in the settings of the Bitwarden mobile app. Need another option?" }, + "loginWithMasterPassword": { + "message": "Log in with master password" + }, "createAccount": { "message": "Tạo tài khoản" }, @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, - "enableGravatars": { - "message": "Show Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "Use avatar images loaded from gravatar.com." - }, "enableFullWidth": { "message": "Display full width layout", "description": "Allows scaling the web vault UI's width" @@ -1294,11 +1290,24 @@ "twoStepLogin": { "message": "Xác thực 2 bước" }, + "twoStepLoginEnforcement": { + "message": "Two-step Login Enforcement" + }, "twoStepLoginDesc": { "message": "Bảo mật tài khoản bằng các phương pháp sau khi đăng nhập." }, - "twoStepLoginOrganizationDesc": { - "message": "Require two-step login for your organization's users by configuring providers at the organization level." + "twoStepLoginOrganizationDescStart": { + "message": "Enforce Bitwarden Two-step Login options for members by using the ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "Two-step Login Policy" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "To enforce Two-step Login through Duo, use the options below." + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "If you have setup SSO or plan to, Two-step Login may already be enforced through your Identity Provider." }, "twoStepLoginRecoveryWarning": { "message": "Setting up two-step login can permanently lock you out of your Bitwarden account. A recovery code allows you to access your account in the event that you can no longer use your normal two-step login provider (example: you lose your device). Bitwarden support will not be able to assist you if you lose access to your account. We recommend you write down or print the recovery code and keep it in a safe place." @@ -1547,6 +1556,10 @@ "message": "Identify and close security gaps in your online accounts by clicking the reports below.", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "Identify and close security gaps in your organization's accounts by clicking the reports below.", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "Báo cáo trang web không an toàn" }, @@ -2491,7 +2504,7 @@ "message": "Logged in" }, "changedPassword": { - "message": "Account password saved" + "message": "Changed account password" }, "enabledUpdated2fa": { "message": "Two-step login saved" @@ -2500,7 +2513,7 @@ "message": "Đã tắt đăng nhập 2 bước." }, "recovered2fa": { - "message": "Account recovered from two-step login" + "message": "Recovered account from two-step login." }, "failedLogin": { "message": "Login attempt failed with incorrect password." @@ -2512,10 +2525,10 @@ "message": "Vault exported" }, "exportedOrganizationVault": { - "message": "Organization vault exported" + "message": "Exported organization vault." }, "editedOrgSettings": { - "message": "Organization settings saved" + "message": "Edited organization settings." }, "createdItemId": { "message": "Created item $ID$.", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "Viewed Card Number for item $ID$.", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "Viewed security code for item $ID$.", "placeholders": { @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "My organization" }, + "organizationInfo": { + "message": "Organization info" + }, "deleteOrganization": { "message": "Delete organization" }, @@ -3112,7 +3137,7 @@ "message": "Enter your installation id" }, "limitSubscriptionDesc": { - "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new users." + "message": "Set a seat limit for your subscription. Once this limit is reached, you will not be able to invite new members." }, "maxSeatLimit": { "message": "Seat Limit (optional)", @@ -3133,7 +3158,7 @@ "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." }, "subscriptionUserSeats": { - "message": "Your subscription allows for a total of $COUNT$ users.", + "message": "Your subscription allows for a total of $COUNT$ members.", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "For additional help in managing your subscription, please contact Customer Support." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan.", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.", + "message": "You cannot invite more than $COUNT$ members without upgrading your plan. Please contact Customer Support to upgrade.", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "Your subscription allows for a total of $COUNT$ users. Your plan is sponsored and billed to an external organization.", + "message": "Your subscription allows for a total of $COUNT$ members. Your plan is sponsored and billed to an external organization.", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.", + "message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ members without increasing your subscription seats.", "placeholders": { "count": { "content": "$1", @@ -3667,7 +3692,7 @@ "message": "Organization identifier" }, "ssoLogInWithOrgIdentifier": { - "message": "Log in using your organization's single sign-on portal. Please enter your organization's identifier to begin." + "message": "Log in using your organization's single sign-on portal. Please enter your organization's SSO identifier to begin." }, "enterpriseSingleSignOn": { "message": "Enterprise single sign-on" @@ -3688,7 +3713,13 @@ "message": "SSO validation failed" }, "ssoIdentifierRequired": { - "message": "Organization identifier is required." + "message": "Organization SSO identifier is required." + }, + "ssoIdentifier": { + "message": "SSO identifier" + }, + "ssoIdentifierHint": { + "message": "Provide this ID to your members to login with SSO." }, "unlinkSso": { "message": "Unlink SSO" @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "sendDisabled": { "message": "Đã tắt Send", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "Organization users that can manage the organization's policies are exempt from this policy's enforcement." + "message": "Organization members that can manage the organization's policies are exempt from this policy's enforcement." }, "disableHideEmail": { "message": "Always show member’s email address with recipients when creating or editing a Send.", @@ -4091,6 +4122,9 @@ "permissions": { "message": "Permissions" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "Manager Permissions" }, @@ -4290,7 +4324,7 @@ "message": "Withdrawal success!" }, "eventEnrollPasswordReset": { - "message": "User $ID$ enrolled in password reset assistance.", + "message": "User $ID$ enrolled in password reset.", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "User $ID$ withdrew from password reset.", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "Allow admins to reset master passwords for members." }, "resetPasswordPolicyWarning": { - "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." + "message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic enrollment" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." + "message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "Require new users to be enrolled automatically" + "message": "Require new members to be enrolled automatically" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an Enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -4496,6 +4530,10 @@ "clients": { "message": "Clients" }, + "client": { + "message": "Client", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "Provider admin" }, @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "$COUNT$ field(s) above need your attention.", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "On" }, + "members": { + "message": "Members" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "Số lượng người dùng" }, + "loggingInAs": { + "message": "Logging in as" + }, + "notYou": { + "message": "Not you?" + }, "multiSelectPlaceholder": { "message": "-- Type to Filter --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "Clear all" + }, + "from": { + "message": "From" + }, + "to": { + "message": "To" + }, + "member": { + "message": "Member" + }, + "update": { + "message": "Update" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "This group can access and modify all items." + }, + "memberAccessAll": { + "message": "This member can access and modify all items." } } diff --git a/apps/web/src/locales/zh_CN/messages.json b/apps/web/src/locales/zh_CN/messages.json index 96a036ebc67..1dc1bc6d132 100644 --- a/apps/web/src/locales/zh_CN/messages.json +++ b/apps/web/src/locales/zh_CN/messages.json @@ -62,7 +62,7 @@ "message": "过期日" }, "securityCode": { - "message": "安全码(CVV)" + "message": "安全码 (CVV)" }, "identityName": { "message": "身份名称" @@ -137,13 +137,13 @@ "message": "博士" }, "expirationMonth": { - "message": "过期月份" + "message": "到期月份" }, "expirationYear": { - "message": "过期年份" + "message": "到期年份" }, "authenticatorKeyTotp": { - "message": "验证器密钥(TOTP)" + "message": "验证器密钥 (TOTP)" }, "folder": { "message": "文件夹" @@ -425,7 +425,7 @@ "message": "我" }, "myVault": { - "message": "密码库" + "message": "我的密码库" }, "allVaults": { "message": "所有密码库" @@ -467,7 +467,7 @@ "message": "您确定要删除此附件吗?" }, "attachmentSaved": { - "message": "附件已保存。" + "message": "附件已保存" }, "file": { "message": "文件" @@ -485,7 +485,7 @@ "message": "项目已添加" }, "editedItem": { - "message": "项目已编辑" + "message": "项目已保存" }, "movedItemToOrg": { "message": "$ITEMNAME$ 已移动到 $ORGNAME$", @@ -519,7 +519,7 @@ "message": "删除附件" }, "deleteItemConfirmation": { - "message": "您确定要删除此项目吗?" + "message": "您确定要将其发送到回收站吗?" }, "deletedItem": { "message": "项目已发送到回收站" @@ -534,7 +534,7 @@ "message": "您确定要覆盖当前密码吗?" }, "editedFolder": { - "message": "文件夹已编辑" + "message": "文件夹已保存" }, "addedFolder": { "message": "文件夹已添加" @@ -567,7 +567,7 @@ "message": "否" }, "loginOrCreateNewAccount": { - "message": "登录或者新建一个账户来访问您的安全密码库。" + "message": "登录或者创建一个账户来访问您的安全密码库。" }, "loginWithDevice": { "message": "使用设备登录" @@ -575,6 +575,9 @@ "loginWithDeviceEnabledInfo": { "message": "设备登录必须在 Bitwarden 移动应用程序的设置中启用。需要其他选项吗?" }, + "loginWithMasterPassword": { + "message": "使用主密码登录" + }, "createAccount": { "message": "创建账户" }, @@ -594,7 +597,7 @@ "message": "提交" }, "emailAddressDesc": { - "message": "您将使用您的电子邮件地址登录。" + "message": "使用您的电子邮件地址登录。" }, "yourName": { "message": "您的姓名" @@ -612,10 +615,10 @@ "message": "主密码忘记后,将无法恢复!" }, "masterPassHintDesc": { - "message": "主密码提示可以在你忘记密码时帮你回忆起来。" + "message": "主密码提示可以在您忘记密码时帮您回忆起来。" }, "reTypeMasterPass": { - "message": "确认主密码" + "message": "再次输入主密码" }, "masterPassHint": { "message": "主密码提示(可选)" @@ -630,7 +633,7 @@ "message": "密码提示" }, "enterEmailToGetHint": { - "message": "请输入您账号的电子邮件地址来接收主密码提示。" + "message": "请输入您账户的电子邮件地址来接收主密码提示。" }, "getMasterPasswordHint": { "message": "获取主密码提示" @@ -645,7 +648,7 @@ "message": "必须填写主密码。" }, "confirmMasterPasswordRequired": { - "message": "必须填写确认主密码。" + "message": "必须再次输入主密码。" }, "masterPasswordMinlength": { "message": "主密码至少需要 8 个字符。" @@ -778,13 +781,13 @@ "message": "两步登录选项" }, "recoveryCodeDesc": { - "message": "失去对您所有的双重身份验证设备的访问?请使用您的恢复代码来禁用您账户中所有的两步登录提供程序。" + "message": "失去对您所有的双重身份验证设备的访问?请使用您的恢复代码来停用您账户中所有的两步登录提供程序。" }, "recoveryCodeTitle": { "message": "恢复代码" }, "authenticatorAppTitle": { - "message": "认证器 App" + "message": "验证器应用" }, "authenticatorAppDesc": { "message": "使用验证器应用(例如 Authy 或 Google Authenticator)来生成基于时间的验证码。", @@ -805,7 +808,7 @@ "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "u2fDesc": { - "message": "使用任何支持 FIDO U2F 的安全钥匙来访问您的账户。" + "message": "使用任何 FIDO U2F 兼容的安全钥匙访问您的账户。" }, "u2fTitle": { "message": "FIDO U2F 安全钥匙" @@ -814,7 +817,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "使用任何启用了 WebAuthn 的安全钥匙访问您的账户。" + "message": "使用任何 WebAuthn 兼容的安全钥匙访问您的帐户。" }, "webAuthnMigrated": { "message": "(迁移自 FIDO)" @@ -888,13 +891,13 @@ "message": "警告" }, "confirmVaultExport": { - "message": "确认导出密码库" + "message": "确认密码库导出" }, "exportWarningDesc": { "message": "导出的密码库数据包含未加密格式。您不应该通过不安全的渠道(例如电子邮件)来存储或发送导出的文件。用完后请立即将其删除。" }, "encExportKeyWarningDesc": { - "message": "此导出将使用您账户的加密密钥来加密您的数据。 如果您曾经轮换过账户的加密密钥,您应将其重新导出,否则您将无法解密导出的文件。" + "message": "此导出使用您账户的加密密钥来加密您的数据。如果您曾经轮换过账户的加密密钥,您应将其重新导出,否则您将无法解密导出的文件。" }, "encExportAccountWarningDesc": { "message": "账户加密密钥对每个 Bitwarden 用户账户都是唯一的,所以您不能将加密的导出导入到另一个账户。" @@ -951,7 +954,7 @@ "message": "此文件受密码保护。请输入文件密码以导入数据。" }, "exportSuccess": { - "message": "已经导出您的密码库数据。" + "message": "密码库数据已导出" }, "passwordGenerator": { "message": "密码生成器" @@ -1013,10 +1016,10 @@ "description": "To clear something out. Example: To clear browser history." }, "accountUpdated": { - "message": "帐户已更新" + "message": "账户已保存" }, "changeEmail": { - "message": "更改电子邮件" + "message": "修改电子邮件地址" }, "changeEmailTwoFactorWarning": { "message": "继续操作将更改您的账户电子邮件地址。这不会更改用于双重身份验证的电子邮件地址。您可以在两步登录设置中更改它。" @@ -1040,7 +1043,7 @@ "message": "接下来将会注销您当前的会话,要求您重新登录。其他设备上的活动会话可能会继续保持最多一小时。" }, "emailChanged": { - "message": "电子邮件已更改" + "message": "电子邮件已保存" }, "logBackIn": { "message": "请重新登录。" @@ -1052,7 +1055,7 @@ "message": "修改主密码" }, "masterPasswordChanged": { - "message": "主密码已修改" + "message": "主密码已保存" }, "currentMasterPass": { "message": "当前主密码" @@ -1094,7 +1097,7 @@ "message": "更改 KDF" }, "encKeySettingsChanged": { - "message": "加密密钥设置已更改" + "message": "加密密钥设置已保存" }, "dangerZone": { "message": "危险操作区" @@ -1112,7 +1115,7 @@ "message": "接下来将会注销您当前的会话,并要求您重新登录。如果有设置两步登录,也需要重新认证。其他设备上的活动会话可能会继续保持最多一小时。" }, "sessionsDeauthorized": { - "message": "已取消会话授权" + "message": "已取消所有会话授权" }, "purgeVault": { "message": "清空密码库" @@ -1133,7 +1136,7 @@ "message": "清空密码库是永久性的。不能被撤消。" }, "vaultPurged": { - "message": "你的密码库已经被清空。" + "message": "密码库已清空。" }, "deleteAccount": { "message": "删除账户" @@ -1160,13 +1163,13 @@ "message": "导入数据" }, "importError": { - "message": "导入错误" + "message": "导入出错" }, "importErrorDesc": { "message": "您尝试导入的数据有问题。请解决如下列出的源文件中的错误,然后重试。" }, "importSuccess": { - "message": "数据已经成功导入到密码库" + "message": "数据导入成功" }, "importWarning": { "message": "您正在将数据导入到 $ORGANIZATION$。您的数据可能会与此组织中的成员共享。是否继续?", @@ -1196,7 +1199,7 @@ "message": "选择文件" }, "noFileChosen": { - "message": "没有选择文件" + "message": "未选择文件" }, "orCopyPasteFileContents": { "message": "或复制/粘贴要导入的文件内容" @@ -1221,7 +1224,7 @@ "message": "自定义您的网页版密码库。" }, "preferencesUpdated": { - "message": "偏好设置已更新" + "message": "偏好设置已保存" }, "language": { "message": "语言" @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "在每个登录旁显示一个可识别的图像。" }, - "enableGravatars": { - "message": "显示 Gravatar 头像", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "使用从 gravatar.com 加载的头像图像。" - }, "enableFullWidth": { "message": "显示全宽布局", "description": "Allows scaling the web vault UI's width" @@ -1289,16 +1285,29 @@ } }, "domainsUpdated": { - "message": "域名已更新" + "message": "域名已保存" }, "twoStepLogin": { "message": "两步登录" }, + "twoStepLoginEnforcement": { + "message": "强制两步登录" + }, "twoStepLoginDesc": { "message": "在登录时要求使用额外的步骤来保护您的账户。" }, - "twoStepLoginOrganizationDesc": { - "message": "在组织机构层面配置提供程序,以要求你组织的用户采用两步登录。" + "twoStepLoginOrganizationDescStart": { + "message": "要强制成员使用 Bitwarden 两步登录选项,请使用 ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "两步登录策略" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "要强制 Duo 方式的两步登录,请使用下面的选项。" + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "如果您已设置或计划设置 SSO,两步登录可能已经通过您的身份提供程序强制执行了。" }, "twoStepLoginRecoveryWarning": { "message": "启用两步登录可能会将您永久锁定在 Bitwarden 账户之外。如果您无法使用常规的两步登录提供程序(例如您丢失了设备),则可以使用恢复代码访问您的账户。如果您失去对您账户的访问,Bitwarden 支持也无法帮助您。我们建议您记下或打印恢复代码,并将其妥善保管。" @@ -1314,7 +1323,7 @@ "message": "启用" }, "enabled": { - "message": "启用" + "message": "已启用" }, "restoreAccess": { "message": "恢复访问权限" @@ -1387,13 +1396,13 @@ "message": "如果您要把它添加到另一个设备,下面是您的验证器应用所需要的二维码(或密钥)。" }, "twoStepDisableDesc": { - "message": "您确定要禁用此两步登录提供程序吗?" + "message": "您确定要停用此两步登录提供程序吗?" }, "twoStepDisabled": { - "message": "此两步登录提供程序已禁用。" + "message": "此两步登录提供程序已停用。" }, "twoFactorYubikeyAdd": { - "message": "将新的 YubiKey 添加到您的账户" + "message": "添加一个新的 YubiKey 到您的帐户" }, "twoFactorYubikeyPlugIn": { "message": "将 YubiKey 插入您电脑的 USB 端口。" @@ -1483,7 +1492,7 @@ "message": "发送电子邮件" }, "twoFactorU2fAdd": { - "message": "在您的账户中添加 FIDO U2F 安全钥匙" + "message": "添加一个 FIDO U2F 安全钥匙到您的帐户" }, "removeU2fConfirmation": { "message": "您确认要删除这个安全钥匙吗?" @@ -1513,28 +1522,28 @@ "message": "由于平台的限制,FIDO U2F 不能在所有 Bitwarden 应用程序上使用。您应该启用另一个两步登录提供程序,以便在无法使用 FIDO U2F 时可以访问您的账户。支持的平台:" }, "twoFactorU2fSupportWeb": { - "message": "桌面/笔记本电脑上启用了 U2F 的浏览器(Chrome、Opera、Vivaldi 或启用了 FIDO U2F 的 Firefox)中的网页版密码库和浏览器扩展。" + "message": "桌面/笔记本电脑上支持 U2F 的浏览器(启用了 FIDO U2F 的 Chrome、Opera、Vivaldi 或 Firefox)中的网页版密码库和浏览器扩展。" }, "twoFactorU2fWaiting": { "message": "等待您按下安全钥匙上的按钮" }, "twoFactorU2fClickSave": { - "message": "单击下面的「保存」按钮,以启用此安全钥匙进行两步登录。" + "message": "单击下面的「保存」按钮,以启用此安全钥匙用于两步登录。" }, "twoFactorU2fProblemReadingTryAgain": { "message": "读取安全钥匙时出现问题,请再试一次。" }, "twoFactorWebAuthnWarning": { - "message": "由于平台限制,无法在所有 Bitwarden 应用程序中使用 WebAuthn。您应该启用另一种两步登录方式,以便在 WebAuthn 无法使用时可以访问您的账户。支持的平台有:" + "message": "由于平台限制,无法在所有 Bitwarden 应用程序中使用 WebAuthn。您应该启用另一个两步登录提供程序,以便在 WebAuthn 无法使用时可以访问您的账户。支持的平台有:" }, "twoFactorWebAuthnSupportWeb": { - "message": "桌面/笔记本电脑上启用了 WebAuthn 的浏览器(Chrome、Opera、Vivaldi 或启用了 FIDO U2F 的 Firefox)上的网页密码库和浏览器扩展。" + "message": "桌面/笔记本电脑上支持 WebAuthn 的浏览器(启用了 FIDO U2F 的 Chrome、Opera、Vivaldi 或 Firefox)中的网页密码库和浏览器扩展。" }, "twoFactorRecoveryYourCode": { "message": "您的 Bitwarden 两步登录恢复代码" }, "twoFactorRecoveryNoCode": { - "message": "您尚未启用任何两步登录提供程序。在启用了一个两步登录提供程序后,您可以在这里检查恢复代码。" + "message": "您尚未设置任何两步登录提供程序。在启用了一个两步登录提供程序后,请返回这里检查恢复代码。" }, "printCode": { "message": "打印代码", @@ -1547,6 +1556,10 @@ "message": "点击下面的报告,识别并消除您的在线账户中的安全漏洞。", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "点击下面的报告来验证和消除您组织帐户中的安全漏洞。", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "不安全的网站" }, @@ -1569,16 +1582,16 @@ "message": "你的密码库中没有带不安全 URI 的项目。" }, "inactive2faReport": { - "message": "未设置两步登录" + "message": "未激活两步登录" }, "inactive2faReportDesc": { "message": "两步登录为您的账户增加了一层保护。使用 Bitwarden 验证器或其他方式为这些账户开启两步登录。" }, "inactive2faFound": { - "message": "发现未启用 2FA 的登录项目" + "message": "发现未启用两步登录的登录项目" }, "inactive2faFoundDesc": { - "message": "我们在您的密码库中发现 $COUNT$ 个网站可能没有配置双重身份验证(根据 2fa.directory)。为了进一步保护这些账户,您应该启用双重身份验证。", + "message": "我们在您的密码库中发现 $COUNT$ 个网站可能没有配置两步登录(根据 2fa.directory)。为了进一步保护这些账户,您应该设置两步登录。", "placeholders": { "count": { "content": "$1", @@ -1587,7 +1600,7 @@ } }, "noInactive2fa": { - "message": "没有在您的密码库发现未使用双重身份认证的网站。" + "message": "没有在您的密码库发现未配置两步登录的网站。" }, "instructions": { "message": "说明" @@ -1798,7 +1811,7 @@ "message": "优先客户支持。" }, "premiumSignUpFuture": { - "message": "所有未来的高级功能,即将推出!" + "message": "未来会增加更多高级功能。敬请期待!" }, "premiumPrice": { "message": "每年只需 $PRICE$ !", @@ -1829,7 +1842,7 @@ } }, "additionalStorageGb": { - "message": "附加存储(GB)" + "message": "附加存储 (GB)" }, "additionalStorageGbDesc": { "message": "# GB 附加存储" @@ -1925,7 +1938,7 @@ "message": "您确定要取消吗?在本次计费周期结束后,您将无法使用此订阅的所有功能。" }, "canceledSubscription": { - "message": "订阅已取消。" + "message": "订阅已取消" }, "neverExpires": { "message": "永不过期" @@ -1955,7 +1968,7 @@ "message": "存储" }, "addStorage": { - "message": "添加存储" + "message": "添加存储空间" }, "removeStorage": { "message": "移除存储空间" @@ -2004,7 +2017,7 @@ "description": "Payment/credit transactions." }, "noTransactions": { - "message": "无交易记录" + "message": "无交易记录。" }, "chargeNoun": { "message": "费用", @@ -2290,16 +2303,16 @@ "message": "你的组织准备好了!" }, "organizationUpgraded": { - "message": "您的组织已升级。" + "message": "组织已升级" }, "leave": { - "message": "离开" + "message": "退出" }, "leaveOrganizationConfirmation": { - "message": "您确定要离开此组织吗?" + "message": "您确定要退出这个组织吗?" }, "leftOrganization": { - "message": "您已经离开该组织。" + "message": "您已经退出该组织。" }, "defaultCollection": { "message": "默认集合" @@ -2323,7 +2336,7 @@ "message": "策略" }, "singleSignOn": { - "message": "单点登录 (SSO)" + "message": "单点登录" }, "editPolicy": { "message": "编辑策略" @@ -2353,7 +2366,7 @@ "message": "撤销成员后,他们将不再具有对组织数据的访问权限。要快速恢复此成员的访问权限,请转到「已撤销」选项卡。" }, "removeUserConfirmationKeyConnector": { - "message": "警告!此用户需要 Key Connector 来管理他们的加密。从您的组织中移除此用户将永久禁用他们的账户。此操作无法撤消。您要继续吗?" + "message": "警告!此用户需要 Key Connector 来管理他们的加密。从您的组织中移除此用户将永久停用他们的账户。此操作无法撤消。您要继续吗?" }, "externalId": { "message": "外部 ID" @@ -2491,16 +2504,16 @@ "message": "已登录。" }, "changedPassword": { - "message": "账户密码已更改。" + "message": "已更改帐户密码" }, "enabledUpdated2fa": { - "message": "两步登录已启用/更新。" + "message": "两步登录已保存" }, "disabled2fa": { - "message": "两步登录已禁用。" + "message": "两步登录已停用" }, "recovered2fa": { - "message": "已从两步登录中恢复账户。" + "message": "已从两步登录中恢复帐户。" }, "failedLogin": { "message": "登录失败,密码不正确。" @@ -2509,7 +2522,7 @@ "message": "登录失败,两步登录不正确。" }, "exportedVault": { - "message": "已导出密码库。" + "message": "密码库已导出" }, "exportedOrganizationVault": { "message": "已导出组织密码库。" @@ -2536,7 +2549,7 @@ } }, "deletedItemId": { - "message": "项目 $ID$ 已发送到回收站。", + "message": "发送项目 $ID$ 到回收站。", "placeholders": { "id": { "content": "$1", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "已查看项目 $ID$ 的卡号。", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "查看了项目 $ID$ 的安全代码。", "placeholders": { @@ -2692,7 +2714,7 @@ } }, "removedUserId": { - "message": "已删除用户 $ID$。", + "message": "已移除用户 $ID$。", "placeholders": { "id": { "content": "$1", @@ -2869,7 +2891,7 @@ "message": "编辑此用户隶属的群组。" }, "invitedUsers": { - "message": "受邀用户。" + "message": "用户已邀请" }, "resendInvitation": { "message": "重新发送邀请" @@ -2878,7 +2900,7 @@ "message": "重新发送电子邮件" }, "hasBeenReinvited": { - "message": "已重新邀请 $USER$。", + "message": "已重新邀请 $USER$", "placeholders": { "user": { "content": "$1", @@ -2893,7 +2915,7 @@ "message": "确认用户" }, "hasBeenConfirmed": { - "message": "已确认 $USER$。", + "message": "$USER$ 已确认。", "placeholders": { "user": { "content": "$1", @@ -2926,13 +2948,13 @@ "message": "检查您的电子邮件收件箱以获取验证链接。" }, "emailVerified": { - "message": "您的电子邮件已验证。" + "message": "账户电子邮件已验证" }, "emailVerifiedFailed": { "message": "无法验证您的电子邮件。尝试发送新的验证电子邮件。" }, "emailVerificationRequired": { - "message": "需要验证电子邮件地址" + "message": "需要验证电子邮件" }, "emailVerificationRequiredDesc": { "message": "您必须验证您的电子邮件才能使用此功能。" @@ -2968,16 +2990,16 @@ } }, "rememberEmail": { - "message": "记住电子邮件" + "message": "记住电子邮件地址" }, "recoverAccountTwoStepDesc": { - "message": "如果您无法通过常规的两步登录方式访问您的账户,您可以使用两步登录恢复代码来禁用账户上的所有两步登录提供程序。" + "message": "如果您无法通过常规的两步登录方式访问您的账户,您可以使用两步登录恢复代码来停用账户上的所有两步登录提供程序。" }, "recoverAccountTwoStep": { "message": "恢复账户两步登录" }, "twoStepRecoverDisabled": { - "message": "您的账户已禁用两步登录。" + "message": "两步登录已在您的账户中停用。" }, "learnMore": { "message": "进一步了解" @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "我的组织" }, + "organizationInfo": { + "message": "组织信息" + }, "deleteOrganization": { "message": "删除组织" }, @@ -3025,7 +3050,7 @@ "message": "该组织和所有相关数据已删除。" }, "organizationUpdated": { - "message": "组织已更新" + "message": "组织已保存" }, "taxInformation": { "message": "税务信息" @@ -3074,7 +3099,7 @@ "message": "验证银行账户失败将会错过支付,您的订阅将失效。" }, "verifiedBankAccount": { - "message": "您的银行账户已验证。" + "message": "银行账户已验证" }, "bankAccount": { "message": "银行账户" @@ -3112,10 +3137,10 @@ "message": "输入您的安装 ID" }, "limitSubscriptionDesc": { - "message": "为您的订阅设置席位限制。达到此限制后,您将无法邀请新的用户。" + "message": "为您的订阅设置席位限制。达到此限制后,您将无法邀请新的成员。" }, "maxSeatLimit": { - "message": "最大席位限制(可选)", + "message": "席位限制(可选)", "description": "Upper limit of seats to allow through autoscaling" }, "maxSeatCost": { @@ -3133,7 +3158,7 @@ "message": "调整订阅将导致按比例调整您的计费总金额。如果新邀请的用户超过了您的订阅席位,您将立即收到按比例的额外用户费用。" }, "subscriptionUserSeats": { - "message": "您的订阅一共允许 $COUNT$ 位用户。", + "message": "您的订阅一共允许 $COUNT$ 位成员。", "placeholders": { "count": { "content": "$1", @@ -3157,10 +3182,10 @@ "message": "如需更多订阅管理的帮助,请联系客服支持。" }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "调整订阅将导致按比例调整您的计费总金额。如果新邀请的用户超过了您的订阅席位,您将立即收到按比例的额外用户费用。" + "message": "调整订阅将导致按比例调整您的计费总金额。如果新邀请的成员超过了您的订阅席位,您将立即收到按比例的额外成员费用。" }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "调整订阅将导致按比例调整您的计费总金额。如果新邀请的用户超过了您的订阅席位,您将立即收到按比例的额外用户费用,直到达到您的 $MAX$ 席位限制。", + "message": "调整订阅将导致按比例调整您的计费总金额。如果新邀请的成员超过了您的订阅席位,您将立即收到按比例的额外成员费用,直到达到您的 $MAX$ 席位限制。", "placeholders": { "max": { "content": "$1", @@ -3169,7 +3194,7 @@ } }, "subscriptionFreePlan": { - "message": "如果不升级您的计划,你最多只能邀请 $COUNT$ 位用户。", + "message": "如果不升级您的计划,您最多只能邀请 $COUNT$ 位成员。", "placeholders": { "count": { "content": "$1", @@ -3178,7 +3203,7 @@ } }, "subscriptionFamiliesPlan": { - "message": "如果不升级您的计划,你最多只能邀请 $COUNT$ 位用户。请联系客户支持进行升级。", + "message": "如果不升级您的计划,您最多只能邀请 $COUNT$ 位成员。请联系客户支持进行升级。", "placeholders": { "count": { "content": "$1", @@ -3187,7 +3212,7 @@ } }, "subscriptionSponsoredFamiliesPlan": { - "message": "您的订阅允许总共 $COUNT$ 位用户。您的计划由一个外部组织赞助和支付费用。", + "message": "您的订阅允许总共 $COUNT$ 位成员。您的计划由一个外部组织赞助和支付费用。", "placeholders": { "count": { "content": "$1", @@ -3196,7 +3221,7 @@ } }, "subscriptionMaxReached": { - "message": "调整订阅将导致按比例调整您的计费总金额。如果不增加订阅席位,您将不能邀请超过 $COUNT$ 位用户。", + "message": "调整订阅将导致按比例调整您的计费总金额。如果不增加订阅席位,您将不能邀请超过 $COUNT$ 位成员。", "placeholders": { "count": { "content": "$1", @@ -3328,10 +3353,10 @@ "description": "ex. Date this password was updated" }, "organizationIsDisabled": { - "message": "该组织已被禁用。" + "message": "组织已暂停" }, "disabledOrganizationFilterError": { - "message": "无法访问已禁用组织中的项目。请联系您的组织所有者获取协助。" + "message": "无法访问已暂停组织中的项目。请联系您的组织所有者获取帮助。" }, "licenseIsExpired": { "message": "授权已过期" @@ -3479,7 +3504,7 @@ "message": "非所有者或管理员并且其账户未启用两步登录的组织成员将从组织中移除,并将收到一封关于此更改的电子邮件通知。" }, "twoStepLoginPolicyUserWarning": { - "message": "您的组织要求您在您的用户账户上启用两步登录。如果您禁用所有两步登录提供程序,您将被自动从这些组织中移除。" + "message": "您的组织要求您在您的用户账户上启用两步登录。如果您停用所有两步登录提供程序,您将被自动从这些组织中移除。" }, "passwordGeneratorPolicyDesc": { "message": "设置密码生成器要求。" @@ -3530,7 +3555,7 @@ "message": "您的新主密码不符合策略要求。" }, "minimumNumberOfWords": { - "message": "最少单词数" + "message": "单词最少个数" }, "defaultType": { "message": "默认类型" @@ -3562,7 +3587,7 @@ "message": "永久删除" }, "permanentlyDeleteSelected": { - "message": "永久删除选中项目" + "message": "永久删除所选" }, "permanentlyDeleteItem": { "message": "永久删除项目" @@ -3571,10 +3596,10 @@ "message": "您确定要永久删除此项目吗?" }, "permanentlyDeletedItem": { - "message": "已永久删除项目" + "message": "项目已永久删除" }, "permanentlyDeletedItems": { - "message": "已永久删除项目" + "message": "项目已永久删除" }, "permanentlyDeleteSelectedItemsDesc": { "message": "您选择了要永久删除 $COUNT$ 个项目。确定要永久删除所有这些项目吗?", @@ -3586,7 +3611,7 @@ } }, "permanentlyDeletedItemId": { - "message": "已永久删除项目 $ID$。", + "message": "项目 $ID$ 已永久删除", "placeholders": { "id": { "content": "$1", @@ -3598,16 +3623,16 @@ "message": "恢复" }, "restoreSelected": { - "message": "恢复选中的项目" + "message": "恢复所选" }, "restoreItem": { "message": "恢复项目" }, "restoredItem": { - "message": "已恢复项目" + "message": "项目已恢复" }, "restoredItems": { - "message": "已恢复项目" + "message": "项目已恢复" }, "restoreItemConfirmation": { "message": "确定要恢复此项目吗?" @@ -3625,7 +3650,7 @@ } }, "restoredItemId": { - "message": "已恢复项目 $ID$。", + "message": "项目 $ID$ 已恢复", "placeholders": { "id": { "content": "$1", @@ -3670,7 +3695,7 @@ "message": "要使用您组织的单点登录门户登录。请首先输入您组织的标识符。" }, "enterpriseSingleSignOn": { - "message": "企业单点登录(SSO)" + "message": "企业单点登录" }, "ssoHandOff": { "message": "您现在可以在扩展中关闭此标签页并继续。" @@ -3688,7 +3713,13 @@ "message": "SSO 验证失败" }, "ssoIdentifierRequired": { - "message": "需要组织标识符。" + "message": "必须填写组织 SSO 标识符。" + }, + "ssoIdentifier": { + "message": "SSO 标识符" + }, + "ssoIdentifierHint": { + "message": "提供此 ID 给您的成员以使用 SSO 登录。" }, "unlinkSso": { "message": "取消链接 SSO" @@ -3736,7 +3767,7 @@ "message": "文本" }, "createSend": { - "message": "创建新 Send", + "message": "创建 Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { @@ -3744,11 +3775,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Send 已创建", + "message": "Send 已保存", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Send 已编辑", + "message": "Send 已保存", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deletedSend": { @@ -3792,7 +3823,7 @@ "message": "当前访问次数" }, "sendPasswordDesc": { - "message": "可选,用户需要提供密码才能访问此 Send。", + "message": "可选。用户需要提供密码才能访问此 Send。", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNotesDesc": { @@ -3826,7 +3857,7 @@ "message": "对收件人隐藏我的电子邮件地址。" }, "disableThisSend": { - "message": "禁用此 Send 以阻止任何人访问它。", + "message": "停用此 Send 则任何人无法访问它。", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "allSends": { @@ -4001,7 +4032,7 @@ } }, "emergencyApproved": { - "message": "紧急访问已批准。" + "message": "紧急访问已批准" }, "emergencyRejected": { "message": "紧急访问已拒绝" @@ -4035,7 +4066,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disableSendExemption": { - "message": "可以管理组织策略的组织用户豁免此策略的执行。" + "message": "可以管理组织策略的组织成员豁免此策略的执行。" }, "sendDisabled": { "message": "Send 已禁用", @@ -4054,7 +4085,7 @@ "description": "'Sends' is a plural noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsExemption": { - "message": "可以管理组织策略的组织用户豁免此策略的执行。" + "message": "可以管理组织策略的组织成员豁免此策略的执行。" }, "disableHideEmail": { "message": "在创建或编辑 Send 时,始终向收件人显示成员的电子邮件地址。", @@ -4091,6 +4122,9 @@ "permissions": { "message": "权限" }, + "permission": { + "message": "Permission" + }, "managerPermissions": { "message": "经理权限" }, @@ -4146,7 +4180,7 @@ "message": "管理密码重置" }, "disableRequiredError": { - "message": "您必须先手动禁用 $POLICYNAME$ 策略,然后才能禁用此策略。", + "message": "您必须先手动切换 $POLICYNAME$ 策略,然后才能停用此策略。", "placeholders": { "policyName": { "content": "$1", @@ -4158,13 +4192,13 @@ "message": "组织策略正在影响您的所有权选项。" }, "personalOwnershipPolicyInEffectImports": { - "message": "组织策略已禁用将项目导入您的个人密码库。" + "message": "组织策略已阻止将项目导入您的个人密码库。" }, "personalOwnershipCheckboxDesc": { - "message": "为组织用户禁用个人所有权" + "message": "移除组织用户的个人所有权" }, "textHiddenByDefault": { - "message": "访问 Send 时,默认将隐藏文本", + "message": "访问此 Send 时,默认隐藏文本内容", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNameDesc": { @@ -4175,7 +4209,7 @@ "message": "您想要发送的文本。" }, "sendFileDesc": { - "message": "您要发送的文件。" + "message": "您想要发送的文件。" }, "copySendLinkOnSave": { "message": "保存时复制链接到剪贴板以便分享此 Send。" @@ -4290,7 +4324,7 @@ "message": "撤销成功!" }, "eventEnrollPasswordReset": { - "message": "用户 $ID$ 注册了密码重置协助。", + "message": "用户 $ID$ 注册了密码重置。", "placeholders": { "id": { "content": "$1", @@ -4299,7 +4333,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "用户 $ID$ 撤销了密码重置协助。", + "message": "用户 $ID$ 撤销了密码重置。", "placeholders": { "id": { "content": "$1", @@ -4365,19 +4399,19 @@ "message": "允许管理员重置成员的主密码。" }, "resetPasswordPolicyWarning": { - "message": "组织中的用户自行注册或被自动注册后,管理员才能重置他们的主密码。" + "message": "组织中的成员自行注册或被自动注册后,管理员才能重置他们的主密码。" }, "resetPasswordPolicyAutoEnroll": { "message": "自动注册" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "所有接受邀请的用戶,将会被自动注册密码重置,并且不允许撤销。" + "message": "邀请被接受后的所有成员,将会被自动注册密码重置,并且不允许撤销。" }, "resetPasswordPolicyAutoEnrollWarning": { - "message": "已经在组织中的用户将不会被注册密码重置。需要他们自行注册后,管理员才能重置他们的主密码。" + "message": "已经在组织中的成员将不会被注册密码重置。需要他们自行注册后,管理员才能重置他们的主密码。" }, "resetPasswordPolicyAutoEnrollCheckbox": { - "message": "要求为新用户启用自动注册" + "message": "为新用户启用自动注册" }, "resetPasswordAutoEnrollInviteWarning": { "message": "此组织有一个企业策略,将自动为你注册密码重置。注册后将允许组织管理员更改您的主密码。" @@ -4437,16 +4471,16 @@ "message": "浅色" }, "confirmSelected": { - "message": "确认选择" + "message": "确认所选" }, "bulkConfirmStatus": { "message": "批量操作状态" }, "bulkConfirmMessage": { - "message": "确认成功。" + "message": "确认成功" }, "bulkReinviteMessage": { - "message": "重新邀请成功。" + "message": "重新邀请成功" }, "bulkRemovedMessage": { "message": "移除成功" @@ -4458,7 +4492,7 @@ "message": "成功恢复组织的访问权限" }, "bulkFilteredMessage": { - "message": "排除,不适用于此操作。" + "message": "排除,不适用于此操作" }, "fingerprint": { "message": "指纹" @@ -4476,7 +4510,7 @@ "message": "错误" }, "resetPasswordManageUsers": { - "message": "必须启用管理密码重置权限后才能启用管理用户" + "message": "管理用户也必须获得管理密码重置权限" }, "setupProvider": { "message": "提供商设置" @@ -4491,11 +4525,15 @@ "message": "提供商名称" }, "providerSetup": { - "message": "已完成提供商设置。" + "message": "提供商设置成功" }, "clients": { "message": "客户" }, + "client": { + "message": "客户端", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "提供商管理" }, @@ -4509,7 +4547,7 @@ "message": "服务用户可以访问和管理所有客户组织。" }, "providerInviteUserDesc": { - "message": "通过在下面输入他们的 Bitwarden 账户电子邮件地址,邀请新用户加入您的提供商。如果他们还没有 Bitwarden 账户,将被提示创建一个新的账户。" + "message": "通过在下面输入他们的 Bitwarden 账户电子邮件地址,以邀请新用户加入您的提供商。如果他们还没有 Bitwarden 账户,将提示他们创建一个。" }, "joinProvider": { "message": "加入提供商" @@ -4524,16 +4562,16 @@ "message": "管理员确认您的成员资格后,您就可以访问此提供商了。届时我们会向您发送一封电子邮件。" }, "providerUsersNeedConfirmed": { - "message": "您有用户接受了他们的邀请,但仍然需要确认。用户在确认之前将无法访问提供商。" + "message": "您有用户已接受他们的邀请,但仍然需要确认。用户在确认之前将无法访问提供商。" }, "provider": { "message": "提供商" }, "newClientOrganization": { - "message": "新客户组织" + "message": "新建客户组织" }, "newClientOrganizationDesc": { - "message": "创建一个新的客户组织,该组织将作为提供商与你关联。您可以访问和管理这个组织。" + "message": "创建一个新的客户组织,该组织将作为提供商与你关联。您将可以访问和管理这个组织。" }, "addExistingOrganization": { "message": "添加现有组织" @@ -4567,10 +4605,10 @@ } }, "providerIsDisabled": { - "message": "提供商已被禁用。" + "message": "提供商已停用" }, "providerUpdated": { - "message": "提供商已更新" + "message": "提供商已保存" }, "yourProviderIs": { "message": "您的提供商是 $PROVIDER$。他们对您的组织拥有管理和计费权限。", @@ -4597,16 +4635,16 @@ "message": "添加" }, "updatedMasterPassword": { - "message": "已更新主密码。" + "message": "主密码已保存" }, "updateMasterPassword": { "message": "更新主密码" }, "updateMasterPasswordWarning": { - "message": "您的主密码最近被您组织的管理员更改过。要访问密码库,您必须立即更新主密码。继续操作将使您退出当前会话,要求您重新登录。其他设备上的活动会话可能会继续保持活动状态长达一小时。" + "message": "您的主密码最近被您组织的管理员更改过。要访问此密码库,必须立即更新您的主密码。继续操作将使您退出当前会话,要求您重新登录。其他设备上的活动会话可能会继续保持活动状态长达一小时。" }, "masterPasswordInvalidWarning": { - "message": "您的主密码不符合此组织的策略要求。要加入此组织,您必须现在更新您的主密码。继续操作将您注销当前会话,要求您重新登录。在其他设备上的活动会话可能继续活动长达一小时。" + "message": "您的主密码不符合此组织的策略要求。要加入此组织,必须立即更新您的主密码。继续操作将使您退出当前会话,要求您重新登录。其他设备上的活动会话可能会继续保持活动状态长达一小时。" }, "maximumVaultTimeout": { "message": "密码库超时时间" @@ -4646,7 +4684,7 @@ "message": "您的密码库超时时间超出了您的组织设置的限制。" }, "vaultCustomTimeoutMinimum": { - "message": "最小自定义超时为1分钟。" + "message": "自定义超时时间最小为 1 分钟。" }, "vaultTimeoutRangeError": { "message": "密码库超时不在允许的范围内。" @@ -4775,7 +4813,7 @@ "message": "签名身份验证请求" }, "ssoSettingsSaved": { - "message": "单点登录配置已保存。" + "message": "单点登录配置已保存" }, "sponsoredFamilies": { "message": "免费 Bitwarden 家庭" @@ -4814,16 +4852,16 @@ "message": "输入您的个人电子邮件以兑换 Bitwarden 家庭" }, "sponsoredFamiliesLeaveCopy": { - "message": "如果您移除邀请或被赞助组织移除,您的家庭赞助将在下一个续费日到期。" + "message": "如果您移除邀请或邀请被赞助组织移除,您的家庭赞助将在下一个续费日到期。" }, "acceptBitwardenFamiliesHelp": { "message": "接受现有组织的邀请或创建一个新的家庭组织。" }, "setupSponsoredFamiliesLoginDesc": { - "message": "您已被邀请加入 Bitwarden 家庭计划组织。要继续,您需要登录到接受邀请的账户。" + "message": "您已被邀请加入免费的 Bitwarden 家庭计划组织。要继续,您需要登录到接收邀请的账户。" }, "sponsoredFamiliesAcceptFailed": { - "message": "无法接受邀请。请重新发送来自您企业账户的邀请邮件,然后重试。" + "message": "无法接受邀请。请通过您的企业账户重新发送邀请邮件,然后重试。" }, "sponsoredFamiliesAcceptFailedShort": { "message": "无法接受邀请。$DESCRIPTION$", @@ -4844,7 +4882,7 @@ "message": "已兑换" }, "redeemedAccount": { - "message": "已兑换账户" + "message": "账户已兑换" }, "revokeAccount": { "message": "撤销账户 $NAME$", @@ -4856,7 +4894,7 @@ } }, "resendEmailLabel": { - "message": "重新发送赞助邮件到 $NAME$", + "message": "重新给 $NAME$ 发送赞助邮件", "placeholders": { "name": { "content": "$1", @@ -4928,13 +4966,13 @@ } }, "leaveOrganization": { - "message": "离开组织" + "message": "退出组织" }, "removeMasterPassword": { "message": "移除主密码" }, "removedMasterPassword": { - "message": "主密码已移除。" + "message": "主密码已移除" }, "allowSso": { "message": "允许 SSO 身份验证" @@ -4973,19 +5011,19 @@ "message": "「SSO 登录和 Key Connector 解密」已启用。此策略仅适用于所有者和管理员。" }, "enabledSso": { - "message": "已启用 SSO" + "message": "SSO 已启用" }, "disabledSso": { - "message": "已禁用 SSO" + "message": "SSO 已停用" }, "enabledKeyConnector": { - "message": "已启用 Key Connector" + "message": "Key Connector 已启用" }, "disabledKeyConnector": { - "message": "已禁用 Key Connector" + "message": "Key Connector 已停用" }, "keyConnectorWarning": { - "message": "一旦成员开始使用 Key Connector,您的组织就无法恢复到使用主密码解密。仅当您可以轻松地部署和管理密钥服务器时才继续。" + "message": "一旦成员开始使用 Key Connector,您的组织就无法恢复为使用主密码解密。仅当您可以轻松地部署和管理密钥服务器时才继续操作。" }, "migratedKeyConnector": { "message": "已迁移到 Key Connector" @@ -4997,7 +5035,7 @@ "message": "赞助邀请已过期,您可以删除您创建的组织,以避免 7 天试用期结束时收取费用。您也可以关闭这个提示,以保留此组织并承担计费责任。" }, "newFamiliesOrganization": { - "message": "新的家庭组织" + "message": "新建家庭组织" }, "acceptOffer": { "message": "接受邀请" @@ -5057,7 +5095,7 @@ "message": "要在您自己的服务器上设置您的组织,您需要上传您的许可证文件。要为您的自托管组织提供免费家庭计划和高级计费功能,您需要设置计费同步。" }, "billingSyncApiKeyRotated": { - "message": "令牌已轮换。" + "message": "令牌已轮换" }, "billingSync": { "message": "计费同步" @@ -5078,13 +5116,13 @@ "message": "已失效" }, "sentAwaitingSync": { - "message": "已发送(等待同步)" + "message": "已发送(正在等待同步)" }, "sent": { "message": "发送" }, "requestRemoved": { - "message": "已移除(等待同步)" + "message": "已移除(正在等待同步)" }, "requested": { "message": "已请求" @@ -5129,13 +5167,13 @@ "message": "您的会话已超时。请返回并尝试重新登录。" }, "exportingPersonalVaultTitle": { - "message": "导出个人密码库" + "message": "正在导出个人密码库" }, "exportingOrganizationVaultTitle": { - "message": "导出组织密码库" + "message": "正在导出组织密码库" }, "exportingPersonalVaultDescription": { - "message": "仅会导出与 $EMAIL$ 关联的个人密码库。组织密码库的项目不会导出。", + "message": "仅会导出与 $EMAIL$ 关联的个人密码库项目。组织密码库的项目不会导出。", "placeholders": { "email": { "content": "$1", @@ -5153,7 +5191,7 @@ } }, "accessDenied": { - "message": "访问被拒绝。您没有查看此页面的权限。" + "message": "访问被拒绝。您没有权限查看此页面。" }, "masterPassword": { "message": "主密码" @@ -5165,7 +5203,7 @@ "message": "密钥" }, "billingHistory": { - "message": "账单历史" + "message": "费用历史记录" }, "backToReports": { "message": "返回到报告" @@ -5294,13 +5332,13 @@ "message": "启用设备验证" }, "deviceVerificationDesc": { - "message": "启用后,在未识别的设备上登录时,验证码会发送到您的电子邮箱" + "message": "登录未识别的设备时,验证码会发送到您的电子邮件地址" }, "updatedDeviceVerification": { - "message": "设备验证已更新" + "message": "已更新设备验证" }, "areYouSureYouWantToEnableDeviceVerificationTheVerificationCodeEmailsWillArriveAtX": { - "message": "您确定要启用设备验证吗?验证码邮件将发送到 $EMAIL$", + "message": "您确定要开启设备验证吗?验证码邮件将发送到 $EMAIL$", "placeholders": { "email": { "content": "$1", @@ -5362,7 +5400,7 @@ "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "scimSettingsSaved": { - "message": "已成功保存 SCIM 设置", + "message": "SCIM 设置已保存", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "inputRequired": { @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "输入长度不能超过 $COUNT$ 个字符。", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "上面的 $COUNT$ 个字段需要您注意。", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "开启" }, + "members": { + "message": "成员" + }, + "reporting": { + "message": "Reporting" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "用户数量" }, + "loggingInAs": { + "message": "正登录为" + }, + "notYou": { + "message": "不是你?" + }, "multiSelectPlaceholder": { "message": "-- 键入以筛选 --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "清除全部" + }, + "from": { + "message": "从" + }, + "to": { + "message": "至" + }, + "member": { + "message": "成员" + }, + "update": { + "message": "更新" + }, + "role": { + "message": "Role" + }, + "canView": { + "message": "Can view" + }, + "canViewExceptPass": { + "message": "Can view, except passwords" + }, + "canEdit": { + "message": "Can edit" + }, + "canEditExceptPass": { + "message": "Can edit, except passwords" + }, + "group": { + "message": "Group" + }, + "groupAccessAll": { + "message": "此群组可以访问和修改所有项目。" + }, + "memberAccessAll": { + "message": "此成员可以访问和修改所有项目。" } } diff --git a/apps/web/src/locales/zh_TW/messages.json b/apps/web/src/locales/zh_TW/messages.json index e84c97623f9..53fd79f313e 100644 --- a/apps/web/src/locales/zh_TW/messages.json +++ b/apps/web/src/locales/zh_TW/messages.json @@ -38,7 +38,7 @@ "message": "密碼" }, "newPassword": { - "message": "新的密碼" + "message": "新密碼" }, "passphrase": { "message": "密碼短語" @@ -137,13 +137,13 @@ "message": "Dr" }, "expirationMonth": { - "message": "到期月份" + "message": "逾期月份" }, "expirationYear": { "message": "逾期年份" }, "authenticatorKeyTotp": { - "message": "驗證器金鑰(TOTP)" + "message": "驗證器金鑰 (TOTP)" }, "folder": { "message": "資料夾" @@ -425,7 +425,7 @@ "message": "我" }, "myVault": { - "message": "密碼庫" + "message": "我的密碼庫" }, "allVaults": { "message": "所有密碼庫" @@ -440,13 +440,13 @@ "message": "密碼庫項目" }, "moveSelectedToOrg": { - "message": "移動選取的項目至組織" + "message": "移動所選至組織" }, "deleteSelected": { - "message": "刪除已選取項目" + "message": "刪除所選" }, "moveSelected": { - "message": "移動已選取項目" + "message": "移動所選" }, "selectAll": { "message": "全選" @@ -467,7 +467,7 @@ "message": "確定要刪除此附件嗎?" }, "attachmentSaved": { - "message": "附件已儲存。" + "message": "附件已儲存" }, "file": { "message": "檔案" @@ -485,7 +485,7 @@ "message": "項目已新增" }, "editedItem": { - "message": "項目已編輯" + "message": "項目已儲存" }, "movedItemToOrg": { "message": "已將 $ITEMNAME$ 移動至 $ORGNAME$", @@ -534,7 +534,7 @@ "message": "您確定要覆寫目前的密碼嗎?" }, "editedFolder": { - "message": "資料夾已編輯" + "message": "資料夾已儲存" }, "addedFolder": { "message": "資料夾已新增" @@ -543,7 +543,7 @@ "message": "您確定要刪除此資料夾嗎?" }, "deletedFolder": { - "message": "已刪除的資料夾" + "message": "資料夾已刪除" }, "loggedOut": { "message": "已登出" @@ -575,8 +575,11 @@ "loginWithDeviceEnabledInfo": { "message": "裝置登入必須在 Bitwarden 行動應用程式的設定中啟用。需要其他選項嗎?" }, + "loginWithMasterPassword": { + "message": "使用主密碼登入" + }, "createAccount": { - "message": "新增帳戶" + "message": "建立帳戶" }, "newAroundHere": { "message": "第一次使用?" @@ -615,7 +618,7 @@ "message": "主密碼提示可以在您忘記主密碼時幫助您回憶主密碼。" }, "reTypeMasterPass": { - "message": "重新輸入主密碼" + "message": "再次輸入主密碼" }, "masterPassHint": { "message": "主密碼提示(選用)" @@ -763,28 +766,28 @@ "message": "將您的 YubiKey 插入電腦的 USB 連接埠,然後按一下它的按鈕。" }, "insertU2f": { - "message": "將您的安全金鑰插入電腦的 USB 連接埠,然後按一下它的按鈕(如有的話)。" + "message": "將您的安全鑰匙插入電腦的 USB 連接埠,然後按一下它的按鈕(如有的話)。" }, "loginUnavailable": { - "message": "無法登入" + "message": "登入無法使用" }, "noTwoStepProviders": { "message": "此帳戶已啟用兩步驟登入,但是本瀏覽器不支援已設定的兩步驟登入方法。" }, "noTwoStepProviders2": { - "message": "請使用已支援的瀏覽器(例如 Chrome ),及/或新增可以更好地跨瀏覽器的兩步驟登入方法(例如驗證器應用程式)。" + "message": "請使用受支援的瀏覽器(例如 Chrome),及/或新增可以更好地支援跨瀏覽器的提供程式(例如驗證器應用程式)。" }, "twoStepOptions": { "message": "兩步驟登入選項" }, "recoveryCodeDesc": { - "message": "無法使用任何兩步驟登入方式?用復原碼停用所有兩步驟登入方式。" + "message": "無法使用任何兩步驟登入方式嗎?請使用您的復原碼停用所有兩步驟登入方式。" }, "recoveryCodeTitle": { "message": "復原碼" }, "authenticatorAppTitle": { - "message": "認證器應用程式" + "message": "驗證器應用程式" }, "authenticatorAppDesc": { "message": "使用驗證器應用程式 (如 Authy 或 Google Authenticator) 產生基於時間的驗證碼。", @@ -797,11 +800,11 @@ "message": "使用 YubiKey 存取您的帳戶。支援 YubiKey 4 系列、5 系列以及 NEO 裝置。" }, "duoDesc": { - "message": "使用 Duo Security 的 Duo Mobile 程式、SMS 、撥打電話或 U2F 安全金鑰進行驗證。", + "message": "使用 Duo Security 的 Duo Mobile 程式、SMS 、撥打電話或 U2F 安全鑰匙進行驗證。", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "duoOrganizationDesc": { - "message": "為您的組織使用 Duo Security 的 Duo Mobile 程式、SMS、撥打電話或 U2F 安全金鑰進行驗證。", + "message": "為您的組織使用 Duo Security 的 Duo Mobile 程式、SMS、撥打電話或 U2F 安全鑰匙進行驗證。", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "u2fDesc": { @@ -814,7 +817,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "使用任何具有 WebAuthn 功能的安全金鑰以存取您的帳戶。" + "message": "使用任何具有 WebAuthn 功能的安全鑰匙來存取您的帳戶。" }, "webAuthnMigrated": { "message": "(遷移自 FIDO)" @@ -945,13 +948,13 @@ "message": "「檔案密碼」與「確認檔案密碼」不一致。" }, "confirmVaultImport": { - "message": "確認密碼庫匯入" + "message": "確認匯入密碼庫" }, "confirmVaultImportDesc": { "message": "此檔案受密碼保護,請輸入檔案密碼以匯入資料。" }, "exportSuccess": { - "message": "已匯出您的密碼庫資料。" + "message": "已匯出密碼庫資料" }, "passwordGenerator": { "message": "密碼產生器" @@ -960,10 +963,10 @@ "message": "最小複雜度" }, "minNumbers": { - "message": "數字" + "message": "最少數字位數" }, "minSpecial": { - "message": "符號", + "message": "最少符號位數", "description": "Minimum special characters" }, "ambiguous": { @@ -987,13 +990,13 @@ "message": "數字 (0-9)" }, "specialCharacters": { - "message": "特殊字元(!@#$%^&*)" + "message": "特殊字元 (!@#$%^&*)" }, "numWords": { - "message": "字數" + "message": "單字數量" }, "wordSeparator": { - "message": "文字分隔字元" + "message": "單字分隔字元" }, "capitalize": { "message": "大寫", @@ -1013,13 +1016,13 @@ "description": "To clear something out. Example: To clear browser history." }, "accountUpdated": { - "message": "帳戶已更新" + "message": "帳戶已儲存" }, "changeEmail": { "message": "變更電子郵件" }, "changeEmailTwoFactorWarning": { - "message": "繼續操作將變更您的帳戶電子郵件地址。這不會變更用於雙因素驗證的電子郵件地址。您可以在雙因素登入設定中變更它。" + "message": "繼續操作將變更您的帳戶電子郵件位址。這不會變更用兩步驟登入的電子郵件地址。您可以在兩步驟登入設定中變更它。" }, "newEmail": { "message": "新的電子郵件" @@ -1040,7 +1043,7 @@ "message": "接下來會登出目前工作階段,並要求您重新登入帳戶。其他裝置上的工作階段最多會保持一個小時。" }, "emailChanged": { - "message": "已變更電子郵件" + "message": "電子郵件已儲存" }, "logBackIn": { "message": "請重新登入。" @@ -1052,7 +1055,7 @@ "message": "變更主密碼" }, "masterPasswordChanged": { - "message": "已變更主密碼" + "message": "主密碼已儲存" }, "currentMasterPass": { "message": "目前主密碼" @@ -1061,7 +1064,7 @@ "message": "新的主密碼" }, "confirmNewMasterPass": { - "message": "確認新密碼" + "message": "確認新的主密碼" }, "encKeySettings": { "message": "加密金鑰設定" @@ -1094,7 +1097,7 @@ "message": "變更 KDF" }, "encKeySettingsChanged": { - "message": "已變更加密金鑰設定" + "message": "加密金鑰設定已儲存" }, "dangerZone": { "message": "危險區域" @@ -1109,10 +1112,10 @@ "message": "您是否擔心自己的帳戶在其他裝置上保持登入?請遵照以下步驟取消對之前使用過的所有電腦和裝置的授權。若您以前使用過公用電腦或不小心曾將密碼儲存在不屬於您的裝置上,則建議執行此安全步驟,此操作還將清除所有以前記住的兩步驟登入工作階段。" }, "deauthorizeSessionsWarning": { - "message": "接下來會登出目前的登入階段,並要求您重新登入。若您有設定兩步驟登入,也需重新驗證。其他裝置上的登入階段最多會保持一個小時。" + "message": "接下來會登出目前的工作階段,並要求您重新登入。若您有設定兩步驟登入,也需重新驗證。其他裝置上的活動工作階段最多會保持一個小時。" }, "sessionsDeauthorized": { - "message": "已取消所有登入階段授權" + "message": "已取消所有工作階段授權" }, "purgeVault": { "message": "清空密碼庫" @@ -1133,7 +1136,7 @@ "message": "清空密碼庫是永久性的。並且無法復原。" }, "vaultPurged": { - "message": "已清空您的密碼庫。" + "message": "已清空密碼庫。" }, "deleteAccount": { "message": "刪除帳戶" @@ -1145,7 +1148,7 @@ "message": "刪除您的帳戶是永久性的。並且無法復原。" }, "accountDeleted": { - "message": "已刪除帳戶" + "message": "帳戶已刪除" }, "accountDeletedDesc": { "message": "您的帳戶已經關閉,所有關聯的資料也已經被刪除。" @@ -1160,13 +1163,13 @@ "message": "匯入資料" }, "importError": { - "message": "匯入錯誤" + "message": "匯入時發生錯誤" }, "importErrorDesc": { "message": "您嘗試匯入的資料有問題,請處理下方列出的來源檔案中的錯誤然後再試一次。" }, "importSuccess": { - "message": "資料已經成功匯入至您的密碼庫中。" + "message": "資料匯入成功" }, "importWarning": { "message": "即將匯入資料至 $ORGANIZATION$。您的資料可能會與該組織中的成員共用,確定要繼續嗎?", @@ -1221,7 +1224,7 @@ "message": "自訂您的網頁版密碼庫。" }, "preferencesUpdated": { - "message": "偏好設定已更新" + "message": "偏好設定已儲存" }, "language": { "message": "語言" @@ -1235,13 +1238,6 @@ "faviconDesc": { "message": "在每個登入資料旁顯示一個可辨識的圖片。" }, - "enableGravatars": { - "message": "顯示 Gravatars", - "description": "Use avatar images loaded from gravatar.com." - }, - "enableGravatarsDesc": { - "message": "載入 gravatar.com 上的頭像圖片。" - }, "enableFullWidth": { "message": "顯示全寬度佈局", "description": "Allows scaling the web vault UI's width" @@ -1289,22 +1285,35 @@ } }, "domainsUpdated": { - "message": "網域已更新" + "message": "網域已儲存" }, "twoStepLogin": { "message": "兩步驟登入" }, + "twoStepLoginEnforcement": { + "message": "強制兩步驟驗證" + }, "twoStepLoginDesc": { "message": "在登入時執行額外的步驟來保護您的帳戶。" }, - "twoStepLoginOrganizationDesc": { - "message": "可透過組織等級來設定提供方式,以要求所有使用者都必須開啟兩步驟登入。" + "twoStepLoginOrganizationDescStart": { + "message": "讓成員使用 Bitwarden 兩步驟登入,藉由 ", + "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Enforce Bitwarden Two-step Login options for members by using the Two-step Login Policy.'" + }, + "twoStepLoginPolicy": { + "message": "兩步驟登入政策" + }, + "twoStepLoginOrganizationDuoDesc": { + "message": "要以 Duo 進行兩步驟登入,請使用以下的選項。" + }, + "twoStepLoginOrganizationSsoDesc": { + "message": "如果您已經設定好或計畫要使用 SSO 登入,兩步驟登入可能已經由您的身份提供機關開啟。" }, "twoStepLoginRecoveryWarning": { - "message": "啟用兩步驟登入可能會將您永久鎖定在您的 Bitwarden 帳戶外。如果您無法正常使用兩步驟登入驗證應用程式(例如,您遺失了裝置),則可以使用復原碼存取您的帳戶。 如果您失去帳戶的存取權限,Bitwarden 也無法幫助您。所以我們建議您記下或列印復原碼,並將其妥善保存。" + "message": "啟用兩步驟登入可能會將您永久鎖定在您的 Bitwarden 帳戶外。如果您無法正常使用兩步驟登入方式(例如,您遺失了裝置),則可以使用復原碼存取您的帳戶。 如果您失去帳戶的存取權限,Bitwarden 也無法幫助您。所以我們建議您記下或列印復原碼,並將其妥善保存。" }, "viewRecoveryCode": { - "message": "檢視復原代碼" + "message": "檢視復原碼" }, "providers": { "message": "提供者", @@ -1348,7 +1357,7 @@ "message": "撤銷存取權限" }, "twoStepLoginProviderEnabled": { - "message": "您的帳戶已啟用兩步驟登入。" + "message": "您的帳戶已啟用此兩步驟登入方式。" }, "twoStepLoginAuthDesc": { "message": "輸入您的主密碼以修改兩步驟登入設定。" @@ -1387,7 +1396,7 @@ "message": "若您需要將其加入其他裝置,以下是您的驗證器應用程式所需要的 QR Code(或金鑰)。" }, "twoStepDisableDesc": { - "message": "您確定要停用兩步驟驗證嗎?" + "message": "您確定要停用此兩步驟登入方式嗎?" }, "twoStepDisabled": { "message": "已停用兩步驟登入方式。" @@ -1426,7 +1435,7 @@ } }, "u2fkeyX": { - "message": "U2F 金鑰 $INDEX$", + "message": "U2F 鑰匙 $INDEX$", "placeholders": { "index": { "content": "$1", @@ -1435,7 +1444,7 @@ } }, "webAuthnkeyX": { - "message": "WebAuthn 金鑰 $INDEX$", + "message": "WebAuthn 鑰匙 $INDEX$", "placeholders": { "index": { "content": "$1", @@ -1447,7 +1456,7 @@ "message": "NFC 支援" }, "twoFactorYubikeySupportsNfc": { - "message": "我有一把金鑰支援 NFC。" + "message": "我有一把鑰匙支援 NFC。" }, "twoFactorYubikeySupportsNfcDesc": { "message": "若您有一個支援 NFC 的 YubiKey(例如 YubiKey NEO),行動裝置在感應到 NFC 時將提示您。" @@ -1483,28 +1492,28 @@ "message": "傳送電子郵件" }, "twoFactorU2fAdd": { - "message": "在您的帳戶中新增 FIDO U2F 安全金鑰" + "message": "在您的帳戶中新增 FIDO U2F 安全鑰匙" }, "removeU2fConfirmation": { - "message": "您確定要移除這把安全金鑰嗎?" + "message": "您確定要移除這把安全鑰匙嗎?" }, "twoFactorWebAuthnAdd": { - "message": "在您的帳戶中新增 WebAuthn 安全金鑰" + "message": "在您的帳戶中新增 WebAuthn 安全鑰匙" }, "readKey": { - "message": "讀取金鑰" + "message": "讀取鑰匙" }, "keyCompromised": { - "message": "金鑰已損壞。" + "message": "鑰匙已損壞。" }, "twoFactorU2fGiveName": { - "message": "幫安全金鑰取一個易記名稱,以方便辨識。" + "message": "幫安全鑰匙取一個易記名稱,以方便辨識。" }, "twoFactorU2fPlugInReadKey": { - "message": "請將安全金鑰插入您電腦的 USB 連接埠,並按下「讀取鑰匙」按鈕。" + "message": "請將安全鑰匙插入您電腦的 USB 連接埠,並按下「讀取鑰匙」按鈕。" }, "twoFactorU2fTouchButton": { - "message": "若安全金鑰有按鈕,請按下它。" + "message": "如果安全鑰匙有按鈕,請按下它。" }, "twoFactorU2fSaveForm": { "message": "儲存表單" @@ -1513,22 +1522,22 @@ "message": "由於平台限制,無法於所有 Bitwarden 應用程式中使用 FIDO U2F。請開啟另一套兩步驟登入方式,以確保 FIDO U2F 無法使用時還能存取您的帳戶。支援的平台有:" }, "twoFactorU2fSupportWeb": { - "message": "桌上型電腦/筆記型電腦上啟用了 U2F 的瀏覽器(Chrome、Opera、Vivaldi 或啟用了 FIDO U2F 的 Firefox)中的網頁版密碼庫和瀏覽器擴充套件。" + "message": "桌上型電腦/筆記型電腦上支援 U2F 的瀏覽器(啟用了 FIDO U2F 的 Chrome、Opera、Vivaldi 或 Firefox)中的網頁版密碼庫和瀏覽器擴充套件。" }, "twoFactorU2fWaiting": { "message": "等待您按下安全金鑰上的按鈕" }, "twoFactorU2fClickSave": { - "message": "點選下方的「儲存」按鈕,以啟用此安全金鑰用於兩步驟登入。" + "message": "點選下方的「儲存」按鈕,以啟用此安全鑰匙用於兩步驟登入。" }, "twoFactorU2fProblemReadingTryAgain": { - "message": "讀取安全金鑰時發生問題。請再試一次。" + "message": "讀取安全鑰匙時發生問題。請再試一次。" }, "twoFactorWebAuthnWarning": { "message": "由於平台限制,無法於所有 Bitwarden 應用程式中使用 WebAuthn。請設定另一套兩步驟登入方式,以確保在 WebAuthn 無法使用時還能存取您的帳戶。支援的平台有:" }, "twoFactorWebAuthnSupportWeb": { - "message": "桌上型電腦/筆記型電腦上啟用了 WebAuthn 功能的瀏覽器(Chrome、Opera、Vivaldi 或啟用了 FIDO U2F 的 Firefox)上的網頁版密碼庫和瀏覽器擴充套件。" + "message": "桌上型電腦/筆記型電腦上支援 WebAuthn 功能的瀏覽器(啟用了 FIDO U2F 的 Chrome、Opera、Vivaldi 或 Firefox)上的網頁版密碼庫和瀏覽器擴充套件。" }, "twoFactorRecoveryYourCode": { "message": "您的 Bitwarden 兩步驟登入復原碼" @@ -1547,6 +1556,10 @@ "message": "點選下方的報告,識別並消除您的線上帳戶中的安全漏洞。", "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization vault." }, + "orgsReportsDesc": { + "message": "點選下方的報告,識別並消除組織帳號的安全漏洞。", + "description": "Vault health reports can be used to evaluate the security of your Bitwarden individual or organization Vault." + }, "unsecuredWebsitesReport": { "message": "不安全的網站" }, @@ -1575,10 +1588,10 @@ "message": "兩步驟登入為您的帳戶增加了一層保護。使用 Bitwarden 驗證器或使用其他方法為這些帳戶啟用兩步驟登入。" }, "inactive2faFound": { - "message": "發現未啟用 2FA 的登入資料" + "message": "發現未啟用 2FA 的登入" }, "inactive2faFoundDesc": { - "message": "我們在您的密碼庫中找到 $COUNT$ 個可能未設定雙因素驗證的網站(依據 twofactorauth.org)。若要進一步保護這些帳戶,您應啟用雙因素驗證。", + "message": "我們在您的密碼庫中找到 $COUNT$ 個可能未設定兩步驟登入的網站(依據 twofactorauth.org)。若要進一步保護這些帳戶,您應啟用兩步驟登入。", "placeholders": { "count": { "content": "$1", @@ -1587,7 +1600,7 @@ } }, "noInactive2fa": { - "message": "沒有在您的密碼庫中找到未設定雙因素驗證的網站。" + "message": "沒有在您的密碼庫中找到未設定兩步驟登入的網站。" }, "instructions": { "message": "說明" @@ -1925,7 +1938,7 @@ "message": "您確定要取消訂閱嗎?在目前計費周期結束之後,您將無法使用所有訂閲功能。" }, "canceledSubscription": { - "message": "已取消訂閱。" + "message": "訂閱已取消" }, "neverExpires": { "message": "永不逾期" @@ -2087,7 +2100,7 @@ "message": "此帳戶為企業所有。" }, "billingEmail": { - "message": "電子郵件帳單" + "message": "帳單電子郵件" }, "businessName": { "message": "企業名稱" @@ -2099,7 +2112,7 @@ "message": "使用者" }, "userSeats": { - "message": "使用者數量" + "message": "使用者席位" }, "additionalUserSeats": { "message": "附加使用者席位" @@ -2290,7 +2303,7 @@ "message": "您的新組織已準備好!" }, "organizationUpgraded": { - "message": "您的組織已升級。" + "message": "組織已升級" }, "leave": { "message": "離開" @@ -2299,7 +2312,7 @@ "message": "您確定要離開這個組織嗎?" }, "leftOrganization": { - "message": "您已離開組織。" + "message": "您已離開組織" }, "defaultCollection": { "message": "預設集合" @@ -2323,10 +2336,10 @@ "message": "原則" }, "singleSignOn": { - "message": "單一登入 (SSO)" + "message": "單一登入" }, "editPolicy": { - "message": "編輯策略" + "message": "編輯原則" }, "groups": { "message": "群組" @@ -2425,7 +2438,7 @@ "message": "已確認" }, "clientOwnerEmail": { - "message": "用戶端擁有者電子郵件" + "message": "用戶擁有者電子郵件" }, "owner": { "message": "擁有者" @@ -2488,19 +2501,19 @@ "message": "網頁版密碼庫" }, "loggedIn": { - "message": "已登入。" + "message": "已登入" }, "changedPassword": { - "message": "已變更帳戶密碼。" + "message": "帳戶密碼已儲存" }, "enabledUpdated2fa": { - "message": "已啟用 / 更新兩步驟登入。" + "message": "兩步驟登入已儲存" }, "disabled2fa": { - "message": "已停用兩步驟登入。" + "message": "兩步驟登入已停用" }, "recovered2fa": { - "message": "已透過兩步驟登入復原帳戶。" + "message": "已透過兩步驟登入復原帳戶" }, "failedLogin": { "message": "嘗試登入失敗,密碼錯誤。" @@ -2509,13 +2522,13 @@ "message": "嘗試登入失敗,兩步驟登入錯誤。" }, "exportedVault": { - "message": "已匯出密碼庫。" + "message": "已匯出密碼庫" }, "exportedOrganizationVault": { "message": "已匯出組織密碼庫。" }, "editedOrgSettings": { - "message": "已編輯組織設定。" + "message": "組織設定已儲存" }, "createdItemId": { "message": "已建立項目 $ID$。", @@ -2583,6 +2596,15 @@ } } }, + "viewedCardNumberItemId": { + "message": "檢視了項目 $ID$ 的卡號。", + "placeholders": { + "id": { + "content": "$1", + "example": "Unique ID" + } + } + }, "viewedSecurityCodeItemId": { "message": "檢視了項目 $ID$ 的安全代碼。", "placeholders": { @@ -2926,7 +2948,7 @@ "message": "請檢查您的電子郵件收件匣以取得驗證連結。" }, "emailVerified": { - "message": "您的電子郵件已驗證。" + "message": "電子郵件已驗證" }, "emailVerifiedFailed": { "message": "無法驗證電子郵件。請嘗試傳送一封新的驗證電子郵件。" @@ -2994,6 +3016,9 @@ "myOrganization": { "message": "我的組織" }, + "organizationInfo": { + "message": "組織資訊" + }, "deleteOrganization": { "message": "刪除組織" }, @@ -3025,7 +3050,7 @@ "message": "該組織和所有關聯資料已刪除。" }, "organizationUpdated": { - "message": "已更新組織" + "message": "組織已儲存" }, "taxInformation": { "message": "稅務資訊" @@ -3071,10 +3096,10 @@ "message": "只有在美國的客戶才能使用銀行帳戶付款。您必須驗證您的銀行帳戶。我們將在未來 1-2 個工作天內匯入兩筆小額款項。在組織的計費頁面上輸入款項金額以驗證銀行帳戶。" }, "verifyBankAccountFailureWarning": { - "message": "驗證銀行帳戶失敗將會導致付款失效,而且您的訂閱將會被取消。" + "message": "驗證銀行帳戶失敗將會導致付款失效,並且您的訂閱將會被取消。" }, "verifiedBankAccount": { - "message": "已驗證您的銀行帳戶。" + "message": "銀行帳戶已驗證" }, "bankAccount": { "message": "銀行帳戶" @@ -3115,14 +3140,14 @@ "message": "為您的訂閲設定席位限制。達到此限制後,您將無法邀請新的使用者。" }, "maxSeatLimit": { - "message": "最大席位限制(選用)", + "message": "席位限制(選用)", "description": "Upper limit of seats to allow through autoscaling" }, "maxSeatCost": { "message": "最大潛在席位費用" }, "addSeats": { - "message": "新增席位", + "message": "增加席位", "description": "Seat = User Seat" }, "removeSeats": { @@ -3133,7 +3158,7 @@ "message": "調整訂閱將會依比例變更您的計費總額。若新邀請的使用者超過您的訂閱席位,您將立即收到依比例收取的額外使用者費用。" }, "subscriptionUserSeats": { - "message": "您的訂閱當中包含 $COUNT$ 位使用者的授權。", + "message": "您的訂閱當中包含最多 $COUNT$ 位使用者。", "placeholders": { "count": { "content": "$1", @@ -3205,7 +3230,7 @@ } }, "seatsToAdd": { - "message": "要新增的席位數" + "message": "要增加的席位數" }, "seatsToRemove": { "message": "要移除的席位數" @@ -3324,11 +3349,11 @@ "description": "ex. Date this item was created" }, "datePasswordUpdated": { - "message": "密碼已更新", + "message": "密碼更新於", "description": "ex. Date this password was updated" }, "organizationIsDisabled": { - "message": "組織已停用。" + "message": "組織已停用" }, "disabledOrganizationFilterError": { "message": "無法存取已停用組織中的項目。請聯絡您組織的所有者以獲取協助。" @@ -3458,7 +3483,7 @@ "message": "您必須在進行應用程式內購買的商店中管理訂閱。" }, "minLength": { - "message": "最短長度" + "message": "最小長度" }, "clone": { "message": "複製" @@ -3530,7 +3555,7 @@ "message": "新的主密碼不符合原則要求。" }, "minimumNumberOfWords": { - "message": "字數下限" + "message": "最少單字個數" }, "defaultType": { "message": "預設類型" @@ -3562,7 +3587,7 @@ "message": "永久刪除" }, "permanentlyDeleteSelected": { - "message": "永久刪除已選取項目" + "message": "永久刪除所選" }, "permanentlyDeleteItem": { "message": "永久刪除項目" @@ -3586,7 +3611,7 @@ } }, "permanentlyDeletedItemId": { - "message": "已永久刪除 $ID$ 項目。", + "message": "已永久刪除項目 $ID$", "placeholders": { "id": { "content": "$1", @@ -3598,7 +3623,7 @@ "message": "還原" }, "restoreSelected": { - "message": "還原已選取的項目" + "message": "還原所選" }, "restoreItem": { "message": "還原項目" @@ -3625,7 +3650,7 @@ } }, "restoredItemId": { - "message": "已還原項目 $ID$。", + "message": "已還原項目 $ID$", "placeholders": { "id": { "content": "$1", @@ -3690,6 +3715,12 @@ "ssoIdentifierRequired": { "message": "需要組織識別碼。" }, + "ssoIdentifier": { + "message": "SSO 識別" + }, + "ssoIdentifierHint": { + "message": "將該 ID 提供給您的成員,以便使用 SSO 登入" + }, "unlinkSso": { "message": "取消連結 SSO" }, @@ -3724,7 +3755,7 @@ "message": "必須先開啟「單一組織」企業原則,才能激活此原則。" }, "requireSsoPolicyReqError": { - "message": "未啟用單一組織原則。" + "message": "單一組織原則未啟用。" }, "requireSsoExemption": { "message": "組織擁有者與管理員不受此原則的執行影響。" @@ -3744,11 +3775,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "已建立 Send", + "message": "Send 已儲存", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "已編輯 Send", + "message": "Send 已儲存", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deletedSend": { @@ -3775,7 +3806,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "到期日" + "message": "逾期日期" }, "expirationDateDesc": { "message": "如果設定此選項,對此 Send 的存取將在指定的日期和時間後逾期。", @@ -3907,10 +3938,10 @@ "message": "透過在下方輸入他們的 Bitwarden 帳戶的電子郵件地址,來邀請新的緊急聯絡人。若他們還沒有 Bitwarden 帳戶,系統將提示他們建立新帳戶。" }, "emergencyAccessRecoveryInitiated": { - "message": "已啟動緊急存取" + "message": "緊急存取已發起" }, "emergencyAccessRecoveryApproved": { - "message": "已確認緊急存取" + "message": "已核准緊急存取" }, "viewDesc": { "message": "可以檢視您擁有的密碼庫中的所有項目。" @@ -4001,7 +4032,7 @@ } }, "emergencyApproved": { - "message": "緊急存取已批准。" + "message": "緊急存取已批准" }, "emergencyRejected": { "message": "已拒絕緊急存取" @@ -4057,7 +4088,7 @@ "message": "可以管理組織原則的組織使用者豁免此原則的執行。" }, "disableHideEmail": { - "message": "建立或編輯 Send 時,始終對收件人顯示成員的電子郵件位址。", + "message": "建立或編輯 Send 時,始終對收件人顯示成員的電子郵件地址。", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendOptionsPolicyInEffect": { @@ -4091,6 +4122,9 @@ "permissions": { "message": "權限" }, + "permission": { + "message": "權限" + }, "managerPermissions": { "message": "經理權限" }, @@ -4110,7 +4144,7 @@ "message": "您欠缺執行本動作必要的權限。" }, "manageAllCollections": { - "message": "管理所有集合。" + "message": "管理所有集合" }, "createNewCollections": { "message": "建立新的集合" @@ -4161,7 +4195,7 @@ "message": "組織原則已禁止您將項目匯入至您的個人密碼庫。" }, "personalOwnershipCheckboxDesc": { - "message": "停用組織使用者的個人擁有權。" + "message": "停用組織使用者的個人擁有權" }, "textHiddenByDefault": { "message": "存取此 Send 時,將預設隱藏文字", @@ -4496,6 +4530,10 @@ "clients": { "message": "客户" }, + "client": { + "message": "用戶端", + "description": "This is used as a table header to describe which client application created an event log." + }, "providerAdmin": { "message": "提供者管理員" }, @@ -4567,10 +4605,10 @@ } }, "providerIsDisabled": { - "message": "已停用提供者。" + "message": "提供者已停用" }, "providerUpdated": { - "message": "已更新提供者" + "message": "提供者已儲存" }, "yourProviderIs": { "message": "您的提供者為 $PROVIDER$。他們對您的組織具有管理和計費權限。", @@ -4597,7 +4635,7 @@ "message": "新增" }, "updatedMasterPassword": { - "message": "已更新主密碼" + "message": "主密碼已儲存" }, "updateMasterPassword": { "message": "更新主密碼" @@ -4615,10 +4653,10 @@ "message": "為成員設定最大密碼庫逾時時間。" }, "maximumVaultTimeoutLabel": { - "message": "最大密碼庫逾時時長" + "message": "最大密碼庫逾時時間" }, "invalidMaximumVaultTimeout": { - "message": "無效的最大密碼庫逾時時長。" + "message": "無效的最大密碼庫逾時時間。" }, "hours": { "message": "小時" @@ -4934,7 +4972,7 @@ "message": "移除主密碼" }, "removedMasterPassword": { - "message": "已移除主密碼。" + "message": "主密碼已移除" }, "allowSso": { "message": "允許 SSO 身分驗證" @@ -4997,7 +5035,7 @@ "message": "贊助邀請已逾期,您可以刪除您建立的組織,以避免在 7 天試用期結束後被收取費用。 您也可以關閉此提示以保留該組織並承擔計費責任。" }, "newFamiliesOrganization": { - "message": "新的家庭組織" + "message": "新增家庭組織" }, "acceptOffer": { "message": "接受邀請" @@ -5057,7 +5095,7 @@ "message": "若要在您自己的伺服器上設定組織,您需要上傳授權檔案。若要使您的自我裝載組織支援「免費家庭」方案及進階帳單功能,您需要設定帳單同步。" }, "billingSyncApiKeyRotated": { - "message": "權杖已輪換。" + "message": "權杖已輪換" }, "billingSync": { "message": "帳單同步" @@ -5129,10 +5167,10 @@ "message": "您的登入階段已逾時,請返回並嘗試重新登入。" }, "exportingPersonalVaultTitle": { - "message": "匯出個人密碼庫" + "message": "正匯出個人密碼庫" }, "exportingOrganizationVaultTitle": { - "message": "匯出組織密碼庫" + "message": "正匯出組織密碼庫" }, "exportingPersonalVaultDescription": { "message": "只會匯出與 $EMAIL$ 關聯的個人密碼庫。組織密碼庫的項目不包含在內。", @@ -5294,7 +5332,7 @@ "message": "啟用裝置驗證" }, "deviceVerificationDesc": { - "message": "啟用後,從無法辨識的裝置登入時,驗證碼將傳送至您的電子郵件地址" + "message": "從無法辨識的裝置登入時,驗證碼將傳送至您的電子郵件地址" }, "updatedDeviceVerification": { "message": "已更新裝置驗證" @@ -5362,7 +5400,7 @@ "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "scimSettingsSaved": { - "message": "已成功儲存 SCIM 設定", + "message": "SCIM 設定已儲存", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "inputRequired": { @@ -5380,6 +5418,15 @@ } } }, + "inputMaxLength": { + "message": "輸入的內容長度不得超過 $COUNT$ 字元。", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, "fieldsNeedAttention": { "message": "您需注意上方的 $COUNT$ 個欄位。", "placeholders": { @@ -5395,12 +5442,24 @@ "on": { "message": "開啟" }, + "members": { + "message": "成員" + }, + "reporting": { + "message": "回報" + }, "cardBrandMir": { "message": "Mir" }, "numberOfUsers": { "message": "使用者數量" }, + "loggingInAs": { + "message": "正登入為" + }, + "notYou": { + "message": "不是您嗎?" + }, "multiSelectPlaceholder": { "message": "-- 輸入以進行篩選 --" }, @@ -5412,5 +5471,41 @@ }, "multiSelectClearAll": { "message": "全部清除" + }, + "from": { + "message": "從" + }, + "to": { + "message": "至" + }, + "member": { + "message": "成員" + }, + "update": { + "message": "更新" + }, + "role": { + "message": "角色" + }, + "canView": { + "message": "可以檢視" + }, + "canViewExceptPass": { + "message": "可以檢視(除了密碼)" + }, + "canEdit": { + "message": "可以編輯" + }, + "canEditExceptPass": { + "message": "可以編輯(除了密碼)" + }, + "group": { + "message": "群組" + }, + "groupAccessAll": { + "message": "此群組可存取及變更所有項目。" + }, + "memberAccessAll": { + "message": "此成員可存取及變更所有項目。" } } diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index aeb99ec3491..b226cd4c09a 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -15,5 +15,10 @@ "preserveWhitespaces": true }, "files": ["src/polyfills.ts", "src/main.ts", "../../bitwarden_license/bit-web/src/main.ts"], - "include": ["src/connectors/*.ts", "src/**/*.stories.ts", "src/**/*.spec.ts"] + "include": [ + "src/connectors/*.ts", + "src/**/*.stories.ts", + "src/**/*.spec.ts", + "../../libs/common/src/services/**/*.worker.ts" + ] } diff --git a/bitwarden_license/bit-web/src/app/app.module.ts b/bitwarden_license/bit-web/src/app/app.module.ts index c26b04ff309..9c8745d6b27 100644 --- a/bitwarden_license/bit-web/src/app/app.module.ts +++ b/bitwarden_license/bit-web/src/app/app.module.ts @@ -7,7 +7,7 @@ import { RouterModule } from "@angular/router"; import { InfiniteScrollModule } from "ngx-infinite-scroll"; import { JslibModule } from "@bitwarden/angular/jslib.module"; -import { CoreModule } from "@bitwarden/web-vault/app/core"; +import { CoreModule } from "@bitwarden/web-vault/app/core/core.module"; import { OssRoutingModule } from "@bitwarden/web-vault/app/oss-routing.module"; import { OssModule } from "@bitwarden/web-vault/app/oss.module"; import { WildcardRoutingModule } from "@bitwarden/web-vault/app/wildcard-routing.module"; diff --git a/bitwarden_license/bit-web/src/app/providers/manage/events.component.ts b/bitwarden_license/bit-web/src/app/providers/manage/events.component.ts index 0dd1b6de458..5c1105f6a79 100644 --- a/bitwarden_license/bit-web/src/app/providers/manage/events.component.ts +++ b/bitwarden_license/bit-web/src/app/providers/manage/events.component.ts @@ -82,8 +82,14 @@ export class EventsComponent extends BaseEventsComponent implements OnInit { } protected getUserName(r: EventResponse, userId: string) { - return userId != null && this.providerUsersUserIdMap.has(userId) - ? this.providerUsersUserIdMap.get(userId) - : null; + if (r.installationId != null) { + return `Installation: ${r.installationId}`; + } + + if (userId != null && this.providerUsersUserIdMap.has(userId)) { + return this.providerUsersUserIdMap.get(userId); + } + + return null; } } diff --git a/libs/angular/src/components/hint.component.ts b/libs/angular/src/components/hint.component.ts index 7e802722bf3..de49e28c86e 100644 --- a/libs/angular/src/components/hint.component.ts +++ b/libs/angular/src/components/hint.component.ts @@ -1,12 +1,15 @@ +import { Directive, OnInit } from "@angular/core"; import { Router } from "@angular/router"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; +import { LoginService } from "@bitwarden/common/abstractions/login.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { PasswordHintRequest } from "@bitwarden/common/models/request/password-hint.request"; -export class HintComponent { +@Directive() +export class HintComponent implements OnInit { email = ""; formPromise: Promise; @@ -18,9 +21,14 @@ export class HintComponent { protected i18nService: I18nService, protected apiService: ApiService, protected platformUtilsService: PlatformUtilsService, - private logService: LogService + private logService: LogService, + private loginService: LoginService ) {} + ngOnInit(): void { + this.email = this.loginService.getEmail() ?? ""; + } + async submit() { if (this.email == null || this.email === "") { this.platformUtilsService.showToast( diff --git a/libs/angular/src/components/login.component.ts b/libs/angular/src/components/login.component.ts index ab0e4df57e6..0b35b827afc 100644 --- a/libs/angular/src/components/login.component.ts +++ b/libs/angular/src/components/login.component.ts @@ -1,8 +1,10 @@ import { Directive, NgZone, OnInit } from "@angular/core"; import { FormBuilder, Validators } from "@angular/forms"; -import { Router } from "@angular/router"; +import { ActivatedRoute, Router } from "@angular/router"; import { take } from "rxjs/operators"; +import { ApiService } from "@bitwarden/common/abstractions/api.service"; +import { AppIdService } from "@bitwarden/common/abstractions/appId.service"; import { AuthService } from "@bitwarden/common/abstractions/auth.service"; import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service"; import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service"; @@ -12,6 +14,7 @@ import { } from "@bitwarden/common/abstractions/formValidationErrors.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; +import { LoginService } from "@bitwarden/common/abstractions/login.service"; import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwordGeneration.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; @@ -29,20 +32,30 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit onSuccessfulLoginNavigate: () => Promise; onSuccessfulLoginTwoFactorNavigate: () => Promise; onSuccessfulLoginForceResetNavigate: () => Promise; - selfHosted = false; + private selfHosted = false; + showLoginWithDevice: boolean; + validatedEmail = false; + paramEmailSet = false; formGroup = this.formBuilder.group({ email: ["", [Validators.required, Validators.email]], masterPassword: ["", [Validators.required, Validators.minLength(8)]], - rememberEmail: [true], + rememberEmail: [false], }); protected twoFactorRoute = "2fa"; protected successRoute = "vault"; protected forcePasswordResetRoute = "update-temp-password"; protected alwaysRememberEmail = false; + protected skipRememberEmail = false; + + get loggedEmail() { + return this.formGroup.value.email; + } constructor( + protected apiService: ApiService, + protected appIdService: AppIdService, protected authService: AuthService, protected router: Router, platformUtilsService: PlatformUtilsService, @@ -54,7 +67,9 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit protected logService: LogService, protected ngZone: NgZone, protected formBuilder: FormBuilder, - protected formValidationErrorService: FormValidationErrorsService + protected formValidationErrorService: FormValidationErrorsService, + protected route: ActivatedRoute, + protected loginService: LoginService ) { super(environmentService, i18nService, platformUtilsService); this.selfHosted = platformUtilsService.isSelfHost(); @@ -65,19 +80,35 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit } async ngOnInit() { - let email = this.formGroup.value.email; + this.route?.queryParams.subscribe((params) => { + if (params != null) { + const queryParamsEmail = params["email"]; + if (queryParamsEmail != null && queryParamsEmail.indexOf("@") > -1) { + this.formGroup.get("email").setValue(queryParamsEmail); + this.paramEmailSet = true; + } + } + }); + let email = this.loginService.getEmail(); + if (email == null || email === "") { email = await this.stateService.getRememberedEmail(); - this.formGroup.get("email")?.setValue(email); + } - if (email == null) { - this.formGroup.get("email")?.setValue(""); - } + if (!this.paramEmailSet) { + this.formGroup.get("email")?.setValue(email ?? ""); } if (!this.alwaysRememberEmail) { - const rememberEmail = (await this.stateService.getRememberedEmail()) != null; + let rememberEmail = this.loginService.getRememberEmail(); + if (rememberEmail == null) { + rememberEmail = (await this.stateService.getRememberedEmail()) != null; + } this.formGroup.get("rememberEmail")?.setValue(rememberEmail); } + + if (email) { + this.validateEmail(); + } } async submit(showToast = true) { @@ -108,6 +139,7 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit ); this.formPromise = this.authService.logIn(credentials); const response = await this.formPromise; + this.setFormValues(); if (data.rememberEmail || this.alwaysRememberEmail) { await this.stateService.setRememberedEmail(data.email); } else { @@ -130,6 +162,7 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit } else { const disableFavicon = await this.stateService.getDisableFavicon(); await this.stateService.setDisableFavicon(!!disableFavicon); + this.loginService.clearValues(); if (this.onSuccessfulLogin != null) { this.onSuccessfulLogin(); } @@ -191,6 +224,25 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit ); } + async validateEmail() { + this.formGroup.controls.email.markAsTouched(); + const emailInvalid = this.formGroup.get("email").invalid; + if (!emailInvalid) { + this.toggleValidateEmail(true); + await this.getLoginWithDevice(this.loggedEmail); + } + } + + toggleValidateEmail(value: boolean) { + this.validatedEmail = value; + this.formGroup.controls.masterPassword.reset(); + } + + setFormValues() { + this.loginService.setEmail(this.formGroup.value.email); + this.loginService.setRememberEmail(this.formGroup.value.rememberEmail); + } + private getErrorToastMessage() { const error: AllValidationErrors = this.formValidationErrorService .getFormValidationErrors(this.formGroup.controls) @@ -213,8 +265,14 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit return `${error.controlName}${name}`; } - protected focusInput() { - const email = this.formGroup.value.email; - document.getElementById(email == null || email === "" ? "email" : "masterPassword").focus(); + private async getLoginWithDevice(email: string) { + try { + const deviceIdentifier = await this.appIdService.getAppId(); + const res = await this.apiService.getKnownDevice(email, deviceIdentifier); + //ensure the application is not self-hosted + this.showLoginWithDevice = res && !this.selfHosted; + } catch (e) { + this.showLoginWithDevice = false; + } } } diff --git a/libs/angular/src/components/two-factor.component.ts b/libs/angular/src/components/two-factor.component.ts index 1c2f4ff60b0..f61e54710b2 100644 --- a/libs/angular/src/components/two-factor.component.ts +++ b/libs/angular/src/components/two-factor.component.ts @@ -9,6 +9,7 @@ import { AuthService } from "@bitwarden/common/abstractions/auth.service"; import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; +import { LoginService } from "@bitwarden/common/abstractions/login.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { TwoFactorService } from "@bitwarden/common/abstractions/twoFactor.service"; @@ -59,7 +60,8 @@ export class TwoFactorComponent extends CaptchaProtectedComponent implements OnI protected route: ActivatedRoute, protected logService: LogService, protected twoFactorService: TwoFactorService, - protected appIdService: AppIdService + protected appIdService: AppIdService, + protected loginService: LoginService ) { super(environmentService, i18nService, platformUtilsService); this.webAuthnSupported = this.platformUtilsService.supportsWebAuthn(win); @@ -204,6 +206,7 @@ export class TwoFactorComponent extends CaptchaProtectedComponent implements OnI return; } if (this.onSuccessfulLogin != null) { + this.loginService.clearValues(); this.onSuccessfulLogin(); } if (response.resetMasterPassword) { @@ -213,8 +216,10 @@ export class TwoFactorComponent extends CaptchaProtectedComponent implements OnI this.successRoute = "update-temp-password"; } if (this.onSuccessfulLoginNavigate != null) { + this.loginService.clearValues(); this.onSuccessfulLoginNavigate(); } else { + this.loginService.clearValues(); this.router.navigate([this.successRoute], { queryParams: { identifier: this.identifier, diff --git a/libs/angular/src/components/view.component.ts b/libs/angular/src/components/view.component.ts index 2d4f384199d..8e724b9186a 100644 --- a/libs/angular/src/components/view.component.ts +++ b/libs/angular/src/components/view.component.ts @@ -257,7 +257,7 @@ export class ViewComponent implements OnDestroy, OnInit { this.showCardNumber = !this.showCardNumber; if (this.showCardNumber) { - this.eventService.collect(EventType.Cipher_ClientToggledCardCodeVisible, this.cipherId); + this.eventService.collect(EventType.Cipher_ClientToggledCardNumberVisible, this.cipherId); } } diff --git a/libs/angular/src/services/jslib-services.module.ts b/libs/angular/src/services/jslib-services.module.ts index ee472c2f35d..5f49041bd76 100644 --- a/libs/angular/src/services/jslib-services.module.ts +++ b/libs/angular/src/services/jslib-services.module.ts @@ -1,6 +1,5 @@ import { Injector, LOCALE_ID, NgModule } from "@angular/core"; -import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; import { AccountApiService as AccountApiServiceAbstraction } from "@bitwarden/common/abstractions/account/account-api.service"; import { InternalAccountService, @@ -18,6 +17,7 @@ import { ConfigApiServiceAbstraction } from "@bitwarden/common/abstractions/conf import { ConfigServiceAbstraction } from "@bitwarden/common/abstractions/config/config.service.abstraction"; import { CryptoService as CryptoServiceAbstraction } from "@bitwarden/common/abstractions/crypto.service"; import { CryptoFunctionService as CryptoFunctionServiceAbstraction } from "@bitwarden/common/abstractions/cryptoFunction.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { EnvironmentService as EnvironmentServiceAbstraction } from "@bitwarden/common/abstractions/environment.service"; import { EventService as EventServiceAbstraction } from "@bitwarden/common/abstractions/event.service"; import { ExportService as ExportServiceAbstraction } from "@bitwarden/common/abstractions/export.service"; @@ -31,6 +31,7 @@ import { FormValidationErrorsService as FormValidationErrorsServiceAbstraction } import { I18nService as I18nServiceAbstraction } from "@bitwarden/common/abstractions/i18n.service"; import { KeyConnectorService as KeyConnectorServiceAbstraction } from "@bitwarden/common/abstractions/keyConnector.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; +import { LoginService as LoginServiceAbstraction } from "@bitwarden/common/abstractions/login.service"; import { MessagingService as MessagingServiceAbstraction } from "@bitwarden/common/abstractions/messaging.service"; import { NotificationsService as NotificationsServiceAbstraction } from "@bitwarden/common/abstractions/notifications.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/abstractions/organization/organization-api.service.abstraction"; @@ -62,6 +63,7 @@ import { ValidationService as ValidationServiceAbstraction } from "@bitwarden/co import { VaultTimeoutService as VaultTimeoutServiceAbstraction } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service"; import { VaultTimeoutSettingsService as VaultTimeoutSettingsServiceAbstraction } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; +import { flagEnabled } from "@bitwarden/common/misc/flags"; import { Account } from "@bitwarden/common/models/domain/account"; import { GlobalState } from "@bitwarden/common/models/domain/global-state"; import { AccountApiServiceImplementation } from "@bitwarden/common/services/account/account-api.service"; @@ -77,7 +79,8 @@ import { ConfigApiService } from "@bitwarden/common/services/config/config-api.s import { ConfigService } from "@bitwarden/common/services/config/config.service"; import { ConsoleLogService } from "@bitwarden/common/services/consoleLog.service"; import { CryptoService } from "@bitwarden/common/services/crypto.service"; -import { EncryptService } from "@bitwarden/common/services/encrypt.service"; +import { EncryptServiceImplementation } from "@bitwarden/common/services/cryptography/encrypt.service.implementation"; +import { MultithreadEncryptServiceImplementation } from "@bitwarden/common/services/cryptography/multithread-encrypt.service.implementation"; import { EnvironmentService } from "@bitwarden/common/services/environment.service"; import { EventService } from "@bitwarden/common/services/event.service"; import { ExportService } from "@bitwarden/common/services/export.service"; @@ -86,6 +89,7 @@ import { FolderApiService } from "@bitwarden/common/services/folder/folder-api.s import { FolderService } from "@bitwarden/common/services/folder/folder.service"; import { FormValidationErrorsService } from "@bitwarden/common/services/formValidationErrors.service"; import { KeyConnectorService } from "@bitwarden/common/services/keyConnector.service"; +import { LoginService } from "@bitwarden/common/services/login.service"; import { NotificationsService } from "@bitwarden/common/services/notifications.service"; import { OrganizationApiService } from "@bitwarden/common/services/organization/organization-api.service"; import { OrganizationService } from "@bitwarden/common/services/organization/organization.service"; @@ -216,7 +220,8 @@ import { AbstractThemingService } from "./theming/theming.service.abstraction"; i18nService: I18nServiceAbstraction, injector: Injector, logService: LogService, - stateService: StateServiceAbstraction + stateService: StateServiceAbstraction, + encryptService: EncryptService ) => new CipherService( cryptoService, @@ -226,7 +231,8 @@ import { AbstractThemingService } from "./theming/theming.service.abstraction"; i18nService, () => injector.get(SearchServiceAbstraction), logService, - stateService + stateService, + encryptService ), deps: [ CryptoServiceAbstraction, @@ -237,6 +243,7 @@ import { AbstractThemingService } from "./theming/theming.service.abstraction"; Injector, // TODO: Get rid of this circular dependency! LogService, StateServiceAbstraction, + EncryptService, ], }, { @@ -299,7 +306,7 @@ import { AbstractThemingService } from "./theming/theming.service.abstraction"; useClass: CryptoService, deps: [ CryptoFunctionServiceAbstraction, - AbstractEncryptService, + EncryptService, PlatformUtilsServiceAbstraction, LogService, StateServiceAbstraction, @@ -442,8 +449,8 @@ import { AbstractThemingService } from "./theming/theming.service.abstraction"; deps: [WINDOW], }, { - provide: AbstractEncryptService, - useClass: EncryptService, + provide: EncryptService, + useFactory: encryptServiceFactory, deps: [CryptoFunctionServiceAbstraction, LogService, LOG_MAC_FAILURES], }, { @@ -573,6 +580,20 @@ import { AbstractThemingService } from "./theming/theming.service.abstraction"; useClass: ValidationService, deps: [I18nServiceAbstraction, PlatformUtilsServiceAbstraction], }, + { + provide: LoginServiceAbstraction, + useClass: LoginService, + }, ], }) export class JslibServicesModule {} + +function encryptServiceFactory( + cryptoFunctionservice: CryptoFunctionServiceAbstraction, + logService: LogService, + logMacFailures: boolean +): EncryptService { + return flagEnabled("multithreadDecryption") + ? new MultithreadEncryptServiceImplementation(cryptoFunctionservice, logService, logMacFailures) + : new EncryptServiceImplementation(cryptoFunctionservice, logService, logMacFailures); +} diff --git a/libs/angular/src/vault/vault-filter/services/vault-filter.service.ts b/libs/angular/src/vault/vault-filter/services/vault-filter.service.ts index 1a630eb7f63..dcdbd4a9cac 100644 --- a/libs/angular/src/vault/vault-filter/services/vault-filter.service.ts +++ b/libs/angular/src/vault/vault-filter/services/vault-filter.service.ts @@ -38,8 +38,13 @@ export class VaultFilterService implements DeprecatedVaultFilterServiceAbstracti return new Set(await this.stateService.getCollapsedGroupings()); } - buildOrganizations(): Promise { - return this.organizationService.getAll(); + async buildOrganizations(): Promise { + let organizations = await this.organizationService.getAll(); + if (organizations != null) { + organizations = organizations.sort((a, b) => a.name.localeCompare(b.name)); + } + + return organizations; } buildNestedFolders(organizationId?: string): Observable> { diff --git a/libs/common/spec/importers/bitwardenJsonImporter.spec.ts b/libs/common/spec/importers/bitwarden-json-importer.spec.ts similarity index 89% rename from libs/common/spec/importers/bitwardenJsonImporter.spec.ts rename to libs/common/spec/importers/bitwarden-json-importer.spec.ts index 2184162ee13..8f2fbc5b1b7 100644 --- a/libs/common/spec/importers/bitwardenJsonImporter.spec.ts +++ b/libs/common/spec/importers/bitwarden-json-importer.spec.ts @@ -3,9 +3,9 @@ import { Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; -import { BitwardenJsonImporter } from "@bitwarden/common/importers/bitwardenJsonImporter"; +import { BitwardenJsonImporter } from "@bitwarden/common/importers/bitwarden-json-importer"; -import { data as passwordProtectedData } from "./testData/bitwardenJson/passwordProtected.json"; +import { data as passwordProtectedData } from "./test-data/bitwarden-json/password-protected.json"; describe("bitwarden json importer", () => { let sut: BitwardenJsonImporter; diff --git a/libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts b/libs/common/spec/importers/bitwarden-password-protected-importer.spec.ts similarity index 96% rename from libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts rename to libs/common/spec/importers/bitwarden-password-protected-importer.spec.ts index cddf325a4b3..0b1c3b7b2e2 100644 --- a/libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts +++ b/libs/common/spec/importers/bitwarden-password-protected-importer.spec.ts @@ -4,11 +4,11 @@ import { Substitute, Arg, SubstituteOf } from "@fluffy-spoon/substitute"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { KdfType } from "@bitwarden/common/enums/kdfType"; -import { BitwardenPasswordProtectedImporter } from "@bitwarden/common/importers/bitwardenPasswordProtectedImporter"; +import { BitwardenPasswordProtectedImporter } from "@bitwarden/common/importers/bitwarden-password-protected-importer"; import { Utils } from "@bitwarden/common/misc/utils"; import { ImportResult } from "@bitwarden/common/models/domain/import-result"; -import { data as emptyDecryptedData } from "./testData/bitwardenJson/empty.json"; +import { data as emptyDecryptedData } from "./test-data/bitwarden-json/empty.json"; describe("BitwardenPasswordProtectedImporter", () => { let importer: BitwardenPasswordProtectedImporter; diff --git a/libs/common/spec/importers/chrome-csv-importer.spec.ts b/libs/common/spec/importers/chrome-csv-importer.spec.ts index 6b44aacc833..8e57965d6d9 100644 --- a/libs/common/spec/importers/chrome-csv-importer.spec.ts +++ b/libs/common/spec/importers/chrome-csv-importer.spec.ts @@ -3,8 +3,8 @@ import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; import { LoginView } from "@bitwarden/common/models/view/login.view"; -import { data as androidData } from "./testData/chromeCsv/android-data.csv"; -import { data as simplePasswordData } from "./testData/chromeCsv/simple-password-data.csv"; +import { data as androidData } from "./test-data/chrome-csv/android-data.csv"; +import { data as simplePasswordData } from "./test-data/chrome-csv/simple-password-data.csv"; const CipherData = [ { diff --git a/libs/common/spec/importers/dashlaneCsvImporter.spec.ts b/libs/common/spec/importers/dashlane-csv-importer.spec.ts similarity index 96% rename from libs/common/spec/importers/dashlaneCsvImporter.spec.ts rename to libs/common/spec/importers/dashlane-csv-importer.spec.ts index 5fdd9a95a69..50ae06a434c 100644 --- a/libs/common/spec/importers/dashlaneCsvImporter.spec.ts +++ b/libs/common/spec/importers/dashlane-csv-importer.spec.ts @@ -1,12 +1,12 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { DashlaneCsvImporter as Importer } from "@bitwarden/common/importers/dashlaneImporters/dashlaneCsvImporter"; +import { DashlaneCsvImporter as Importer } from "@bitwarden/common/importers/dashlane/dashlane-csv-importer"; -import { credentialsData } from "./testData/dashlaneCsv/credentials.csv"; -import { identityData } from "./testData/dashlaneCsv/id.csv"; -import { multiplePersonalInfoData } from "./testData/dashlaneCsv/multiplePersonalInfo.csv"; -import { paymentsData } from "./testData/dashlaneCsv/payments.csv"; -import { personalInfoData } from "./testData/dashlaneCsv/personalInfo.csv"; -import { secureNoteData } from "./testData/dashlaneCsv/securenotes.csv"; +import { credentialsData } from "./test-data/dashlane-csv/credentials.csv"; +import { identityData } from "./test-data/dashlane-csv/id.csv"; +import { multiplePersonalInfoData } from "./test-data/dashlane-csv/multiple-personal-info.csv"; +import { paymentsData } from "./test-data/dashlane-csv/payments.csv"; +import { personalInfoData } from "./test-data/dashlane-csv/personal-info.csv"; +import { secureNoteData } from "./test-data/dashlane-csv/securenotes.csv"; describe("Dashlane CSV Importer", () => { let importer: Importer; diff --git a/libs/common/spec/importers/firefoxCsvImporter.spec.ts b/libs/common/spec/importers/firefox-csv-importer.spec.ts similarity index 89% rename from libs/common/spec/importers/firefoxCsvImporter.spec.ts rename to libs/common/spec/importers/firefox-csv-importer.spec.ts index 7b3415df1a8..e25535c5a2b 100644 --- a/libs/common/spec/importers/firefoxCsvImporter.spec.ts +++ b/libs/common/spec/importers/firefox-csv-importer.spec.ts @@ -1,10 +1,10 @@ -import { FirefoxCsvImporter as Importer } from "@bitwarden/common/importers/firefoxCsvImporter"; +import { FirefoxCsvImporter as Importer } from "@bitwarden/common/importers/firefox-csv-importer"; import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; import { LoginView } from "@bitwarden/common/models/view/login.view"; -import { data as firefoxAccountsData } from "./testData/firefoxCsv/firefoxAccountsData.csv"; -import { data as simplePasswordData } from "./testData/firefoxCsv/simplePasswordData.csv"; +import { data as firefoxAccountsData } from "./test-data/firefox-csv/firefox-accounts-data.csv"; +import { data as simplePasswordData } from "./test-data/firefox-csv/simple-password-data.csv"; const CipherData = [ { diff --git a/libs/common/spec/importers/fsecureFskImporter.spec.ts b/libs/common/spec/importers/fsecure-fsk-importer.spec.ts similarity index 98% rename from libs/common/spec/importers/fsecureFskImporter.spec.ts rename to libs/common/spec/importers/fsecure-fsk-importer.spec.ts index f0aa03bb1ca..a49fdcc47a4 100644 --- a/libs/common/spec/importers/fsecureFskImporter.spec.ts +++ b/libs/common/spec/importers/fsecure-fsk-importer.spec.ts @@ -1,4 +1,4 @@ -import { FSecureFskImporter as Importer } from "@bitwarden/common/importers/fsecureFskImporter"; +import { FSecureFskImporter as Importer } from "@bitwarden/common/importers/fsecure-fsk-importer"; const TestDataWithStyleSetToWebsite: string = JSON.stringify({ data: { diff --git a/libs/common/spec/importers/keepass2XmlImporter.spec.ts b/libs/common/spec/importers/keepass2-xml-importer.spec.ts similarity index 99% rename from libs/common/spec/importers/keepass2XmlImporter.spec.ts rename to libs/common/spec/importers/keepass2-xml-importer.spec.ts index 6364acca4ec..e6f22ed8502 100644 --- a/libs/common/spec/importers/keepass2XmlImporter.spec.ts +++ b/libs/common/spec/importers/keepass2-xml-importer.spec.ts @@ -1,4 +1,4 @@ -import { KeePass2XmlImporter as Importer } from "@bitwarden/common/importers/keepass2XmlImporter"; +import { KeePass2XmlImporter as Importer } from "@bitwarden/common/importers/keepass2-xml-importer"; const TestData = ` diff --git a/libs/common/spec/importers/keeperJsonImporter.spec.ts b/libs/common/spec/importers/keeper-json-importer.spec.ts similarity index 97% rename from libs/common/spec/importers/keeperJsonImporter.spec.ts rename to libs/common/spec/importers/keeper-json-importer.spec.ts index ef928396455..b32497a95b1 100644 --- a/libs/common/spec/importers/keeperJsonImporter.spec.ts +++ b/libs/common/spec/importers/keeper-json-importer.spec.ts @@ -1,7 +1,7 @@ -import { KeeperJsonImporter as Importer } from "@bitwarden/common/importers/keeperImporters/keeperJsonImporter"; +import { KeeperJsonImporter as Importer } from "@bitwarden/common/importers/keeper/keeper-json-importer"; import { Utils } from "@bitwarden/common/misc/utils"; -import { testData as TestData } from "./testData/keeperJson/testData"; +import { testData as TestData } from "./test-data/keeper-json/testdata.json"; describe("Keeper Json Importer", () => { const testDataJson = JSON.stringify(TestData); diff --git a/libs/common/spec/importers/lastpassCsvImporter.spec.ts b/libs/common/spec/importers/lastpass-csv-importer.spec.ts similarity index 99% rename from libs/common/spec/importers/lastpassCsvImporter.spec.ts rename to libs/common/spec/importers/lastpass-csv-importer.spec.ts index a18192cf915..8e5f5d8a55d 100644 --- a/libs/common/spec/importers/lastpassCsvImporter.spec.ts +++ b/libs/common/spec/importers/lastpass-csv-importer.spec.ts @@ -1,6 +1,6 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; import { FieldType } from "@bitwarden/common/enums/fieldType"; -import { LastPassCsvImporter as Importer } from "@bitwarden/common/importers/lastpassCsvImporter"; +import { LastPassCsvImporter as Importer } from "@bitwarden/common/importers/lastpass-csv-importer"; import { ImportResult } from "@bitwarden/common/models/domain/import-result"; import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { FieldView } from "@bitwarden/common/models/view/field.view"; diff --git a/libs/common/spec/importers/mykiCsvImporter.spec.ts b/libs/common/spec/importers/myki-csv-importer.spec.ts similarity index 97% rename from libs/common/spec/importers/mykiCsvImporter.spec.ts rename to libs/common/spec/importers/myki-csv-importer.spec.ts index a65bdc450ac..b28e495cf8b 100644 --- a/libs/common/spec/importers/mykiCsvImporter.spec.ts +++ b/libs/common/spec/importers/myki-csv-importer.spec.ts @@ -1,13 +1,13 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { MykiCsvImporter as Importer } from "@bitwarden/common/importers/mykiCsvImporter"; +import { MykiCsvImporter as Importer } from "@bitwarden/common/importers/myki-csv-importer"; import { CipherView } from "@bitwarden/common/models/view/cipher.view"; -import { userAccountData } from "./testData/mykiCsv/UserAccount.csv"; -import { userCreditCardData } from "./testData/mykiCsv/UserCreditCard.csv"; -import { userIdCardData } from "./testData/mykiCsv/UserIdCard.csv"; -import { userIdentityData } from "./testData/mykiCsv/UserIdentity.csv"; -import { userNoteData } from "./testData/mykiCsv/UserNote.csv"; -import { userTwoFaData } from "./testData/mykiCsv/UserTwofa.csv"; +import { userAccountData } from "./test-data/myki-csv/user-account.csv"; +import { userCreditCardData } from "./test-data/myki-csv/user-credit-card.csv"; +import { userIdCardData } from "./test-data/myki-csv/user-id-card.csv"; +import { userIdentityData } from "./test-data/myki-csv/user-identity.csv"; +import { userNoteData } from "./test-data/myki-csv/user-note.csv"; +import { userTwoFaData } from "./test-data/myki-csv/user-twofa.csv"; function expectDriversLicense(cipher: CipherView) { expect(cipher.type).toBe(CipherType.Identity); diff --git a/libs/common/spec/importers/nordpassCsvImporter.spec.ts b/libs/common/spec/importers/nordpass-csv-importer.spec.ts similarity index 94% rename from libs/common/spec/importers/nordpassCsvImporter.spec.ts rename to libs/common/spec/importers/nordpass-csv-importer.spec.ts index ada087bca93..b9ef3c32a5d 100644 --- a/libs/common/spec/importers/nordpassCsvImporter.spec.ts +++ b/libs/common/spec/importers/nordpass-csv-importer.spec.ts @@ -1,13 +1,13 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; import { SecureNoteType } from "@bitwarden/common/enums/secureNoteType"; -import { NordPassCsvImporter as Importer } from "@bitwarden/common/importers/nordpassCsvImporter"; +import { NordPassCsvImporter as Importer } from "@bitwarden/common/importers/nordpass-csv-importer"; import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { IdentityView } from "@bitwarden/common/models/view/identity.view"; -import { data as creditCardData } from "./testData/nordpassCsv/nordpass.card.csv"; -import { data as identityData } from "./testData/nordpassCsv/nordpass.identity.csv"; -import { data as loginData } from "./testData/nordpassCsv/nordpass.login.csv"; -import { data as secureNoteData } from "./testData/nordpassCsv/nordpass.secureNote.csv"; +import { data as creditCardData } from "./test-data/nordpass-csv/nordpass.card.csv"; +import { data as identityData } from "./test-data/nordpass-csv/nordpass.identity.csv"; +import { data as loginData } from "./test-data/nordpass-csv/nordpass.login.csv"; +import { data as secureNoteData } from "./test-data/nordpass-csv/nordpass.secure-note.csv"; const namesTestData = [ { diff --git a/libs/common/spec/importers/onepassword1PifImporter.spec.ts b/libs/common/spec/importers/onepassword-1pif-importer.spec.ts similarity index 99% rename from libs/common/spec/importers/onepassword1PifImporter.spec.ts rename to libs/common/spec/importers/onepassword-1pif-importer.spec.ts index 85080377def..6ba2edde65e 100644 --- a/libs/common/spec/importers/onepassword1PifImporter.spec.ts +++ b/libs/common/spec/importers/onepassword-1pif-importer.spec.ts @@ -1,5 +1,5 @@ import { FieldType } from "@bitwarden/common/enums/fieldType"; -import { OnePassword1PifImporter as Importer } from "@bitwarden/common/importers/onepasswordImporters/onepassword1PifImporter"; +import { OnePassword1PifImporter as Importer } from "@bitwarden/common/importers/onepassword/onepassword-1pif-importer"; const TestData: string = "***aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee***\n" + diff --git a/libs/common/spec/importers/onepassword1PuxImporter.spec.ts b/libs/common/spec/importers/onepassword-1pux-importer.spec.ts similarity index 93% rename from libs/common/spec/importers/onepassword1PuxImporter.spec.ts rename to libs/common/spec/importers/onepassword-1pux-importer.spec.ts index 50d211da994..98b9d6f1ddc 100644 --- a/libs/common/spec/importers/onepassword1PuxImporter.spec.ts +++ b/libs/common/spec/importers/onepassword-1pux-importer.spec.ts @@ -1,34 +1,34 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; import { FieldType } from "@bitwarden/common/enums/fieldType"; import { SecureNoteType } from "@bitwarden/common/enums/secureNoteType"; -import { OnePassword1PuxImporter as Importer } from "@bitwarden/common/importers/onepasswordImporters/onepassword1PuxImporter"; +import { OnePassword1PuxImporter as Importer } from "@bitwarden/common/importers/onepassword/onepassword-1pux-importer"; import { Utils } from "@bitwarden/common/misc/utils"; import { FieldView } from "@bitwarden/common/models/view/field.view"; -import { APICredentialsData } from "./testData/onePassword1Pux/APICredentials"; -import { BankAccountData } from "./testData/onePassword1Pux/BankAccount"; -import { CreditCardData } from "./testData/onePassword1Pux/CreditCard"; -import { DatabaseData } from "./testData/onePassword1Pux/Database"; -import { DriversLicenseData } from "./testData/onePassword1Pux/DriversLicense"; -import { EmailAccountData } from "./testData/onePassword1Pux/EmailAccount"; -import { EmailFieldData } from "./testData/onePassword1Pux/Emailfield"; -import { EmailFieldOnIdentityData } from "./testData/onePassword1Pux/EmailfieldOnIdentity"; -import { EmailFieldOnIdentityPrefilledData } from "./testData/onePassword1Pux/EmailfieldOnIdentity_Prefilled"; -import { IdentityData } from "./testData/onePassword1Pux/IdentityData"; -import { LoginData } from "./testData/onePassword1Pux/LoginData"; -import { MedicalRecordData } from "./testData/onePassword1Pux/MedicalRecord"; -import { MembershipData } from "./testData/onePassword1Pux/Membership"; -import { OnePuxExampleFile } from "./testData/onePassword1Pux/Onepux_example"; -import { OutdoorLicenseData } from "./testData/onePassword1Pux/OutdoorLicense"; -import { PassportData } from "./testData/onePassword1Pux/Passport"; -import { PasswordData } from "./testData/onePassword1Pux/Password"; -import { RewardsProgramData } from "./testData/onePassword1Pux/RewardsProgram"; -import { SSNData } from "./testData/onePassword1Pux/SSN"; -import { SanitizedExport } from "./testData/onePassword1Pux/SanitizedExport"; -import { SecureNoteData } from "./testData/onePassword1Pux/SecureNote"; -import { ServerData } from "./testData/onePassword1Pux/Server"; -import { SoftwareLicenseData } from "./testData/onePassword1Pux/SoftwareLicense"; -import { WirelessRouterData } from "./testData/onePassword1Pux/WirelessRouter"; +import { APICredentialsData } from "./test-data/onepassword-1pux/api-credentials"; +import { BankAccountData } from "./test-data/onepassword-1pux/bank-account"; +import { CreditCardData } from "./test-data/onepassword-1pux/credit-card"; +import { DatabaseData } from "./test-data/onepassword-1pux/database"; +import { DriversLicenseData } from "./test-data/onepassword-1pux/drivers-license"; +import { EmailAccountData } from "./test-data/onepassword-1pux/email-account"; +import { EmailFieldData } from "./test-data/onepassword-1pux/email-field"; +import { EmailFieldOnIdentityData } from "./test-data/onepassword-1pux/email-field-on-identity"; +import { EmailFieldOnIdentityPrefilledData } from "./test-data/onepassword-1pux/email-field-on-identity_prefilled"; +import { IdentityData } from "./test-data/onepassword-1pux/identity-data"; +import { LoginData } from "./test-data/onepassword-1pux/login-data"; +import { MedicalRecordData } from "./test-data/onepassword-1pux/medical-record"; +import { MembershipData } from "./test-data/onepassword-1pux/membership"; +import { OnePuxExampleFile } from "./test-data/onepassword-1pux/onepux_example"; +import { OutdoorLicenseData } from "./test-data/onepassword-1pux/outdoor-license"; +import { PassportData } from "./test-data/onepassword-1pux/passport"; +import { PasswordData } from "./test-data/onepassword-1pux/password"; +import { RewardsProgramData } from "./test-data/onepassword-1pux/rewards-program"; +import { SanitizedExport } from "./test-data/onepassword-1pux/sanitized-export"; +import { SecureNoteData } from "./test-data/onepassword-1pux/secure-note"; +import { ServerData } from "./test-data/onepassword-1pux/server"; +import { SoftwareLicenseData } from "./test-data/onepassword-1pux/software-license"; +import { SSNData } from "./test-data/onepassword-1pux/ssn"; +import { WirelessRouterData } from "./test-data/onepassword-1pux/wireless-router"; function validateCustomField(fields: FieldView[], fieldName: string, expectedValue: any) { expect(fields).toBeDefined(); diff --git a/libs/common/spec/importers/onepasswordMacCsvImporter.spec.ts b/libs/common/spec/importers/onepassword-mac-csv-importer.spec.ts similarity index 86% rename from libs/common/spec/importers/onepasswordMacCsvImporter.spec.ts rename to libs/common/spec/importers/onepassword-mac-csv-importer.spec.ts index 0965a11d481..fc61d9760c9 100644 --- a/libs/common/spec/importers/onepasswordMacCsvImporter.spec.ts +++ b/libs/common/spec/importers/onepassword-mac-csv-importer.spec.ts @@ -1,10 +1,10 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { OnePasswordMacCsvImporter as Importer } from "@bitwarden/common/importers/onepasswordImporters/onepasswordMacCsvImporter"; +import { OnePasswordMacCsvImporter as Importer } from "@bitwarden/common/importers/onepassword/onepassword-mac-csv-importer"; import { CipherView } from "@bitwarden/common/models/view/cipher.view"; -import { data as creditCardData } from "./testData/onePasswordCsv/creditCard.mac.csv"; -import { data as identityData } from "./testData/onePasswordCsv/identity.mac.csv"; -import { data as multiTypeData } from "./testData/onePasswordCsv/multipleItems.mac.csv"; +import { data as creditCardData } from "./test-data/onepassword-csv/credit-card.mac.csv"; +import { data as identityData } from "./test-data/onepassword-csv/identity.mac.csv"; +import { data as multiTypeData } from "./test-data/onepassword-csv/multiple-items.mac.csv"; function expectIdentity(cipher: CipherView) { expect(cipher.type).toBe(CipherType.Identity); diff --git a/libs/common/spec/importers/onepasswordWinCsvImporter.spec.ts b/libs/common/spec/importers/onepassword-win-csv-importer.spec.ts similarity index 87% rename from libs/common/spec/importers/onepasswordWinCsvImporter.spec.ts rename to libs/common/spec/importers/onepassword-win-csv-importer.spec.ts index 666886c3f40..5398f823ff0 100644 --- a/libs/common/spec/importers/onepasswordWinCsvImporter.spec.ts +++ b/libs/common/spec/importers/onepassword-win-csv-importer.spec.ts @@ -1,12 +1,12 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; import { FieldType } from "@bitwarden/common/enums/fieldType"; -import { OnePasswordWinCsvImporter as Importer } from "@bitwarden/common/importers/onepasswordImporters/onepasswordWinCsvImporter"; +import { OnePasswordWinCsvImporter as Importer } from "@bitwarden/common/importers/onepassword/onepassword-win-csv-importer"; import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { FieldView } from "@bitwarden/common/models/view/field.view"; -import { data as creditCardData } from "./testData/onePasswordCsv/creditCard.windows.csv"; -import { data as identityData } from "./testData/onePasswordCsv/identity.windows.csv"; -import { data as multiTypeData } from "./testData/onePasswordCsv/multipleItems.windows.csv"; +import { data as creditCardData } from "./test-data/onepassword-csv/credit-card.windows.csv"; +import { data as identityData } from "./test-data/onepassword-csv/identity.windows.csv"; +import { data as multiTypeData } from "./test-data/onepassword-csv/multiple-items.windows.csv"; function expectIdentity(cipher: CipherView) { expect(cipher.type).toBe(CipherType.Identity); diff --git a/libs/common/spec/importers/safariCsvImporter.spec.ts b/libs/common/spec/importers/safari-csv-importer.spec.ts similarity index 90% rename from libs/common/spec/importers/safariCsvImporter.spec.ts rename to libs/common/spec/importers/safari-csv-importer.spec.ts index 36d1e076a20..3bb0f614cec 100644 --- a/libs/common/spec/importers/safariCsvImporter.spec.ts +++ b/libs/common/spec/importers/safari-csv-importer.spec.ts @@ -1,10 +1,10 @@ -import { SafariCsvImporter as Importer } from "@bitwarden/common/importers/safariCsvImporter"; +import { SafariCsvImporter as Importer } from "@bitwarden/common/importers/safari-csv-importer"; import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; import { LoginView } from "@bitwarden/common/models/view/login.view"; -import { data as oldSimplePasswordData } from "./testData/safariCsv/oldSimplePasswordData.csv"; -import { data as simplePasswordData } from "./testData/safariCsv/simplePasswordData.csv"; +import { data as oldSimplePasswordData } from "./test-data/safari-csv/old-simple-password-data.csv"; +import { data as simplePasswordData } from "./test-data/safari-csv/simple-password-data.csv"; const CipherData = [ { diff --git a/libs/common/spec/importers/testData/bitwardenJson/empty.json.ts b/libs/common/spec/importers/test-data/bitwarden-json/empty.json.ts similarity index 100% rename from libs/common/spec/importers/testData/bitwardenJson/empty.json.ts rename to libs/common/spec/importers/test-data/bitwarden-json/empty.json.ts diff --git a/libs/common/spec/importers/testData/bitwardenJson/passwordProtected.json.ts b/libs/common/spec/importers/test-data/bitwarden-json/password-protected.json.ts similarity index 100% rename from libs/common/spec/importers/testData/bitwardenJson/passwordProtected.json.ts rename to libs/common/spec/importers/test-data/bitwarden-json/password-protected.json.ts diff --git a/libs/common/spec/importers/testData/chromeCsv/android-data.csv.ts b/libs/common/spec/importers/test-data/chrome-csv/android-data.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/chromeCsv/android-data.csv.ts rename to libs/common/spec/importers/test-data/chrome-csv/android-data.csv.ts diff --git a/libs/common/spec/importers/testData/chromeCsv/simple-password-data.csv.ts b/libs/common/spec/importers/test-data/chrome-csv/simple-password-data.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/chromeCsv/simple-password-data.csv.ts rename to libs/common/spec/importers/test-data/chrome-csv/simple-password-data.csv.ts diff --git a/libs/common/spec/importers/testData/dashlaneCsv/credentials.csv.ts b/libs/common/spec/importers/test-data/dashlane-csv/credentials.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/dashlaneCsv/credentials.csv.ts rename to libs/common/spec/importers/test-data/dashlane-csv/credentials.csv.ts diff --git a/libs/common/spec/importers/testData/dashlaneCsv/id.csv.ts b/libs/common/spec/importers/test-data/dashlane-csv/id.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/dashlaneCsv/id.csv.ts rename to libs/common/spec/importers/test-data/dashlane-csv/id.csv.ts diff --git a/libs/common/spec/importers/testData/dashlaneCsv/multiplePersonalInfo.csv.ts b/libs/common/spec/importers/test-data/dashlane-csv/multiple-personal-info.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/dashlaneCsv/multiplePersonalInfo.csv.ts rename to libs/common/spec/importers/test-data/dashlane-csv/multiple-personal-info.csv.ts diff --git a/libs/common/spec/importers/testData/dashlaneCsv/payments.csv.ts b/libs/common/spec/importers/test-data/dashlane-csv/payments.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/dashlaneCsv/payments.csv.ts rename to libs/common/spec/importers/test-data/dashlane-csv/payments.csv.ts diff --git a/libs/common/spec/importers/testData/dashlaneCsv/personalInfo.csv.ts b/libs/common/spec/importers/test-data/dashlane-csv/personal-info.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/dashlaneCsv/personalInfo.csv.ts rename to libs/common/spec/importers/test-data/dashlane-csv/personal-info.csv.ts diff --git a/libs/common/spec/importers/testData/dashlaneCsv/securenotes.csv.ts b/libs/common/spec/importers/test-data/dashlane-csv/securenotes.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/dashlaneCsv/securenotes.csv.ts rename to libs/common/spec/importers/test-data/dashlane-csv/securenotes.csv.ts diff --git a/libs/common/spec/importers/testData/firefoxCsv/firefoxAccountsData.csv.ts b/libs/common/spec/importers/test-data/firefox-csv/firefox-accounts-data.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/firefoxCsv/firefoxAccountsData.csv.ts rename to libs/common/spec/importers/test-data/firefox-csv/firefox-accounts-data.csv.ts diff --git a/libs/common/spec/importers/testData/firefoxCsv/simplePasswordData.csv.ts b/libs/common/spec/importers/test-data/firefox-csv/simple-password-data.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/firefoxCsv/simplePasswordData.csv.ts rename to libs/common/spec/importers/test-data/firefox-csv/simple-password-data.csv.ts diff --git a/libs/common/spec/importers/testData/keeperJson/testData.ts b/libs/common/spec/importers/test-data/keeper-json/testdata.json.ts similarity index 98% rename from libs/common/spec/importers/testData/keeperJson/testData.ts rename to libs/common/spec/importers/test-data/keeper-json/testdata.json.ts index c7868658a4e..0ead208251b 100644 --- a/libs/common/spec/importers/testData/keeperJson/testData.ts +++ b/libs/common/spec/importers/test-data/keeper-json/testdata.json.ts @@ -1,4 +1,4 @@ -import { KeeperJsonExport } from "@bitwarden/common/importers/keeperImporters/types/keeperJsonTypes"; +import { KeeperJsonExport } from "@bitwarden/common/importers/keeper/types/keeper-json-types"; export const testData: KeeperJsonExport = { shared_folders: [ diff --git a/libs/common/spec/importers/testData/mykiCsv/UserAccount.csv.ts b/libs/common/spec/importers/test-data/myki-csv/user-account.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/mykiCsv/UserAccount.csv.ts rename to libs/common/spec/importers/test-data/myki-csv/user-account.csv.ts diff --git a/libs/common/spec/importers/testData/mykiCsv/UserCreditCard.csv.ts b/libs/common/spec/importers/test-data/myki-csv/user-credit-card.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/mykiCsv/UserCreditCard.csv.ts rename to libs/common/spec/importers/test-data/myki-csv/user-credit-card.csv.ts diff --git a/libs/common/spec/importers/testData/mykiCsv/UserIdCard.csv.ts b/libs/common/spec/importers/test-data/myki-csv/user-id-card.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/mykiCsv/UserIdCard.csv.ts rename to libs/common/spec/importers/test-data/myki-csv/user-id-card.csv.ts diff --git a/libs/common/spec/importers/testData/mykiCsv/UserIdentity.csv.ts b/libs/common/spec/importers/test-data/myki-csv/user-identity.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/mykiCsv/UserIdentity.csv.ts rename to libs/common/spec/importers/test-data/myki-csv/user-identity.csv.ts diff --git a/libs/common/spec/importers/testData/mykiCsv/UserNote.csv.ts b/libs/common/spec/importers/test-data/myki-csv/user-note.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/mykiCsv/UserNote.csv.ts rename to libs/common/spec/importers/test-data/myki-csv/user-note.csv.ts diff --git a/libs/common/spec/importers/testData/mykiCsv/UserTwofa.csv.ts b/libs/common/spec/importers/test-data/myki-csv/user-twofa.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/mykiCsv/UserTwofa.csv.ts rename to libs/common/spec/importers/test-data/myki-csv/user-twofa.csv.ts diff --git a/libs/common/spec/importers/testData/nordpassCsv/nordpass.card.csv.ts b/libs/common/spec/importers/test-data/nordpass-csv/nordpass.card.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/nordpassCsv/nordpass.card.csv.ts rename to libs/common/spec/importers/test-data/nordpass-csv/nordpass.card.csv.ts diff --git a/libs/common/spec/importers/testData/nordpassCsv/nordpass.identity.csv.ts b/libs/common/spec/importers/test-data/nordpass-csv/nordpass.identity.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/nordpassCsv/nordpass.identity.csv.ts rename to libs/common/spec/importers/test-data/nordpass-csv/nordpass.identity.csv.ts diff --git a/libs/common/spec/importers/testData/nordpassCsv/nordpass.login.csv.ts b/libs/common/spec/importers/test-data/nordpass-csv/nordpass.login.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/nordpassCsv/nordpass.login.csv.ts rename to libs/common/spec/importers/test-data/nordpass-csv/nordpass.login.csv.ts diff --git a/libs/common/spec/importers/testData/nordpassCsv/nordpass.secureNote.csv.ts b/libs/common/spec/importers/test-data/nordpass-csv/nordpass.secure-note.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/nordpassCsv/nordpass.secureNote.csv.ts rename to libs/common/spec/importers/test-data/nordpass-csv/nordpass.secure-note.csv.ts diff --git a/libs/common/spec/importers/testData/onePassword1Pux/APICredentials.ts b/libs/common/spec/importers/test-data/onepassword-1pux/api-credentials.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/APICredentials.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/api-credentials.ts index d9f91cc6e9d..762d57e91ad 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/APICredentials.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/api-credentials.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const APICredentialsData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/BankAccount.ts b/libs/common/spec/importers/test-data/onepassword-1pux/bank-account.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/BankAccount.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/bank-account.ts index e5718988f28..2a88db0dabd 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/BankAccount.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/bank-account.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const BankAccountData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/CreditCard.ts b/libs/common/spec/importers/test-data/onepassword-1pux/credit-card.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/CreditCard.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/credit-card.ts index c05052c1f2f..208d374321a 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/CreditCard.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/credit-card.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const CreditCardData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/Database.ts b/libs/common/spec/importers/test-data/onepassword-1pux/database.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/Database.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/database.ts index 2bbd6c2e230..6eb6c921994 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/Database.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/database.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const DatabaseData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/DriversLicense.ts b/libs/common/spec/importers/test-data/onepassword-1pux/drivers-license.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/DriversLicense.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/drivers-license.ts index e6e81bf83a3..ed52b3cd5db 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/DriversLicense.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/drivers-license.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const DriversLicenseData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/EmailAccount.ts b/libs/common/spec/importers/test-data/onepassword-1pux/email-account.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/EmailAccount.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/email-account.ts index 5f8950173cb..374553825c9 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/EmailAccount.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/email-account.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const EmailAccountData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/EmailfieldOnIdentity.ts b/libs/common/spec/importers/test-data/onepassword-1pux/email-field-on-identity.ts similarity index 98% rename from libs/common/spec/importers/testData/onePassword1Pux/EmailfieldOnIdentity.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/email-field-on-identity.ts index ebd8abd4e00..4f9db420a07 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/EmailfieldOnIdentity.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/email-field-on-identity.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const EmailFieldOnIdentityData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/EmailfieldOnIdentity_Prefilled.ts b/libs/common/spec/importers/test-data/onepassword-1pux/email-field-on-identity_prefilled.ts similarity index 98% rename from libs/common/spec/importers/testData/onePassword1Pux/EmailfieldOnIdentity_Prefilled.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/email-field-on-identity_prefilled.ts index afa7e16d6c5..b33c14845e7 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/EmailfieldOnIdentity_Prefilled.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/email-field-on-identity_prefilled.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const EmailFieldOnIdentityPrefilledData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/Emailfield.ts b/libs/common/spec/importers/test-data/onepassword-1pux/email-field.ts similarity index 98% rename from libs/common/spec/importers/testData/onePassword1Pux/Emailfield.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/email-field.ts index ca282a17169..766fc2a22c4 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/Emailfield.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/email-field.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const EmailFieldData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/IdentityData.ts b/libs/common/spec/importers/test-data/onepassword-1pux/identity-data.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/IdentityData.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/identity-data.ts index 41291bac60e..2c4dbd95f35 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/IdentityData.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/identity-data.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const IdentityData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/LoginData.ts b/libs/common/spec/importers/test-data/onepassword-1pux/login-data.ts similarity index 98% rename from libs/common/spec/importers/testData/onePassword1Pux/LoginData.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/login-data.ts index 34a32baf1fb..afdf02be17e 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/LoginData.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/login-data.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const LoginData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/MedicalRecord.ts b/libs/common/spec/importers/test-data/onepassword-1pux/medical-record.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/MedicalRecord.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/medical-record.ts index 5c47761b583..3e5d3910492 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/MedicalRecord.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/medical-record.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const MedicalRecordData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/Membership.ts b/libs/common/spec/importers/test-data/onepassword-1pux/membership.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/Membership.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/membership.ts index 24488352fe6..1e602e1eb1d 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/Membership.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/membership.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const MembershipData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/Onepux_example.ts b/libs/common/spec/importers/test-data/onepassword-1pux/onepux_example.ts similarity index 98% rename from libs/common/spec/importers/testData/onePassword1Pux/Onepux_example.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/onepux_example.ts index 3278362e01d..f6368412005 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/Onepux_example.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/onepux_example.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const OnePuxExampleFile: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/OutdoorLicense.ts b/libs/common/spec/importers/test-data/onepassword-1pux/outdoor-license.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/OutdoorLicense.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/outdoor-license.ts index 3f6f31643d4..c4b686c34a2 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/OutdoorLicense.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/outdoor-license.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const OutdoorLicenseData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/Passport.ts b/libs/common/spec/importers/test-data/onepassword-1pux/passport.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/Passport.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/passport.ts index 86551d4a517..3dcfed160e5 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/Passport.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/passport.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const PassportData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/Password.ts b/libs/common/spec/importers/test-data/onepassword-1pux/password.ts similarity index 97% rename from libs/common/spec/importers/testData/onePassword1Pux/Password.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/password.ts index d71d856a6d7..5d6e5b75652 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/Password.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/password.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const PasswordData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/RewardsProgram.ts b/libs/common/spec/importers/test-data/onepassword-1pux/rewards-program.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/RewardsProgram.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/rewards-program.ts index fa4e1731509..237116ef194 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/RewardsProgram.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/rewards-program.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const RewardsProgramData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/SanitizedExport.ts b/libs/common/spec/importers/test-data/onepassword-1pux/sanitized-export.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/SanitizedExport.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/sanitized-export.ts index d98500202e8..efa398df0c2 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/SanitizedExport.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/sanitized-export.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const SanitizedExport: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/SecureNote.ts b/libs/common/spec/importers/test-data/onepassword-1pux/secure-note.ts similarity index 96% rename from libs/common/spec/importers/testData/onePassword1Pux/SecureNote.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/secure-note.ts index fd690a8dd70..ea00d07dde5 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/SecureNote.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/secure-note.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const SecureNoteData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/Server.ts b/libs/common/spec/importers/test-data/onepassword-1pux/server.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/Server.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/server.ts index dbbd2031c64..883d296f9bf 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/Server.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/server.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const ServerData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/SoftwareLicense.ts b/libs/common/spec/importers/test-data/onepassword-1pux/software-license.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/SoftwareLicense.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/software-license.ts index 2b901977f09..e13c417373a 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/SoftwareLicense.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/software-license.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const SoftwareLicenseData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/SSN.ts b/libs/common/spec/importers/test-data/onepassword-1pux/ssn.ts similarity index 98% rename from libs/common/spec/importers/testData/onePassword1Pux/SSN.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/ssn.ts index 721409a8964..ec3e505b5c2 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/SSN.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/ssn.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const SSNData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePassword1Pux/WirelessRouter.ts b/libs/common/spec/importers/test-data/onepassword-1pux/wireless-router.ts similarity index 99% rename from libs/common/spec/importers/testData/onePassword1Pux/WirelessRouter.ts rename to libs/common/spec/importers/test-data/onepassword-1pux/wireless-router.ts index 8c3bb254240..7ce7237901c 100644 --- a/libs/common/spec/importers/testData/onePassword1Pux/WirelessRouter.ts +++ b/libs/common/spec/importers/test-data/onepassword-1pux/wireless-router.ts @@ -1,4 +1,4 @@ -import { ExportData } from "@bitwarden/common/importers/onepasswordImporters/types/onepassword1PuxImporterTypes"; +import { ExportData } from "@bitwarden/common/importers/onepassword/types/onepassword-1pux-importer-types"; export const WirelessRouterData: ExportData = { accounts: [ diff --git a/libs/common/spec/importers/testData/onePasswordCsv/creditCard.mac.csv.ts b/libs/common/spec/importers/test-data/onepassword-csv/credit-card.mac.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/onePasswordCsv/creditCard.mac.csv.ts rename to libs/common/spec/importers/test-data/onepassword-csv/credit-card.mac.csv.ts diff --git a/libs/common/spec/importers/testData/onePasswordCsv/creditCard.windows.csv.ts b/libs/common/spec/importers/test-data/onepassword-csv/credit-card.windows.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/onePasswordCsv/creditCard.windows.csv.ts rename to libs/common/spec/importers/test-data/onepassword-csv/credit-card.windows.csv.ts diff --git a/libs/common/spec/importers/testData/onePasswordCsv/identity.mac.csv.ts b/libs/common/spec/importers/test-data/onepassword-csv/identity.mac.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/onePasswordCsv/identity.mac.csv.ts rename to libs/common/spec/importers/test-data/onepassword-csv/identity.mac.csv.ts diff --git a/libs/common/spec/importers/testData/onePasswordCsv/identity.windows.csv.ts b/libs/common/spec/importers/test-data/onepassword-csv/identity.windows.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/onePasswordCsv/identity.windows.csv.ts rename to libs/common/spec/importers/test-data/onepassword-csv/identity.windows.csv.ts diff --git a/libs/common/spec/importers/testData/onePasswordCsv/multipleItems.mac.csv.ts b/libs/common/spec/importers/test-data/onepassword-csv/multiple-items.mac.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/onePasswordCsv/multipleItems.mac.csv.ts rename to libs/common/spec/importers/test-data/onepassword-csv/multiple-items.mac.csv.ts diff --git a/libs/common/spec/importers/testData/onePasswordCsv/multipleItems.windows.csv.ts b/libs/common/spec/importers/test-data/onepassword-csv/multiple-items.windows.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/onePasswordCsv/multipleItems.windows.csv.ts rename to libs/common/spec/importers/test-data/onepassword-csv/multiple-items.windows.csv.ts diff --git a/libs/common/spec/importers/testData/safariCsv/oldSimplePasswordData.csv.ts b/libs/common/spec/importers/test-data/safari-csv/old-simple-password-data.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/safariCsv/oldSimplePasswordData.csv.ts rename to libs/common/spec/importers/test-data/safari-csv/old-simple-password-data.csv.ts diff --git a/libs/common/spec/importers/testData/safariCsv/simplePasswordData.csv.ts b/libs/common/spec/importers/test-data/safari-csv/simple-password-data.csv.ts similarity index 100% rename from libs/common/spec/importers/testData/safariCsv/simplePasswordData.csv.ts rename to libs/common/spec/importers/test-data/safari-csv/simple-password-data.csv.ts diff --git a/libs/common/spec/importers/testData/safeInCloud/testData.xml.ts b/libs/common/spec/importers/test-data/safeincloud/test-data.xml.ts similarity index 100% rename from libs/common/spec/importers/testData/safeInCloud/testData.xml.ts rename to libs/common/spec/importers/test-data/safeincloud/test-data.xml.ts diff --git a/libs/common/spec/models/domain/attachment.spec.ts b/libs/common/spec/models/domain/attachment.spec.ts index 3a418a7f6b2..50e5ee7cae0 100644 --- a/libs/common/spec/models/domain/attachment.spec.ts +++ b/libs/common/spec/models/domain/attachment.spec.ts @@ -1,7 +1,7 @@ import { mock, MockProxy } from "jest-mock-extended"; -import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { AttachmentData } from "@bitwarden/common/models/data/attachment.data"; import { Attachment } from "@bitwarden/common/models/domain/attachment"; import { EncString } from "@bitwarden/common/models/domain/enc-string"; @@ -58,11 +58,11 @@ describe("Attachment", () => { describe("decrypt", () => { let cryptoService: MockProxy; - let encryptService: MockProxy; + let encryptService: MockProxy; beforeEach(() => { cryptoService = mock(); - encryptService = mock(); + encryptService = mock(); (window as any).bitwardenContainerService = new ContainerService( cryptoService, diff --git a/libs/common/spec/models/domain/cipher.spec.ts b/libs/common/spec/models/domain/cipher.spec.ts index cd149621786..cd49ea5484b 100644 --- a/libs/common/spec/models/domain/cipher.spec.ts +++ b/libs/common/spec/models/domain/cipher.spec.ts @@ -20,6 +20,7 @@ import { SecureNote } from "@bitwarden/common/models/domain/secure-note"; import { CardView } from "@bitwarden/common/models/view/card.view"; import { IdentityView } from "@bitwarden/common/models/view/identity.view"; import { LoginView } from "@bitwarden/common/models/view/login.view"; +import { InitializerKey } from "@bitwarden/common/services/cryptography/initializer-key"; import { mockEnc, mockFromJson } from "../../utils"; @@ -29,6 +30,7 @@ describe("Cipher DTO", () => { const cipher = new Cipher(data); expect(cipher).toEqual({ + initializerKey: InitializerKey.Cipher, id: null, organizationId: null, folderId: null, @@ -120,6 +122,7 @@ describe("Cipher DTO", () => { const cipher = new Cipher(cipherData); expect(cipher).toEqual({ + initializerKey: InitializerKey.Cipher, id: "id", organizationId: "orgId", folderId: "folderId", @@ -271,6 +274,7 @@ describe("Cipher DTO", () => { const cipher = new Cipher(cipherData); expect(cipher).toEqual({ + initializerKey: InitializerKey.Cipher, id: "id", organizationId: "orgId", folderId: "folderId", @@ -379,6 +383,7 @@ describe("Cipher DTO", () => { const cipher = new Cipher(cipherData); expect(cipher).toEqual({ + initializerKey: InitializerKey.Cipher, id: "id", organizationId: "orgId", folderId: "folderId", @@ -512,6 +517,7 @@ describe("Cipher DTO", () => { const cipher = new Cipher(cipherData); expect(cipher).toEqual({ + initializerKey: InitializerKey.Cipher, id: "id", organizationId: "orgId", folderId: "folderId", diff --git a/libs/common/spec/models/domain/encString.spec.ts b/libs/common/spec/models/domain/encString.spec.ts index cdc373c2a35..a7e05584aab 100644 --- a/libs/common/spec/models/domain/encString.spec.ts +++ b/libs/common/spec/models/domain/encString.spec.ts @@ -2,8 +2,8 @@ import { Substitute, Arg } from "@fluffy-spoon/substitute"; import { mock, MockProxy } from "jest-mock-extended"; -import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { EncryptionType } from "@bitwarden/common/enums/encryptionType"; import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; @@ -52,7 +52,7 @@ describe("EncString", () => { const cryptoService = Substitute.for(); cryptoService.getOrgKey(null).resolves(null); - const encryptService = Substitute.for(); + const encryptService = Substitute.for(); encryptService.decryptToUtf8(encString, Arg.any()).resolves("decrypted"); beforeEach(() => { @@ -157,12 +157,12 @@ describe("EncString", () => { describe("decrypt", () => { let cryptoService: MockProxy; - let encryptService: MockProxy; + let encryptService: MockProxy; let encString: EncString; beforeEach(() => { cryptoService = mock(); - encryptService = mock(); + encryptService = mock(); encString = new EncString(null); (window as any).bitwardenContainerService = new ContainerService( diff --git a/libs/common/spec/models/domain/send.spec.ts b/libs/common/spec/models/domain/send.spec.ts index 70f19857efd..b79cdee3d8d 100644 --- a/libs/common/spec/models/domain/send.spec.ts +++ b/libs/common/spec/models/domain/send.spec.ts @@ -1,8 +1,8 @@ // eslint-disable-next-line no-restricted-imports import { Substitute, Arg, SubstituteOf } from "@fluffy-spoon/substitute"; -import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { SendType } from "@bitwarden/common/enums/sendType"; import { SendData } from "@bitwarden/common/models/data/send.data"; import { EncString } from "@bitwarden/common/models/domain/enc-string"; @@ -112,7 +112,7 @@ describe("Send", () => { cryptoService.decryptToBytes(send.key, null).resolves(makeStaticByteArray(32)); cryptoService.makeSendKey(Arg.any()).resolves("cryptoKey" as any); - const encryptService = Substitute.for(); + const encryptService = Substitute.for(); (window as any).bitwardenContainerService = new ContainerService(cryptoService, encryptService); diff --git a/libs/common/spec/services/cipher.service.spec.ts b/libs/common/spec/services/cipher.service.spec.ts index c4e95e62176..0dda9300843 100644 --- a/libs/common/spec/services/cipher.service.spec.ts +++ b/libs/common/spec/services/cipher.service.spec.ts @@ -3,6 +3,7 @@ import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { FileUploadService } from "@bitwarden/common/abstractions/fileUpload.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; @@ -27,6 +28,7 @@ describe("Cipher Service", () => { let i18nService: SubstituteOf; let searchService: SubstituteOf; let logService: SubstituteOf; + let encryptService: SubstituteOf; let cipherService: CipherService; @@ -39,6 +41,7 @@ describe("Cipher Service", () => { i18nService = Substitute.for(); searchService = Substitute.for(); logService = Substitute.for(); + encryptService = Substitute.for(); cryptoService.encryptToBytes(Arg.any(), Arg.any()).resolves(ENCRYPTED_BYTES); cryptoService.encrypt(Arg.any(), Arg.any()).resolves(new EncString(ENCRYPTED_TEXT)); @@ -51,7 +54,8 @@ describe("Cipher Service", () => { i18nService, () => searchService, logService, - stateService + stateService, + encryptService ); }); diff --git a/libs/common/spec/services/crypto.service.spec.ts b/libs/common/spec/services/crypto.service.spec.ts index 40db49dfa37..64905008588 100644 --- a/libs/common/spec/services/crypto.service.spec.ts +++ b/libs/common/spec/services/crypto.service.spec.ts @@ -1,7 +1,7 @@ import { mock, mockReset } from "jest-mock-extended"; -import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; @@ -11,7 +11,7 @@ describe("cryptoService", () => { let cryptoService: CryptoService; const cryptoFunctionService = mock(); - const encryptService = mock(); + const encryptService = mock(); const platformUtilService = mock(); const logService = mock(); const stateService = mock(); diff --git a/libs/common/spec/services/encrypt.service.spec.ts b/libs/common/spec/services/encrypt.service.spec.ts index 850731b3711..289ea65e447 100644 --- a/libs/common/spec/services/encrypt.service.spec.ts +++ b/libs/common/spec/services/encrypt.service.spec.ts @@ -6,7 +6,7 @@ import { EncryptionType } from "@bitwarden/common/enums/encryptionType"; import { EncArrayBuffer } from "@bitwarden/common/models/domain/enc-array-buffer"; import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; -import { EncryptService } from "@bitwarden/common/services/encrypt.service"; +import { EncryptServiceImplementation } from "@bitwarden/common/services/cryptography/encrypt.service.implementation"; import { makeStaticByteArray } from "../utils"; @@ -14,13 +14,13 @@ describe("EncryptService", () => { const cryptoFunctionService = mock(); const logService = mock(); - let encryptService: EncryptService; + let encryptService: EncryptServiceImplementation; beforeEach(() => { mockReset(cryptoFunctionService); mockReset(logService); - encryptService = new EncryptService(cryptoFunctionService, logService, true); + encryptService = new EncryptServiceImplementation(cryptoFunctionService, logService, true); }); describe("encryptToBytes", () => { diff --git a/libs/common/spec/services/folder.service.spec.ts b/libs/common/spec/services/folder.service.spec.ts index b5d0491bf6f..1c1f0b2a464 100644 --- a/libs/common/spec/services/folder.service.spec.ts +++ b/libs/common/spec/services/folder.service.spec.ts @@ -2,9 +2,9 @@ import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { BehaviorSubject, firstValueFrom } from "rxjs"; -import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; import { CipherService } from "@bitwarden/common/abstractions/cipher.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { FolderData } from "@bitwarden/common/models/data/folder.data"; import { EncString } from "@bitwarden/common/models/domain/enc-string"; @@ -17,7 +17,7 @@ describe("Folder Service", () => { let folderService: FolderService; let cryptoService: SubstituteOf; - let encryptService: SubstituteOf; + let encryptService: SubstituteOf; let i18nService: SubstituteOf; let cipherService: SubstituteOf; let stateService: SubstituteOf; diff --git a/libs/common/spec/services/import.service.spec.ts b/libs/common/spec/services/import.service.spec.ts index f2ae48a09ee..c0ce1d0f4f9 100644 --- a/libs/common/spec/services/import.service.spec.ts +++ b/libs/common/spec/services/import.service.spec.ts @@ -7,7 +7,7 @@ import { CollectionService } from "@bitwarden/common/abstractions/collection.ser import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { FolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; -import { BitwardenPasswordProtectedImporter } from "@bitwarden/common/importers/bitwardenPasswordProtectedImporter"; +import { BitwardenPasswordProtectedImporter } from "@bitwarden/common/importers/bitwarden-password-protected-importer"; import { Importer } from "@bitwarden/common/importers/importer"; import { Utils } from "@bitwarden/common/misc/utils"; import { ImportService } from "@bitwarden/common/services/import.service"; diff --git a/libs/common/spec/services/policy.service.spec.ts b/libs/common/spec/services/policy.service.spec.ts index 3f52557d05f..cbdbfca2aa4 100644 --- a/libs/common/spec/services/policy.service.spec.ts +++ b/libs/common/spec/services/policy.service.spec.ts @@ -3,6 +3,7 @@ import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { BehaviorSubject, firstValueFrom } from "rxjs"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { OrganizationUserStatusType } from "@bitwarden/common/enums/organizationUserStatusType"; import { PolicyType } from "@bitwarden/common/enums/policyType"; @@ -16,7 +17,6 @@ import { ResetPasswordPolicyOptions } from "@bitwarden/common/models/domain/rese import { ListResponse } from "@bitwarden/common/models/response/list.response"; import { PolicyResponse } from "@bitwarden/common/models/response/policy.response"; import { ContainerService } from "@bitwarden/common/services/container.service"; -import { EncryptService } from "@bitwarden/common/services/encrypt.service"; import { PolicyService } from "@bitwarden/common/services/policy/policy.service"; import { StateService } from "@bitwarden/common/services/state.service"; @@ -50,6 +50,12 @@ describe("PolicyService", () => { organizationService.getAll(null).resolves([]); activeAccount = new BehaviorSubject("123"); activeAccountUnlocked = new BehaviorSubject(true); + stateService.getDecryptedPolicies({ userId: "user" }).resolves(null); + stateService.getEncryptedPolicies({ userId: "user" }).resolves({ + "1": policyData("1", "test-organization", PolicyType.MaximumVaultTimeout, true, { + minutes: 14, + }), + }); stateService.getEncryptedPolicies().resolves({ "1": policyData("1", "test-organization", PolicyType.MaximumVaultTimeout, true, { minutes: 14, @@ -296,7 +302,7 @@ describe("PolicyService", () => { }); }); - describe("policyAppliesToActiveUser", () => { + describe("policyAppliesToActiveUser$", () => { it("MasterPassword does not apply", async () => { const result = await firstValueFrom( policyService.policyAppliesToActiveUser$(PolicyType.MasterPassword) @@ -313,6 +319,14 @@ describe("PolicyService", () => { expect(result).toEqual(true); }); + it("PolicyFilter filters result", async () => { + const result = await firstValueFrom( + policyService.policyAppliesToActiveUser$(PolicyType.MaximumVaultTimeout, (p) => false) + ); + + expect(result).toEqual(false); + }); + it("DisablePersonalVaultExport does not apply", async () => { const result = await firstValueFrom( policyService.policyAppliesToActiveUser$(PolicyType.DisablePersonalVaultExport) @@ -322,6 +336,48 @@ describe("PolicyService", () => { }); }); + describe("policyAppliesToUser", () => { + it("MasterPassword does not apply", async () => { + const result = await policyService.policyAppliesToUser( + PolicyType.MasterPassword, + null, + "user" + ); + + expect(result).toEqual(false); + }); + + it("MaximumVaultTimeout applies", async () => { + const result = await policyService.policyAppliesToUser( + PolicyType.MaximumVaultTimeout, + null, + "user" + ); + + expect(result).toEqual(true); + }); + + it("PolicyFilter filters result", async () => { + const result = await policyService.policyAppliesToUser( + PolicyType.MaximumVaultTimeout, + (p) => false, + "user" + ); + + expect(result).toEqual(false); + }); + + it("DisablePersonalVaultExport does not apply", async () => { + const result = await policyService.policyAppliesToUser( + PolicyType.DisablePersonalVaultExport, + null, + "user" + ); + + expect(result).toEqual(false); + }); + }); + function policyData( id: string, organizationId: string, diff --git a/libs/common/spec/services/settings.service.spec.ts b/libs/common/spec/services/settings.service.spec.ts index a52ef59a60b..59c4715dda6 100644 --- a/libs/common/spec/services/settings.service.spec.ts +++ b/libs/common/spec/services/settings.service.spec.ts @@ -2,8 +2,8 @@ import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { BehaviorSubject, firstValueFrom } from "rxjs"; -import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { ContainerService } from "@bitwarden/common/services/container.service"; import { SettingsService } from "@bitwarden/common/services/settings.service"; import { StateService } from "@bitwarden/common/services/state.service"; @@ -12,7 +12,7 @@ describe("SettingsService", () => { let settingsService: SettingsService; let cryptoService: SubstituteOf; - let encryptService: SubstituteOf; + let encryptService: SubstituteOf; let stateService: SubstituteOf; let activeAccount: BehaviorSubject; let activeAccountUnlocked: BehaviorSubject; diff --git a/libs/common/src/abstractions/api.service.ts b/libs/common/src/abstractions/api.service.ts index 14dc26cc59f..74f9edebd6f 100644 --- a/libs/common/src/abstractions/api.service.ts +++ b/libs/common/src/abstractions/api.service.ts @@ -479,6 +479,7 @@ export abstract class ApiService { putDeviceVerificationSettings: ( request: DeviceVerificationRequest ) => Promise; + getKnownDevice: (email: string, deviceIdentifier: string) => Promise; getEmergencyAccessTrusted: () => Promise>; getEmergencyAccessGranted: () => Promise>; diff --git a/libs/common/src/abstractions/abstractEncrypt.service.ts b/libs/common/src/abstractions/encrypt.service.ts similarity index 70% rename from libs/common/src/abstractions/abstractEncrypt.service.ts rename to libs/common/src/abstractions/encrypt.service.ts index 63c6f041a37..17e72907c8a 100644 --- a/libs/common/src/abstractions/abstractEncrypt.service.ts +++ b/libs/common/src/abstractions/encrypt.service.ts @@ -1,9 +1,11 @@ import { IEncrypted } from "../interfaces/IEncrypted"; +import { Decryptable } from "../interfaces/decryptable.interface"; +import { InitializerMetadata } from "../interfaces/initializer-metadata.interface"; import { EncArrayBuffer } from "../models/domain/enc-array-buffer"; import { EncString } from "../models/domain/enc-string"; import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; -export abstract class AbstractEncryptService { +export abstract class EncryptService { abstract encrypt(plainValue: string | ArrayBuffer, key: SymmetricCryptoKey): Promise; abstract encryptToBytes: ( plainValue: ArrayBuffer, @@ -12,4 +14,8 @@ export abstract class AbstractEncryptService { abstract decryptToUtf8: (encString: EncString, key: SymmetricCryptoKey) => Promise; abstract decryptToBytes: (encThing: IEncrypted, key: SymmetricCryptoKey) => Promise; abstract resolveLegacyKey: (key: SymmetricCryptoKey, encThing: IEncrypted) => SymmetricCryptoKey; + abstract decryptItems: ( + items: Decryptable[], + key: SymmetricCryptoKey + ) => Promise; } diff --git a/libs/common/src/abstractions/import.service.ts b/libs/common/src/abstractions/import.service.ts index 01f099b3186..e0acb0beccc 100644 --- a/libs/common/src/abstractions/import.service.ts +++ b/libs/common/src/abstractions/import.service.ts @@ -1,5 +1,5 @@ import { ImportOption, ImportType } from "../enums/importOptions"; -import { ImportError } from "../importers/importError"; +import { ImportError } from "../importers/import-error"; import { Importer } from "../importers/importer"; export abstract class ImportService { diff --git a/libs/common/src/abstractions/login.service.ts b/libs/common/src/abstractions/login.service.ts new file mode 100644 index 00000000000..0823611546c --- /dev/null +++ b/libs/common/src/abstractions/login.service.ts @@ -0,0 +1,7 @@ +export abstract class LoginService { + getEmail: () => string; + getRememberEmail: () => boolean; + setEmail: (value: string) => void; + setRememberEmail: (value: boolean) => void; + clearValues: () => void; +} diff --git a/libs/common/src/abstractions/organization/organization.service.abstraction.ts b/libs/common/src/abstractions/organization/organization.service.abstraction.ts index 93a61437904..45ae70e24f2 100644 --- a/libs/common/src/abstractions/organization/organization.service.abstraction.ts +++ b/libs/common/src/abstractions/organization/organization.service.abstraction.ts @@ -4,8 +4,18 @@ import { Utils } from "../../misc/utils"; import { Organization } from "../../models/domain/organization"; import { I18nService } from "../i18n.service"; +export function canAccessVaultTab(org: Organization): boolean { + return org.isManager; +} + export function canAccessSettingsTab(org: Organization): boolean { - return org.isOwner; + return ( + org.isOwner || + org.canManagePolicies || + org.canManageSso || + org.canManageScim || + org.canAccessImportExport + ); } export function canAccessMembersTab(org: Organization): boolean { @@ -30,7 +40,8 @@ export function canAccessOrgAdmin(org: Organization): boolean { canAccessGroupsTab(org) || canAccessReportingTab(org) || canAccessBillingTab(org) || - canAccessSettingsTab(org) + canAccessSettingsTab(org) || + canAccessVaultTab(org) ); } @@ -50,6 +61,11 @@ export abstract class OrganizationService { get: (id: string) => Organization; getByIdentifier: (identifier: string) => Organization; getAll: (userId?: string) => Promise; + /** + * @deprecated For the CLI only + * @param id id of the organization + */ + getFromState: (id: string) => Promise; canManageSponsorships: () => Promise; hasOrganizations: () => boolean; } diff --git a/libs/common/src/abstractions/state.service.ts b/libs/common/src/abstractions/state.service.ts index ccd9be514fa..2c0712d0299 100644 --- a/libs/common/src/abstractions/state.service.ts +++ b/libs/common/src/abstractions/state.service.ts @@ -1,4 +1,4 @@ -import { BehaviorSubject, Observable } from "rxjs"; +import { Observable } from "rxjs"; import { KdfType } from "../enums/kdfType"; import { ThemeType } from "../enums/themeType"; @@ -27,7 +27,7 @@ import { CollectionView } from "../models/view/collection.view"; import { SendView } from "../models/view/send.view"; export abstract class StateService { - accounts: BehaviorSubject<{ [userId: string]: T }>; + accounts$: Observable<{ [userId: string]: T }>; activeAccount$: Observable; activeAccountUnlocked$: Observable; diff --git a/libs/common/src/enums/event-system-user.ts b/libs/common/src/enums/event-system-user.ts new file mode 100644 index 00000000000..cd9a73dd8f9 --- /dev/null +++ b/libs/common/src/enums/event-system-user.ts @@ -0,0 +1,4 @@ +// Note: the enum key is used to describe the EventSystemUser in the UI. Be careful about changing it. +export enum EventSystemUser { + SCIM = 1, +} diff --git a/libs/common/src/importers/ascendoCsvImporter.ts b/libs/common/src/importers/ascendo-csv-importer.ts similarity index 97% rename from libs/common/src/importers/ascendoCsvImporter.ts rename to libs/common/src/importers/ascendo-csv-importer.ts index 68c3ae5db74..832df10a55a 100644 --- a/libs/common/src/importers/ascendoCsvImporter.ts +++ b/libs/common/src/importers/ascendo-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class AscendoCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/avastCsvImporter.ts b/libs/common/src/importers/avast-csv-importer.ts similarity index 94% rename from libs/common/src/importers/avastCsvImporter.ts rename to libs/common/src/importers/avast-csv-importer.ts index 14cfa722da9..5cac29e801d 100644 --- a/libs/common/src/importers/avastCsvImporter.ts +++ b/libs/common/src/importers/avast-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class AvastCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/avastJsonImporter.ts b/libs/common/src/importers/avast-json-importer.ts similarity index 98% rename from libs/common/src/importers/avastJsonImporter.ts rename to libs/common/src/importers/avast-json-importer.ts index 178f0a47e32..1c7a0e4a5d6 100644 --- a/libs/common/src/importers/avastJsonImporter.ts +++ b/libs/common/src/importers/avast-json-importer.ts @@ -2,7 +2,7 @@ import { CipherType } from "../enums/cipherType"; import { SecureNoteType } from "../enums/secureNoteType"; import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class AvastJsonImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/aviraCsvImporter.ts b/libs/common/src/importers/avira-csv-importer.ts similarity index 96% rename from libs/common/src/importers/aviraCsvImporter.ts rename to libs/common/src/importers/avira-csv-importer.ts index ceb4979aa14..5b9dfca8b19 100644 --- a/libs/common/src/importers/aviraCsvImporter.ts +++ b/libs/common/src/importers/avira-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class AviraCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/baseImporter.ts b/libs/common/src/importers/base-importer.ts similarity index 100% rename from libs/common/src/importers/baseImporter.ts rename to libs/common/src/importers/base-importer.ts diff --git a/libs/common/src/importers/bitwardenCsvImporter.ts b/libs/common/src/importers/bitwarden-csv-importer.ts similarity index 98% rename from libs/common/src/importers/bitwardenCsvImporter.ts rename to libs/common/src/importers/bitwarden-csv-importer.ts index 01b87b8cbd2..f5f2554789d 100644 --- a/libs/common/src/importers/bitwardenCsvImporter.ts +++ b/libs/common/src/importers/bitwarden-csv-importer.ts @@ -9,7 +9,7 @@ import { FieldView } from "../models/view/field.view"; import { LoginView } from "../models/view/login.view"; import { SecureNoteView } from "../models/view/secure-note.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class BitwardenCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/bitwardenJsonImporter.ts b/libs/common/src/importers/bitwarden-json-importer.ts similarity index 99% rename from libs/common/src/importers/bitwardenJsonImporter.ts rename to libs/common/src/importers/bitwarden-json-importer.ts index cf763c79048..e17548fce2b 100644 --- a/libs/common/src/importers/bitwardenJsonImporter.ts +++ b/libs/common/src/importers/bitwarden-json-importer.ts @@ -6,7 +6,7 @@ import { CipherWithIdExport } from "../models/export/cipher-with-ids.export"; import { CollectionWithIdExport } from "../models/export/collection-with-id.export"; import { FolderWithIdExport } from "../models/export/folder-with-id.export"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class BitwardenJsonImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/bitwardenPasswordProtectedImporter.ts b/libs/common/src/importers/bitwarden-password-protected-importer.ts similarity index 97% rename from libs/common/src/importers/bitwardenPasswordProtectedImporter.ts rename to libs/common/src/importers/bitwarden-password-protected-importer.ts index 064c09fa8f5..19e1aac0aec 100644 --- a/libs/common/src/importers/bitwardenPasswordProtectedImporter.ts +++ b/libs/common/src/importers/bitwarden-password-protected-importer.ts @@ -5,7 +5,7 @@ import { EncString } from "../models/domain/enc-string"; import { ImportResult } from "../models/domain/import-result"; import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; -import { BitwardenJsonImporter } from "./bitwardenJsonImporter"; +import { BitwardenJsonImporter } from "./bitwarden-json-importer"; import { Importer } from "./importer"; interface BitwardenPasswordProtectedFileFormat { diff --git a/libs/common/src/importers/blackBerryCsvImporter.ts b/libs/common/src/importers/blackberry-csv-importer.ts similarity index 96% rename from libs/common/src/importers/blackBerryCsvImporter.ts rename to libs/common/src/importers/blackberry-csv-importer.ts index b458f341bab..62df7f246c2 100644 --- a/libs/common/src/importers/blackBerryCsvImporter.ts +++ b/libs/common/src/importers/blackberry-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class BlackBerryCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/blurCsvImporter.ts b/libs/common/src/importers/blur-csv-importer.ts similarity index 96% rename from libs/common/src/importers/blurCsvImporter.ts rename to libs/common/src/importers/blur-csv-importer.ts index fd058c31bb8..2276e932f9a 100644 --- a/libs/common/src/importers/blurCsvImporter.ts +++ b/libs/common/src/importers/blur-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class BlurCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/buttercupCsvImporter.ts b/libs/common/src/importers/buttercup-csv-importer.ts similarity index 97% rename from libs/common/src/importers/buttercupCsvImporter.ts rename to libs/common/src/importers/buttercup-csv-importer.ts index b9e7302ddb6..22b6e33bad5 100644 --- a/libs/common/src/importers/buttercupCsvImporter.ts +++ b/libs/common/src/importers/buttercup-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; const OfficialProps = ["!group_id", "!group_name", "title", "username", "password", "URL", "id"]; diff --git a/libs/common/src/importers/chrome-csv-importer.ts b/libs/common/src/importers/chrome-csv-importer.ts index 0208a29b73b..7df20e4a6c4 100644 --- a/libs/common/src/importers/chrome-csv-importer.ts +++ b/libs/common/src/importers/chrome-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class ChromeCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/clipperzHtmlImporter.ts b/libs/common/src/importers/clipperz-html-importer.ts similarity index 98% rename from libs/common/src/importers/clipperzHtmlImporter.ts rename to libs/common/src/importers/clipperz-html-importer.ts index b7e7abc0bdd..a9d969d2638 100644 --- a/libs/common/src/importers/clipperzHtmlImporter.ts +++ b/libs/common/src/importers/clipperz-html-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class ClipperzHtmlImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/codebookCsvImporter.ts b/libs/common/src/importers/codebook-csv-importer.ts similarity index 97% rename from libs/common/src/importers/codebookCsvImporter.ts rename to libs/common/src/importers/codebook-csv-importer.ts index ec9848c23a7..302c5335430 100644 --- a/libs/common/src/importers/codebookCsvImporter.ts +++ b/libs/common/src/importers/codebook-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class CodebookCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/dashlaneImporters/dashlaneCsvImporter.ts b/libs/common/src/importers/dashlane/dashlane-csv-importer.ts similarity index 98% rename from libs/common/src/importers/dashlaneImporters/dashlaneCsvImporter.ts rename to libs/common/src/importers/dashlane/dashlane-csv-importer.ts index 8e7d5a682ab..46860fd4a8d 100644 --- a/libs/common/src/importers/dashlaneImporters/dashlaneCsvImporter.ts +++ b/libs/common/src/importers/dashlane/dashlane-csv-importer.ts @@ -5,7 +5,7 @@ import { CardView } from "../../models/view/card.view"; import { CipherView } from "../../models/view/cipher.view"; import { IdentityView } from "../../models/view/identity.view"; import { LoginView } from "../../models/view/login.view"; -import { BaseImporter } from "../baseImporter"; +import { BaseImporter } from "../base-importer"; import { Importer } from "../importer"; import { @@ -14,7 +14,7 @@ import { PaymentsRecord, PersonalInformationRecord, SecureNoteRecord, -} from "./types/dashlaneCsvTypes"; +} from "./types/dashlane-csv-types"; const _mappedCredentialsColums = new Set([ "title", diff --git a/libs/common/src/importers/dashlaneImporters/dashlaneJsonImporter.ts b/libs/common/src/importers/dashlane/dashlane-json-importer.ts similarity index 99% rename from libs/common/src/importers/dashlaneImporters/dashlaneJsonImporter.ts rename to libs/common/src/importers/dashlane/dashlane-json-importer.ts index 4c5afc175bc..d6812fe283d 100644 --- a/libs/common/src/importers/dashlaneImporters/dashlaneJsonImporter.ts +++ b/libs/common/src/importers/dashlane/dashlane-json-importer.ts @@ -5,7 +5,7 @@ import { CardView } from "../../models/view/card.view"; import { CipherView } from "../../models/view/cipher.view"; import { IdentityView } from "../../models/view/identity.view"; import { SecureNoteView } from "../../models/view/secure-note.view"; -import { BaseImporter } from "../baseImporter"; +import { BaseImporter } from "../base-importer"; import { Importer } from "../importer"; const HandledResults = new Set([ diff --git a/libs/common/src/importers/dashlaneImporters/types/dashlaneCsvTypes.ts b/libs/common/src/importers/dashlane/types/dashlane-csv-types.ts similarity index 100% rename from libs/common/src/importers/dashlaneImporters/types/dashlaneCsvTypes.ts rename to libs/common/src/importers/dashlane/types/dashlane-csv-types.ts diff --git a/libs/common/src/importers/encryptrCsvImporter.ts b/libs/common/src/importers/encryptr-csv-importer.ts similarity index 97% rename from libs/common/src/importers/encryptrCsvImporter.ts rename to libs/common/src/importers/encryptr-csv-importer.ts index fb5541b82ef..68449d6c979 100644 --- a/libs/common/src/importers/encryptrCsvImporter.ts +++ b/libs/common/src/importers/encryptr-csv-importer.ts @@ -2,7 +2,7 @@ import { CipherType } from "../enums/cipherType"; import { ImportResult } from "../models/domain/import-result"; import { CardView } from "../models/view/card.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class EncryptrCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/enpassCsvImporter.ts b/libs/common/src/importers/enpass-csv-importer.ts similarity index 98% rename from libs/common/src/importers/enpassCsvImporter.ts rename to libs/common/src/importers/enpass-csv-importer.ts index dada932ba22..d913c439eee 100644 --- a/libs/common/src/importers/enpassCsvImporter.ts +++ b/libs/common/src/importers/enpass-csv-importer.ts @@ -4,7 +4,7 @@ import { ImportResult } from "../models/domain/import-result"; import { CardView } from "../models/view/card.view"; import { SecureNoteView } from "../models/view/secure-note.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class EnpassCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/enpassJsonImporter.ts b/libs/common/src/importers/enpass-json-importer.ts similarity index 99% rename from libs/common/src/importers/enpassJsonImporter.ts rename to libs/common/src/importers/enpass-json-importer.ts index 29e46b73e3a..88778c8adef 100644 --- a/libs/common/src/importers/enpassJsonImporter.ts +++ b/libs/common/src/importers/enpass-json-importer.ts @@ -5,7 +5,7 @@ import { CardView } from "../models/view/card.view"; import { CipherView } from "../models/view/cipher.view"; import { FolderView } from "../models/view/folder.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class EnpassJsonImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/firefoxCsvImporter.ts b/libs/common/src/importers/firefox-csv-importer.ts similarity index 95% rename from libs/common/src/importers/firefoxCsvImporter.ts rename to libs/common/src/importers/firefox-csv-importer.ts index 4b3dc597ec9..e6c0c7030cb 100644 --- a/libs/common/src/importers/firefoxCsvImporter.ts +++ b/libs/common/src/importers/firefox-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class FirefoxCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/fsecureFskImporter.ts b/libs/common/src/importers/fsecure-fsk-importer.ts similarity index 97% rename from libs/common/src/importers/fsecureFskImporter.ts rename to libs/common/src/importers/fsecure-fsk-importer.ts index bf9ceb950d1..26cca341ac0 100644 --- a/libs/common/src/importers/fsecureFskImporter.ts +++ b/libs/common/src/importers/fsecure-fsk-importer.ts @@ -2,7 +2,7 @@ import { CipherType } from "../enums/cipherType"; import { ImportResult } from "../models/domain/import-result"; import { CardView } from "../models/view/card.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class FSecureFskImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/gnomeJsonImporter.ts b/libs/common/src/importers/gnome-json-importer.ts similarity index 97% rename from libs/common/src/importers/gnomeJsonImporter.ts rename to libs/common/src/importers/gnome-json-importer.ts index 1dd5f118dcd..a4e1f67fe0f 100644 --- a/libs/common/src/importers/gnomeJsonImporter.ts +++ b/libs/common/src/importers/gnome-json-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class GnomeJsonImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/importError.ts b/libs/common/src/importers/import-error.ts similarity index 100% rename from libs/common/src/importers/importError.ts rename to libs/common/src/importers/import-error.ts diff --git a/libs/common/src/importers/kasperskyTxtImporter.ts b/libs/common/src/importers/kaspersky-txt-importer.ts similarity index 98% rename from libs/common/src/importers/kasperskyTxtImporter.ts rename to libs/common/src/importers/kaspersky-txt-importer.ts index 75322946e2c..34f50188357 100644 --- a/libs/common/src/importers/kasperskyTxtImporter.ts +++ b/libs/common/src/importers/kaspersky-txt-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; const NotesHeader = "Notes\n\n"; diff --git a/libs/common/src/importers/keepass2XmlImporter.ts b/libs/common/src/importers/keepass2-xml-importer.ts similarity index 98% rename from libs/common/src/importers/keepass2XmlImporter.ts rename to libs/common/src/importers/keepass2-xml-importer.ts index b2ca0014602..2da304a3bab 100644 --- a/libs/common/src/importers/keepass2XmlImporter.ts +++ b/libs/common/src/importers/keepass2-xml-importer.ts @@ -2,7 +2,7 @@ import { FieldType } from "../enums/fieldType"; import { ImportResult } from "../models/domain/import-result"; import { FolderView } from "../models/view/folder.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class KeePass2XmlImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/keepassxCsvImporter.ts b/libs/common/src/importers/keepassx-csv-importer.ts similarity index 96% rename from libs/common/src/importers/keepassxCsvImporter.ts rename to libs/common/src/importers/keepassx-csv-importer.ts index 22d118b2272..6bbdd73a084 100644 --- a/libs/common/src/importers/keepassxCsvImporter.ts +++ b/libs/common/src/importers/keepassx-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class KeePassXCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/keeperImporters/keeperCsvImporter.ts b/libs/common/src/importers/keeper/keeper-csv-importer.ts similarity index 96% rename from libs/common/src/importers/keeperImporters/keeperCsvImporter.ts rename to libs/common/src/importers/keeper/keeper-csv-importer.ts index c87925216f1..54ff4a3d4d9 100644 --- a/libs/common/src/importers/keeperImporters/keeperCsvImporter.ts +++ b/libs/common/src/importers/keeper/keeper-csv-importer.ts @@ -1,5 +1,5 @@ import { ImportResult } from "../../models/domain/import-result"; -import { BaseImporter } from "../baseImporter"; +import { BaseImporter } from "../base-importer"; import { Importer } from "../importer"; export class KeeperCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/keeperImporters/keeperJsonImporter.ts b/libs/common/src/importers/keeper/keeper-json-importer.ts similarity index 94% rename from libs/common/src/importers/keeperImporters/keeperJsonImporter.ts rename to libs/common/src/importers/keeper/keeper-json-importer.ts index 0aed14824f8..0011044dde6 100644 --- a/libs/common/src/importers/keeperImporters/keeperJsonImporter.ts +++ b/libs/common/src/importers/keeper/keeper-json-importer.ts @@ -1,8 +1,8 @@ import { ImportResult } from "../../models/domain/import-result"; -import { BaseImporter } from "../baseImporter"; +import { BaseImporter } from "../base-importer"; import { Importer } from "../importer"; -import { KeeperJsonExport, RecordsEntity } from "./types/keeperJsonTypes"; +import { KeeperJsonExport, RecordsEntity } from "./types/keeper-json-types"; export class KeeperJsonImporter extends BaseImporter implements Importer { parse(data: string): Promise { diff --git a/libs/common/src/importers/keeperImporters/types/keeperJsonTypes.ts b/libs/common/src/importers/keeper/types/keeper-json-types.ts similarity index 100% rename from libs/common/src/importers/keeperImporters/types/keeperJsonTypes.ts rename to libs/common/src/importers/keeper/types/keeper-json-types.ts diff --git a/libs/common/src/importers/lastpassCsvImporter.ts b/libs/common/src/importers/lastpass-csv-importer.ts similarity index 99% rename from libs/common/src/importers/lastpassCsvImporter.ts rename to libs/common/src/importers/lastpass-csv-importer.ts index 6212837198c..e75be31f546 100644 --- a/libs/common/src/importers/lastpassCsvImporter.ts +++ b/libs/common/src/importers/lastpass-csv-importer.ts @@ -8,7 +8,7 @@ import { IdentityView } from "../models/view/identity.view"; import { LoginView } from "../models/view/login.view"; import { SecureNoteView } from "../models/view/secure-note.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class LastPassCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/logMeOnceCsvImporter.ts b/libs/common/src/importers/logmeonce-csv-importer.ts similarity index 95% rename from libs/common/src/importers/logMeOnceCsvImporter.ts rename to libs/common/src/importers/logmeonce-csv-importer.ts index 5fdc0a388b7..d1ff293e021 100644 --- a/libs/common/src/importers/logMeOnceCsvImporter.ts +++ b/libs/common/src/importers/logmeonce-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class LogMeOnceCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/meldiumCsvImporter.ts b/libs/common/src/importers/meldium-csv-importer.ts similarity index 95% rename from libs/common/src/importers/meldiumCsvImporter.ts rename to libs/common/src/importers/meldium-csv-importer.ts index 1a30ca5cfe8..af460c71e16 100644 --- a/libs/common/src/importers/meldiumCsvImporter.ts +++ b/libs/common/src/importers/meldium-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class MeldiumCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/msecureCsvImporter.ts b/libs/common/src/importers/msecure-csv-importer.ts similarity index 97% rename from libs/common/src/importers/msecureCsvImporter.ts rename to libs/common/src/importers/msecure-csv-importer.ts index a1bb4034932..cb17da5c17d 100644 --- a/libs/common/src/importers/msecureCsvImporter.ts +++ b/libs/common/src/importers/msecure-csv-importer.ts @@ -3,7 +3,7 @@ import { SecureNoteType } from "../enums/secureNoteType"; import { ImportResult } from "../models/domain/import-result"; import { SecureNoteView } from "../models/view/secure-note.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class MSecureCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/mykiCsvImporter.ts b/libs/common/src/importers/myki-csv-importer.ts similarity index 99% rename from libs/common/src/importers/mykiCsvImporter.ts rename to libs/common/src/importers/myki-csv-importer.ts index ec326b06f86..a56b0de4d3b 100644 --- a/libs/common/src/importers/mykiCsvImporter.ts +++ b/libs/common/src/importers/myki-csv-importer.ts @@ -6,7 +6,7 @@ import { CipherView } from "../models/view/cipher.view"; import { IdentityView } from "../models/view/identity.view"; import { SecureNoteView } from "../models/view/secure-note.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; const mappedBaseColumns = ["nickname", "additionalInfo"]; diff --git a/libs/common/src/importers/nordpassCsvImporter.ts b/libs/common/src/importers/nordpass-csv-importer.ts similarity index 98% rename from libs/common/src/importers/nordpassCsvImporter.ts rename to libs/common/src/importers/nordpass-csv-importer.ts index b41a2ea035c..cf6b73e13f3 100644 --- a/libs/common/src/importers/nordpassCsvImporter.ts +++ b/libs/common/src/importers/nordpass-csv-importer.ts @@ -4,7 +4,7 @@ import { ImportResult } from "../models/domain/import-result"; import { CipherView } from "../models/view/cipher.view"; import { LoginView } from "../models/view/login.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; type nodePassCsvParsed = { diff --git a/libs/common/src/importers/onepasswordImporters/cipherImportContext.ts b/libs/common/src/importers/onepassword/cipher-import-context.ts similarity index 100% rename from libs/common/src/importers/onepasswordImporters/cipherImportContext.ts rename to libs/common/src/importers/onepassword/cipher-import-context.ts diff --git a/libs/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts b/libs/common/src/importers/onepassword/onepassword-1pif-importer.ts similarity index 99% rename from libs/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts rename to libs/common/src/importers/onepassword/onepassword-1pif-importer.ts index 298f14bd28a..a0b6bb84bf8 100644 --- a/libs/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts +++ b/libs/common/src/importers/onepassword/onepassword-1pif-importer.ts @@ -7,7 +7,7 @@ import { CipherView } from "../../models/view/cipher.view"; import { IdentityView } from "../../models/view/identity.view"; import { PasswordHistoryView } from "../../models/view/password-history.view"; import { SecureNoteView } from "../../models/view/secure-note.view"; -import { BaseImporter } from "../baseImporter"; +import { BaseImporter } from "../base-importer"; import { Importer } from "../importer"; export class OnePassword1PifImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/onepasswordImporters/onepassword1PuxImporter.ts b/libs/common/src/importers/onepassword/onepassword-1pux-importer.ts similarity index 99% rename from libs/common/src/importers/onepasswordImporters/onepassword1PuxImporter.ts rename to libs/common/src/importers/onepassword/onepassword-1pux-importer.ts index 5c1f4869667..35027a1e90c 100644 --- a/libs/common/src/importers/onepasswordImporters/onepassword1PuxImporter.ts +++ b/libs/common/src/importers/onepassword/onepassword-1pux-importer.ts @@ -9,7 +9,7 @@ import { IdentityView } from "../../models/view/identity.view"; import { LoginView } from "../../models/view/login.view"; import { PasswordHistoryView } from "../../models/view/password-history.view"; import { SecureNoteView } from "../../models/view/secure-note.view"; -import { BaseImporter } from "../baseImporter"; +import { BaseImporter } from "../base-importer"; import { Importer } from "../importer"; import { @@ -25,7 +25,7 @@ import { UrlsEntity, Value, VaultsEntity, -} from "./types/onepassword1PuxImporterTypes"; +} from "./types/onepassword-1pux-importer-types"; export class OnePassword1PuxImporter extends BaseImporter implements Importer { result = new ImportResult(); diff --git a/libs/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts b/libs/common/src/importers/onepassword/onepassword-csv-importer.ts similarity index 99% rename from libs/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts rename to libs/common/src/importers/onepassword/onepassword-csv-importer.ts index 44e7a3c3d4e..12433c135f4 100644 --- a/libs/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts +++ b/libs/common/src/importers/onepassword/onepassword-csv-importer.ts @@ -2,10 +2,10 @@ import { CipherType } from "../../enums/cipherType"; import { FieldType } from "../../enums/fieldType"; import { ImportResult } from "../../models/domain/import-result"; import { CipherView } from "../../models/view/cipher.view"; -import { BaseImporter } from "../baseImporter"; +import { BaseImporter } from "../base-importer"; import { Importer } from "../importer"; -import { CipherImportContext } from "./cipherImportContext"; +import { CipherImportContext } from "./cipher-import-context"; export const IgnoredProperties = [ "ainfo", diff --git a/libs/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts b/libs/common/src/importers/onepassword/onepassword-mac-csv-importer.ts similarity index 97% rename from libs/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts rename to libs/common/src/importers/onepassword/onepassword-mac-csv-importer.ts index ffd6284c14a..522e6b0ef45 100644 --- a/libs/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts +++ b/libs/common/src/importers/onepassword/onepassword-mac-csv-importer.ts @@ -4,7 +4,7 @@ import { CipherView } from "../../models/view/cipher.view"; import { IdentityView } from "../../models/view/identity.view"; import { Importer } from "../importer"; -import { IgnoredProperties, OnePasswordCsvImporter } from "./onepasswordCsvImporter"; +import { IgnoredProperties, OnePasswordCsvImporter } from "./onepassword-csv-importer"; export class OnePasswordMacCsvImporter extends OnePasswordCsvImporter implements Importer { setCipherType(value: any, cipher: CipherView) { diff --git a/libs/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts b/libs/common/src/importers/onepassword/onepassword-win-csv-importer.ts similarity index 94% rename from libs/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts rename to libs/common/src/importers/onepassword/onepassword-win-csv-importer.ts index 3097c6587a6..5f0bca1c8a2 100644 --- a/libs/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts +++ b/libs/common/src/importers/onepassword/onepassword-win-csv-importer.ts @@ -5,8 +5,8 @@ import { IdentityView } from "../../models/view/identity.view"; import { LoginView } from "../../models/view/login.view"; import { Importer } from "../importer"; -import { CipherImportContext } from "./cipherImportContext"; -import { OnePasswordCsvImporter } from "./onepasswordCsvImporter"; +import { CipherImportContext } from "./cipher-import-context"; +import { OnePasswordCsvImporter } from "./onepassword-csv-importer"; export class OnePasswordWinCsvImporter extends OnePasswordCsvImporter implements Importer { constructor() { diff --git a/libs/common/src/importers/onepasswordImporters/types/onepassword1PuxImporterTypes.ts b/libs/common/src/importers/onepassword/types/onepassword-1pux-importer-types.ts similarity index 100% rename from libs/common/src/importers/onepasswordImporters/types/onepassword1PuxImporterTypes.ts rename to libs/common/src/importers/onepassword/types/onepassword-1pux-importer-types.ts diff --git a/libs/common/src/importers/padlockCsvImporter.ts b/libs/common/src/importers/padlock-csv-importer.ts similarity index 98% rename from libs/common/src/importers/padlockCsvImporter.ts rename to libs/common/src/importers/padlock-csv-importer.ts index d9d1b297115..7976e0ea3a8 100644 --- a/libs/common/src/importers/padlockCsvImporter.ts +++ b/libs/common/src/importers/padlock-csv-importer.ts @@ -1,7 +1,7 @@ import { ImportResult } from "../models/domain/import-result"; import { CollectionView } from "../models/view/collection.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class PadlockCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/passkeepCsvImporter.ts b/libs/common/src/importers/passkeep-csv-importer.ts similarity index 96% rename from libs/common/src/importers/passkeepCsvImporter.ts rename to libs/common/src/importers/passkeep-csv-importer.ts index 9ba05246ad4..c7269fa4ec0 100644 --- a/libs/common/src/importers/passkeepCsvImporter.ts +++ b/libs/common/src/importers/passkeep-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class PassKeepCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/passmanJsonImporter.ts b/libs/common/src/importers/passman-json-importer.ts similarity index 97% rename from libs/common/src/importers/passmanJsonImporter.ts rename to libs/common/src/importers/passman-json-importer.ts index bf5904bc5c3..6cc1e225224 100644 --- a/libs/common/src/importers/passmanJsonImporter.ts +++ b/libs/common/src/importers/passman-json-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class PassmanJsonImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/passpackCsvImporter.ts b/libs/common/src/importers/passpack-csv-importer.ts similarity index 98% rename from libs/common/src/importers/passpackCsvImporter.ts rename to libs/common/src/importers/passpack-csv-importer.ts index fb5282594fd..5f9f708c8ad 100644 --- a/libs/common/src/importers/passpackCsvImporter.ts +++ b/libs/common/src/importers/passpack-csv-importer.ts @@ -1,7 +1,7 @@ import { ImportResult } from "../models/domain/import-result"; import { CollectionView } from "../models/view/collection.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class PasspackCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/passwordAgentCsvImporter.ts b/libs/common/src/importers/passwordagent-csv-importer.ts similarity index 97% rename from libs/common/src/importers/passwordAgentCsvImporter.ts rename to libs/common/src/importers/passwordagent-csv-importer.ts index 9ac68e04ed7..358ee09c841 100644 --- a/libs/common/src/importers/passwordAgentCsvImporter.ts +++ b/libs/common/src/importers/passwordagent-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class PasswordAgentCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/passwordBossJsonImporter.ts b/libs/common/src/importers/passwordboss-json-importer.ts similarity index 98% rename from libs/common/src/importers/passwordBossJsonImporter.ts rename to libs/common/src/importers/passwordboss-json-importer.ts index 3ec00c25437..dc29edf117b 100644 --- a/libs/common/src/importers/passwordBossJsonImporter.ts +++ b/libs/common/src/importers/passwordboss-json-importer.ts @@ -3,7 +3,7 @@ import { ImportResult } from "../models/domain/import-result"; import { CardView } from "../models/view/card.view"; import { FolderView } from "../models/view/folder.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class PasswordBossJsonImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/passwordDragonXmlImporter.ts b/libs/common/src/importers/passworddragon-xml-importer.ts similarity index 98% rename from libs/common/src/importers/passwordDragonXmlImporter.ts rename to libs/common/src/importers/passworddragon-xml-importer.ts index 1fa3dd60d05..17e17752474 100644 --- a/libs/common/src/importers/passwordDragonXmlImporter.ts +++ b/libs/common/src/importers/passworddragon-xml-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class PasswordDragonXmlImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/passwordSafeXmlImporter.ts b/libs/common/src/importers/passwordsafe-xml-importer.ts similarity index 98% rename from libs/common/src/importers/passwordSafeXmlImporter.ts rename to libs/common/src/importers/passwordsafe-xml-importer.ts index ccbc0593250..49b6cb64f64 100644 --- a/libs/common/src/importers/passwordSafeXmlImporter.ts +++ b/libs/common/src/importers/passwordsafe-xml-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class PasswordSafeXmlImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/passwordWalletTxtImporter.ts b/libs/common/src/importers/passwordwallet-txt-importer.ts similarity index 96% rename from libs/common/src/importers/passwordWalletTxtImporter.ts rename to libs/common/src/importers/passwordwallet-txt-importer.ts index 55902b9ebf8..2756c99949f 100644 --- a/libs/common/src/importers/passwordWalletTxtImporter.ts +++ b/libs/common/src/importers/passwordwallet-txt-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class PasswordWalletTxtImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/rememBearCsvImporter.ts b/libs/common/src/importers/remembear-csv-importer.ts similarity index 98% rename from libs/common/src/importers/rememBearCsvImporter.ts rename to libs/common/src/importers/remembear-csv-importer.ts index 4fe3e9a0a52..3ddb3271407 100644 --- a/libs/common/src/importers/rememBearCsvImporter.ts +++ b/libs/common/src/importers/remembear-csv-importer.ts @@ -2,7 +2,7 @@ import { CipherType } from "../enums/cipherType"; import { ImportResult } from "../models/domain/import-result"; import { CardView } from "../models/view/card.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class RememBearCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/roboformCsvImporter.ts b/libs/common/src/importers/roboform-csv-importer.ts similarity index 97% rename from libs/common/src/importers/roboformCsvImporter.ts rename to libs/common/src/importers/roboform-csv-importer.ts index cfc0022a12c..01d3d8dc7c3 100644 --- a/libs/common/src/importers/roboformCsvImporter.ts +++ b/libs/common/src/importers/roboform-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class RoboFormCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/safariCsvImporter.ts b/libs/common/src/importers/safari-csv-importer.ts similarity index 95% rename from libs/common/src/importers/safariCsvImporter.ts rename to libs/common/src/importers/safari-csv-importer.ts index 41d67f3b17a..09f5dacbe2b 100644 --- a/libs/common/src/importers/safariCsvImporter.ts +++ b/libs/common/src/importers/safari-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class SafariCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/safeInCloudXmlImporter.ts b/libs/common/src/importers/safeincloud-xml-importer.ts similarity index 99% rename from libs/common/src/importers/safeInCloudXmlImporter.ts rename to libs/common/src/importers/safeincloud-xml-importer.ts index 800162c218c..5d81a001aaa 100644 --- a/libs/common/src/importers/safeInCloudXmlImporter.ts +++ b/libs/common/src/importers/safeincloud-xml-importer.ts @@ -7,7 +7,7 @@ import { FieldView } from "../models/view/field.view"; import { FolderView } from "../models/view/folder.view"; import { SecureNoteView } from "../models/view/secure-note.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class SafeInCloudXmlImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/saferpassCsvImport.ts b/libs/common/src/importers/saferpass-csv-importer.ts similarity index 95% rename from libs/common/src/importers/saferpassCsvImport.ts rename to libs/common/src/importers/saferpass-csv-importer.ts index 1de578ee086..2da953ea6f7 100644 --- a/libs/common/src/importers/saferpassCsvImport.ts +++ b/libs/common/src/importers/saferpass-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class SaferPassCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/secureSafeCsvImporter.ts b/libs/common/src/importers/securesafe-csv-importer.ts similarity index 95% rename from libs/common/src/importers/secureSafeCsvImporter.ts rename to libs/common/src/importers/securesafe-csv-importer.ts index b072b987843..062c9dafa7c 100644 --- a/libs/common/src/importers/secureSafeCsvImporter.ts +++ b/libs/common/src/importers/securesafe-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class SecureSafeCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/splashIdCsvImporter.ts b/libs/common/src/importers/splashid-csv-importer.ts similarity index 97% rename from libs/common/src/importers/splashIdCsvImporter.ts rename to libs/common/src/importers/splashid-csv-importer.ts index 241175b0794..0270d91d139 100644 --- a/libs/common/src/importers/splashIdCsvImporter.ts +++ b/libs/common/src/importers/splashid-csv-importer.ts @@ -1,7 +1,7 @@ import { ImportResult } from "../models/domain/import-result"; import { CipherView } from "../models/view/cipher.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class SplashIdCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/stickyPasswordXmlImporter.ts b/libs/common/src/importers/stickypassword-xml-importer.ts similarity index 98% rename from libs/common/src/importers/stickyPasswordXmlImporter.ts rename to libs/common/src/importers/stickypassword-xml-importer.ts index c2ce1836558..a9bbd22ec58 100644 --- a/libs/common/src/importers/stickyPasswordXmlImporter.ts +++ b/libs/common/src/importers/stickypassword-xml-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class StickyPasswordXmlImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/truekeyCsvImporter.ts b/libs/common/src/importers/truekey-csv-importer.ts similarity index 98% rename from libs/common/src/importers/truekeyCsvImporter.ts rename to libs/common/src/importers/truekey-csv-importer.ts index dabfa4d3a48..8b65dbd5d9f 100644 --- a/libs/common/src/importers/truekeyCsvImporter.ts +++ b/libs/common/src/importers/truekey-csv-importer.ts @@ -4,7 +4,7 @@ import { ImportResult } from "../models/domain/import-result"; import { CardView } from "../models/view/card.view"; import { SecureNoteView } from "../models/view/secure-note.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; const PropertiesToIgnore = [ diff --git a/libs/common/src/importers/upmCsvImporter.ts b/libs/common/src/importers/upm-csv-importer.ts similarity index 95% rename from libs/common/src/importers/upmCsvImporter.ts rename to libs/common/src/importers/upm-csv-importer.ts index 4a11bee69ec..b326ddbac10 100644 --- a/libs/common/src/importers/upmCsvImporter.ts +++ b/libs/common/src/importers/upm-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class UpmCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/yotiCsvImporter.ts b/libs/common/src/importers/yoti-csv-importer.ts similarity index 94% rename from libs/common/src/importers/yotiCsvImporter.ts rename to libs/common/src/importers/yoti-csv-importer.ts index ba74fb98c0f..868b804baf6 100644 --- a/libs/common/src/importers/yotiCsvImporter.ts +++ b/libs/common/src/importers/yoti-csv-importer.ts @@ -1,6 +1,6 @@ import { ImportResult } from "../models/domain/import-result"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class YotiCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/importers/zohoVaultCsvImporter.ts b/libs/common/src/importers/zohovault-csv-importer.ts similarity index 98% rename from libs/common/src/importers/zohoVaultCsvImporter.ts rename to libs/common/src/importers/zohovault-csv-importer.ts index 0484353edf9..2d4def098ac 100644 --- a/libs/common/src/importers/zohoVaultCsvImporter.ts +++ b/libs/common/src/importers/zohovault-csv-importer.ts @@ -1,7 +1,7 @@ import { ImportResult } from "../models/domain/import-result"; import { CipherView } from "../models/view/cipher.view"; -import { BaseImporter } from "./baseImporter"; +import { BaseImporter } from "./base-importer"; import { Importer } from "./importer"; export class ZohoVaultCsvImporter extends BaseImporter implements Importer { diff --git a/libs/common/src/interfaces/decryptable.interface.ts b/libs/common/src/interfaces/decryptable.interface.ts new file mode 100644 index 00000000000..ae5e8ebbf82 --- /dev/null +++ b/libs/common/src/interfaces/decryptable.interface.ts @@ -0,0 +1,12 @@ +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; + +import { InitializerMetadata } from "./initializer-metadata.interface"; + +/** + * An object that contains EncStrings and knows how to decrypt them. This is usually a domain object with the + * corresponding view object as the type argument. + * @example Cipher implements Decryptable + */ +export interface Decryptable extends InitializerMetadata { + decrypt: (key?: SymmetricCryptoKey) => Promise; +} diff --git a/libs/common/src/interfaces/initializer-metadata.interface.ts b/libs/common/src/interfaces/initializer-metadata.interface.ts new file mode 100644 index 00000000000..9bc01326dd4 --- /dev/null +++ b/libs/common/src/interfaces/initializer-metadata.interface.ts @@ -0,0 +1,11 @@ +import { InitializerKey } from "../services/cryptography/initializer-key"; + +/** + * This interface enables deserialization of arbitrary objects by recording their class name as an enum, which + * will survive serialization. The enum can then be matched to a constructor or factory method for deserialization. + * See get-class-initializer.ts for the initializer map. + */ +export interface InitializerMetadata { + initializerKey: InitializerKey; + toJSON?: () => { initializerKey: InitializerKey }; +} diff --git a/libs/common/src/misc/flags.ts b/libs/common/src/misc/flags.ts index aa425c36046..7811d3477f2 100644 --- a/libs/common/src/misc/flags.ts +++ b/libs/common/src/misc/flags.ts @@ -1,6 +1,8 @@ // required to avoid linting errors when there are no flags /* eslint-disable @typescript-eslint/ban-types */ -export type SharedFlags = {}; +export type SharedFlags = { + multithreadDecryption: boolean; +}; // required to avoid linting errors when there are no flags /* eslint-disable @typescript-eslint/ban-types */ diff --git a/libs/common/src/misc/utils.ts b/libs/common/src/misc/utils.ts index 537c8e58e12..ff21a919f1f 100644 --- a/libs/common/src/misc/utils.ts +++ b/libs/common/src/misc/utils.ts @@ -1,8 +1,8 @@ /* eslint-disable no-useless-escape */ import { getHostname, parse } from "tldts"; -import { AbstractEncryptService } from "../abstractions/abstractEncrypt.service"; import { CryptoService } from "../abstractions/crypto.service"; +import { EncryptService } from "../abstractions/encrypt.service"; import { I18nService } from "../abstractions/i18n.service"; const nodeURL = typeof window === "undefined" ? require("url") : null; @@ -14,7 +14,7 @@ declare global { interface BitwardenContainerService { getCryptoService: () => CryptoService; - getEncryptService: () => AbstractEncryptService; + getEncryptService: () => EncryptService; } export class Utils { diff --git a/libs/common/src/models/domain/cipher.ts b/libs/common/src/models/domain/cipher.ts index 585a4395f7e..7b4a4d4b1fd 100644 --- a/libs/common/src/models/domain/cipher.ts +++ b/libs/common/src/models/domain/cipher.ts @@ -2,6 +2,8 @@ import { Jsonify } from "type-fest"; import { CipherRepromptType } from "../../enums/cipherRepromptType"; import { CipherType } from "../../enums/cipherType"; +import { Decryptable } from "../../interfaces/decryptable.interface"; +import { InitializerKey } from "../../services/cryptography/initializer-key"; import { CipherData } from "../data/cipher.data"; import { LocalData } from "../data/local.data"; import { CipherView } from "../view/cipher.view"; @@ -17,7 +19,9 @@ import { Password } from "./password"; import { SecureNote } from "./secure-note"; import { SymmetricCryptoKey } from "./symmetric-crypto-key"; -export class Cipher extends Domain { +export class Cipher extends Domain implements Decryptable { + readonly initializerKey = InitializerKey.Cipher; + id: string; organizationId: string; folderId: string; diff --git a/libs/common/src/models/response/event.response.ts b/libs/common/src/models/response/event.response.ts index fe102019ccd..10897494ab7 100644 --- a/libs/common/src/models/response/event.response.ts +++ b/libs/common/src/models/response/event.response.ts @@ -1,4 +1,5 @@ import { DeviceType } from "../../enums/deviceType"; +import { EventSystemUser } from "../../enums/event-system-user"; import { EventType } from "../../enums/eventType"; import { BaseResponse } from "./base.response"; @@ -20,6 +21,7 @@ export class EventResponse extends BaseResponse { deviceType: DeviceType; ipAddress: string; installationId: string; + systemUser: EventSystemUser; constructor(response: any) { super(response); @@ -39,5 +41,6 @@ export class EventResponse extends BaseResponse { this.deviceType = this.getResponseProperty("DeviceType"); this.ipAddress = this.getResponseProperty("IpAddress"); this.installationId = this.getResponseProperty("InstallationId"); + this.systemUser = this.getResponseProperty("SystemUser"); } } diff --git a/libs/common/src/models/response/organization-export.response.ts b/libs/common/src/models/response/organization-export.response.ts index 949ce6a2a12..af1152dc2f9 100644 --- a/libs/common/src/models/response/organization-export.response.ts +++ b/libs/common/src/models/response/organization-export.response.ts @@ -1,15 +1,20 @@ import { BaseResponse } from "./base.response"; import { CipherResponse } from "./cipher.response"; import { CollectionResponse } from "./collection.response"; -import { ListResponse } from "./list.response"; export class OrganizationExportResponse extends BaseResponse { - collections: ListResponse; - ciphers: ListResponse; + collections: CollectionResponse[]; + ciphers: CipherResponse[]; constructor(response: any) { super(response); - this.collections = this.getResponseProperty("Collections"); - this.ciphers = this.getResponseProperty("Ciphers"); + const collections = this.getResponseProperty("Collections"); + if (collections != null) { + this.collections = collections.map((c: any) => new CollectionResponse(c)); + } + const ciphers = this.getResponseProperty("Ciphers"); + if (ciphers != null) { + this.ciphers = ciphers.map((c: any) => new CipherResponse(c)); + } } } diff --git a/libs/common/src/models/view/cipher.view.ts b/libs/common/src/models/view/cipher.view.ts index 41043b7e5ee..c3c69b3b9e7 100644 --- a/libs/common/src/models/view/cipher.view.ts +++ b/libs/common/src/models/view/cipher.view.ts @@ -3,6 +3,8 @@ import { Jsonify } from "type-fest"; import { CipherRepromptType } from "../../enums/cipherRepromptType"; import { CipherType } from "../../enums/cipherType"; import { LinkedIdType } from "../../enums/linkedIdType"; +import { InitializerMetadata } from "../../interfaces/initializer-metadata.interface"; +import { InitializerKey } from "../../services/cryptography/initializer-key"; import { LocalData } from "../data/local.data"; import { Cipher } from "../domain/cipher"; @@ -15,7 +17,9 @@ import { PasswordHistoryView } from "./password-history.view"; import { SecureNoteView } from "./secure-note.view"; import { View } from "./view"; -export class CipherView implements View { +export class CipherView implements View, InitializerMetadata { + readonly initializerKey = InitializerKey.CipherView; + id: string = null; organizationId: string = null; folderId: string = null; diff --git a/libs/common/src/models/view/event.view.ts b/libs/common/src/models/view/event.view.ts index 56bf5c309e8..6b77c0b6286 100644 --- a/libs/common/src/models/view/event.view.ts +++ b/libs/common/src/models/view/event.view.ts @@ -1,3 +1,4 @@ +import { EventSystemUser } from "../../enums/event-system-user"; import { EventType } from "../../enums/eventType"; export class EventView { @@ -12,6 +13,7 @@ export class EventView { ip: string; type: EventType; installationId: string; + systemUser: EventSystemUser; constructor(data: Required) { this.message = data.message; @@ -25,5 +27,6 @@ export class EventView { this.ip = data.ip; this.type = data.type; this.installationId = data.installationId; + this.systemUser = data.systemUser; } } diff --git a/libs/common/src/services/api.service.ts b/libs/common/src/services/api.service.ts index bab17eb43f7..6c15d85c0d1 100644 --- a/libs/common/src/services/api.service.ts +++ b/libs/common/src/services/api.service.ts @@ -1518,6 +1518,12 @@ export class ApiService implements ApiServiceAbstraction { return new DeviceVerificationResponse(r); } + async getKnownDevice(email: string, deviceIdentifier: string): Promise { + const path = `/devices/knowndevice/${email}/${deviceIdentifier}`; + const r = await this.send("GET", path, null, false, true); + return r as boolean; + } + // Emergency Access APIs async getEmergencyAccessTrusted(): Promise> { @@ -2354,16 +2360,6 @@ export class ApiService implements ApiServiceAbstraction { tokenError: boolean, authed: boolean ): Promise { - if ( - authed && - ((tokenError && response.status === 400) || - response.status === 401 || - response.status === 403) - ) { - await this.logoutCallback(true); - return null; - } - let responseJson: any = null; if (this.isJsonResponse(response)) { responseJson = await response.json(); @@ -2371,6 +2367,20 @@ export class ApiService implements ApiServiceAbstraction { responseJson = { Message: await response.text() }; } + if (authed) { + if ( + response.status === 401 || + response.status === 403 || + (tokenError && + response.status === 400 && + responseJson != null && + responseJson.error === "invalid_grant") + ) { + await this.logoutCallback(true); + return null; + } + } + return new ErrorResponse(responseJson, response.status, tokenError); } diff --git a/libs/common/src/services/cipher.service.ts b/libs/common/src/services/cipher.service.ts index b9aeff659da..a7b54942e2c 100644 --- a/libs/common/src/services/cipher.service.ts +++ b/libs/common/src/services/cipher.service.ts @@ -3,6 +3,7 @@ import { firstValueFrom } from "rxjs"; import { ApiService } from "../abstractions/api.service"; import { CipherService as CipherServiceAbstraction } from "../abstractions/cipher.service"; import { CryptoService } from "../abstractions/crypto.service"; +import { EncryptService } from "../abstractions/encrypt.service"; import { FileUploadService } from "../abstractions/fileUpload.service"; import { I18nService } from "../abstractions/i18n.service"; import { LogService } from "../abstractions/log.service"; @@ -65,7 +66,8 @@ export class CipherService implements CipherServiceAbstraction { private i18nService: I18nService, private searchService: () => SearchService, private logService: LogService, - private stateService: StateService + private stateService: StateService, + private encryptService: EncryptService ) {} async getDecryptedCipherCache(): Promise { @@ -329,35 +331,50 @@ export class CipherService implements CipherServiceAbstraction { @sequentialize(() => "getAllDecrypted") async getAllDecrypted(): Promise { - const userId = await this.stateService.getUserId(); if ((await this.getDecryptedCipherCache()) != null) { - if ( - this.searchService != null && - (this.searchService().indexedEntityId ?? userId) !== userId - ) { - await this.searchService().indexCiphers(userId, await this.getDecryptedCipherCache()); - } + await this.reindexCiphers(); return await this.getDecryptedCipherCache(); } - const decCiphers: CipherView[] = []; const hasKey = await this.cryptoService.hasKey(); if (!hasKey) { throw new Error("No key."); } - const promises: Promise[] = []; const ciphers = await this.getAll(); - ciphers.forEach(async (cipher) => { - promises.push(cipher.decrypt().then((c) => decCiphers.push(c))); - }); + const orgKeys = await this.cryptoService.getOrgKeys(); + const userKey = await this.cryptoService.getKeyForUserEncryption(); + + // Group ciphers by orgId or under 'null' for the user's ciphers + const grouped = ciphers.reduce((agg, c) => { + agg[c.organizationId] ??= []; + agg[c.organizationId].push(c); + return agg; + }, {} as Record); + + const decCiphers = ( + await Promise.all( + Object.entries(grouped).map(([orgId, groupedCiphers]) => + this.encryptService.decryptItems(groupedCiphers, orgKeys.get(orgId) ?? userKey) + ) + ) + ) + .flat() + .sort(this.getLocaleSortingFunction()); - await Promise.all(promises); - decCiphers.sort(this.getLocaleSortingFunction()); await this.setDecryptedCipherCache(decCiphers); return decCiphers; } + private async reindexCiphers() { + const userId = await this.stateService.getUserId(); + const reindexRequired = + this.searchService != null && (this.searchService().indexedEntityId ?? userId) !== userId; + if (reindexRequired) { + await this.searchService().indexCiphers(userId, await this.getDecryptedCipherCache()); + } + } + async getAllDecryptedForGrouping(groupingId: string, folder = true): Promise { const ciphers = await this.getAllDecrypted(); @@ -488,21 +505,17 @@ export class CipherService implements CipherServiceAbstraction { } async getAllFromApiForOrganization(organizationId: string): Promise { - const ciphers = await this.apiService.getCiphersOrganization(organizationId); - if (ciphers != null && ciphers.data != null && ciphers.data.length) { - const decCiphers: CipherView[] = []; - const promises: any[] = []; - ciphers.data.forEach((r) => { - const data = new CipherData(r); - const cipher = new Cipher(data); - promises.push(cipher.decrypt().then((c) => decCiphers.push(c))); - }); - await Promise.all(promises); - decCiphers.sort(this.getLocaleSortingFunction()); - return decCiphers; - } else { + const response = await this.apiService.getCiphersOrganization(organizationId); + if (response?.data == null || response.data.length < 1) { return []; } + + const ciphers = response.data.map((cr) => new Cipher(new CipherData(cr))); + const key = await this.cryptoService.getOrgKey(organizationId); + const decCiphers = await this.encryptService.decryptItems(ciphers, key); + + decCiphers.sort(this.getLocaleSortingFunction()); + return decCiphers; } async getLastUsedForUrl(url: string, autofillOnPageLoad = false): Promise { diff --git a/libs/common/src/services/container.service.ts b/libs/common/src/services/container.service.ts index 9e50705d6aa..b6cb7b70a0d 100644 --- a/libs/common/src/services/container.service.ts +++ b/libs/common/src/services/container.service.ts @@ -1,11 +1,8 @@ -import { AbstractEncryptService } from "../abstractions/abstractEncrypt.service"; import { CryptoService } from "../abstractions/crypto.service"; +import { EncryptService } from "../abstractions/encrypt.service"; export class ContainerService { - constructor( - private cryptoService: CryptoService, - private encryptService: AbstractEncryptService - ) {} + constructor(private cryptoService: CryptoService, private encryptService: EncryptService) {} attachToGlobal(global: any) { if (!global.bitwardenContainerService) { @@ -26,7 +23,7 @@ export class ContainerService { /** * @throws Will throw if EncryptService was not instantiated and provided to the ContainerService constructor */ - getEncryptService(): AbstractEncryptService { + getEncryptService(): EncryptService { if (this.encryptService == null) { throw new Error("ContainerService.encryptService not initialized."); } diff --git a/libs/common/src/services/crypto.service.ts b/libs/common/src/services/crypto.service.ts index 8524598ede3..5a4137771ea 100644 --- a/libs/common/src/services/crypto.service.ts +++ b/libs/common/src/services/crypto.service.ts @@ -1,8 +1,8 @@ import * as bigInt from "big-integer"; -import { AbstractEncryptService } from "../abstractions/abstractEncrypt.service"; import { CryptoService as CryptoServiceAbstraction } from "../abstractions/crypto.service"; import { CryptoFunctionService } from "../abstractions/cryptoFunction.service"; +import { EncryptService } from "../abstractions/encrypt.service"; import { LogService } from "../abstractions/log.service"; import { PlatformUtilsService } from "../abstractions/platformUtils.service"; import { StateService } from "../abstractions/state.service"; @@ -25,7 +25,7 @@ import { ProfileProviderResponse } from "../models/response/profile-provider.res export class CryptoService implements CryptoServiceAbstraction { constructor( private cryptoFunctionService: CryptoFunctionService, - private encryptService: AbstractEncryptService, + private encryptService: EncryptService, protected platformUtilService: PlatformUtilsService, protected logService: LogService, protected stateService: StateService diff --git a/libs/common/src/services/encrypt.service.ts b/libs/common/src/services/cryptography/encrypt.service.implementation.ts similarity index 80% rename from libs/common/src/services/encrypt.service.ts rename to libs/common/src/services/cryptography/encrypt.service.implementation.ts index c210fdcd7b6..86b2c795f84 100644 --- a/libs/common/src/services/encrypt.service.ts +++ b/libs/common/src/services/cryptography/encrypt.service.implementation.ts @@ -1,19 +1,21 @@ -import { AbstractEncryptService } from "../abstractions/abstractEncrypt.service"; -import { CryptoFunctionService } from "../abstractions/cryptoFunction.service"; -import { LogService } from "../abstractions/log.service"; -import { EncryptionType } from "../enums/encryptionType"; -import { IEncrypted } from "../interfaces/IEncrypted"; -import { Utils } from "../misc/utils"; -import { EncArrayBuffer } from "../models/domain/enc-array-buffer"; -import { EncString } from "../models/domain/enc-string"; -import { EncryptedObject } from "../models/domain/encrypted-object"; -import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; +import { CryptoFunctionService } from "../../abstractions/cryptoFunction.service"; +import { EncryptService } from "../../abstractions/encrypt.service"; +import { LogService } from "../../abstractions/log.service"; +import { EncryptionType } from "../../enums/encryptionType"; +import { IEncrypted } from "../../interfaces/IEncrypted"; +import { Decryptable } from "../../interfaces/decryptable.interface"; +import { InitializerMetadata } from "../../interfaces/initializer-metadata.interface"; +import { Utils } from "../../misc/utils"; +import { EncArrayBuffer } from "../../models/domain/enc-array-buffer"; +import { EncString } from "../../models/domain/enc-string"; +import { EncryptedObject } from "../../models/domain/encrypted-object"; +import { SymmetricCryptoKey } from "../../models/domain/symmetric-crypto-key"; -export class EncryptService implements AbstractEncryptService { +export class EncryptServiceImplementation implements EncryptService { constructor( - private cryptoFunctionService: CryptoFunctionService, - private logService: LogService, - private logMacFailures: boolean + protected cryptoFunctionService: CryptoFunctionService, + protected logService: LogService, + protected logMacFailures: boolean ) {} async encrypt(plainValue: string | ArrayBuffer, key: SymmetricCryptoKey): Promise { @@ -148,6 +150,17 @@ export class EncryptService implements AbstractEncryptService { return result ?? null; } + async decryptItems( + items: Decryptable[], + key: SymmetricCryptoKey + ): Promise { + if (items == null || items.length < 1) { + return []; + } + + return await Promise.all(items.map((item) => item.decrypt(key))); + } + private async aesEncrypt(data: ArrayBuffer, key: SymmetricCryptoKey): Promise { const obj = new EncryptedObject(); obj.key = key; diff --git a/libs/common/src/services/cryptography/encrypt.worker.ts b/libs/common/src/services/cryptography/encrypt.worker.ts new file mode 100644 index 00000000000..0ee2914ad4b --- /dev/null +++ b/libs/common/src/services/cryptography/encrypt.worker.ts @@ -0,0 +1,56 @@ +import { Jsonify } from "type-fest"; + +import { Decryptable } from "../../interfaces/decryptable.interface"; +import { SymmetricCryptoKey } from "../../models/domain/symmetric-crypto-key"; +import { ConsoleLogService } from "../../services/consoleLog.service"; +import { ContainerService } from "../../services/container.service"; +import { WebCryptoFunctionService } from "../../services/webCryptoFunction.service"; + +import { EncryptServiceImplementation } from "./encrypt.service.implementation"; +import { getClassInitializer } from "./get-class-initializer"; + +const workerApi: Worker = self as any; + +let inited = false; +let encryptService: EncryptServiceImplementation; + +/** + * Bootstrap the worker environment with services required for decryption + */ +export function init() { + const cryptoFunctionService = new WebCryptoFunctionService(self); + const logService = new ConsoleLogService(false); + encryptService = new EncryptServiceImplementation(cryptoFunctionService, logService, true); + + const bitwardenContainerService = new ContainerService(null, encryptService); + bitwardenContainerService.attachToGlobal(self); + + inited = true; +} + +/** + * Listen for messages and decrypt their contents + */ +workerApi.addEventListener("message", async (event: { data: string }) => { + if (!inited) { + init(); + } + + const request: { + id: string; + items: Jsonify>[]; + key: Jsonify; + } = JSON.parse(event.data); + + const key = SymmetricCryptoKey.fromJSON(request.key); + const items = request.items.map((jsonItem) => { + const initializer = getClassInitializer>(jsonItem.initializerKey); + return initializer(jsonItem); + }); + const result = await encryptService.decryptItems(items, key); + + workerApi.postMessage({ + id: request.id, + items: JSON.stringify(result), + }); +}); diff --git a/libs/common/src/services/cryptography/get-class-initializer.ts b/libs/common/src/services/cryptography/get-class-initializer.ts new file mode 100644 index 00000000000..accdb1c4a4f --- /dev/null +++ b/libs/common/src/services/cryptography/get-class-initializer.ts @@ -0,0 +1,22 @@ +import { Jsonify } from "type-fest"; + +import { InitializerMetadata } from "../../interfaces/initializer-metadata.interface"; +import { Cipher } from "../../models/domain/cipher"; +import { CipherView } from "../../models/view/cipher.view"; + +import { InitializerKey } from "./initializer-key"; + +/** + * Internal reference of classes so we can reconstruct objects properly. + * Each entry should be keyed using the Decryptable.initializerKey property + */ +const classInitializers: Record any> = { + [InitializerKey.Cipher]: Cipher.fromJSON, + [InitializerKey.CipherView]: CipherView.fromJSON, +}; + +export function getClassInitializer( + className: InitializerKey +): (obj: Jsonify) => T { + return classInitializers[className]; +} diff --git a/libs/common/src/services/cryptography/initializer-key.ts b/libs/common/src/services/cryptography/initializer-key.ts new file mode 100644 index 00000000000..88e36d90515 --- /dev/null +++ b/libs/common/src/services/cryptography/initializer-key.ts @@ -0,0 +1,4 @@ +export enum InitializerKey { + Cipher = 0, + CipherView = 1, +} diff --git a/libs/common/src/services/cryptography/multithread-encrypt.service.implementation.ts b/libs/common/src/services/cryptography/multithread-encrypt.service.implementation.ts new file mode 100644 index 00000000000..4e7fa2ca48d --- /dev/null +++ b/libs/common/src/services/cryptography/multithread-encrypt.service.implementation.ts @@ -0,0 +1,86 @@ +import { defaultIfEmpty, filter, firstValueFrom, fromEvent, map, Subject, takeUntil } from "rxjs"; +import { Jsonify } from "type-fest"; + +import { Decryptable } from "../../interfaces/decryptable.interface"; +import { InitializerMetadata } from "../../interfaces/initializer-metadata.interface"; +import { Utils } from "../../misc/utils"; +import { SymmetricCryptoKey } from "../../models/domain/symmetric-crypto-key"; + +import { EncryptServiceImplementation } from "./encrypt.service.implementation"; +import { getClassInitializer } from "./get-class-initializer"; + +// TTL (time to live) is not strictly required but avoids tying up memory resources if inactive +const workerTTL = 3 * 60000; // 3 minutes + +export class MultithreadEncryptServiceImplementation extends EncryptServiceImplementation { + private worker: Worker; + private timeout: any; + + private clear$ = new Subject(); + + /** + * Sends items to a web worker to decrypt them. + * This utilises multithreading to decrypt items faster without interrupting other operations (e.g. updating UI). + */ + async decryptItems( + items: Decryptable[], + key: SymmetricCryptoKey + ): Promise { + if (items == null || items.length < 1) { + return []; + } + + this.logService.info("Starting decryption using multithreading"); + + this.worker ??= new Worker( + new URL( + /* webpackChunkName: 'encrypt-worker' */ + "@bitwarden/common/services/cryptography/encrypt.worker.ts", + import.meta.url + ) + ); + + this.restartTimeout(); + + const request = { + id: Utils.newGuid(), + items: items, + key: key, + }; + + this.worker.postMessage(JSON.stringify(request)); + + return await firstValueFrom( + fromEvent(this.worker, "message").pipe( + filter((response: MessageEvent) => response.data?.id === request.id), + map((response) => JSON.parse(response.data.items)), + map((items) => + items.map((jsonItem: Jsonify) => { + const initializer = getClassInitializer(jsonItem.initializerKey); + return initializer(jsonItem); + }) + ), + takeUntil(this.clear$), + defaultIfEmpty([]) + ) + ); + } + + private clear() { + this.clear$.next(); + this.worker?.terminate(); + this.worker = null; + this.clearTimeout(); + } + + private restartTimeout() { + this.clearTimeout(); + this.timeout = setTimeout(() => this.clear(), workerTTL); + } + + private clearTimeout() { + if (this.timeout != null) { + clearTimeout(this.timeout); + } + } +} diff --git a/libs/common/src/services/export.service.ts b/libs/common/src/services/export.service.ts index 9d19ebc0149..4c2f51026af 100644 --- a/libs/common/src/services/export.service.ts +++ b/libs/common/src/services/export.service.ts @@ -248,12 +248,8 @@ export class ExportService implements ExportServiceAbstraction { this.apiService.getOrganizationExport(organizationId).then((exportData) => { const exportPromises: any = []; if (exportData != null) { - if ( - exportData.collections != null && - exportData.collections.data != null && - exportData.collections.data.length > 0 - ) { - exportData.collections.data.forEach((c) => { + if (exportData.collections != null && exportData.collections.length > 0) { + exportData.collections.forEach((c) => { const collection = new Collection(new CollectionData(c as CollectionDetailsResponse)); exportPromises.push( collection.decrypt().then((decCol) => { @@ -262,12 +258,8 @@ export class ExportService implements ExportServiceAbstraction { ); }); } - if ( - exportData.ciphers != null && - exportData.ciphers.data != null && - exportData.ciphers.data.length > 0 - ) { - exportData.ciphers.data + if (exportData.ciphers != null && exportData.ciphers.length > 0) { + exportData.ciphers .filter((c) => c.deletedDate === null) .forEach((c) => { const cipher = new Cipher(new CipherData(c)); diff --git a/libs/common/src/services/import.service.ts b/libs/common/src/services/import.service.ts index e719673bda7..202a899794b 100644 --- a/libs/common/src/services/import.service.ts +++ b/libs/common/src/services/import.service.ts @@ -12,64 +12,64 @@ import { ImportType, regularImportOptions, } from "../enums/importOptions"; -import { AscendoCsvImporter } from "../importers/ascendoCsvImporter"; -import { AvastCsvImporter } from "../importers/avastCsvImporter"; -import { AvastJsonImporter } from "../importers/avastJsonImporter"; -import { AviraCsvImporter } from "../importers/aviraCsvImporter"; -import { BitwardenCsvImporter } from "../importers/bitwardenCsvImporter"; -import { BitwardenJsonImporter } from "../importers/bitwardenJsonImporter"; -import { BitwardenPasswordProtectedImporter } from "../importers/bitwardenPasswordProtectedImporter"; -import { BlackBerryCsvImporter } from "../importers/blackBerryCsvImporter"; -import { BlurCsvImporter } from "../importers/blurCsvImporter"; -import { ButtercupCsvImporter } from "../importers/buttercupCsvImporter"; +import { AscendoCsvImporter } from "../importers/ascendo-csv-importer"; +import { AvastCsvImporter } from "../importers/avast-csv-importer"; +import { AvastJsonImporter } from "../importers/avast-json-importer"; +import { AviraCsvImporter } from "../importers/avira-csv-importer"; +import { BitwardenCsvImporter } from "../importers/bitwarden-csv-importer"; +import { BitwardenJsonImporter } from "../importers/bitwarden-json-importer"; +import { BitwardenPasswordProtectedImporter } from "../importers/bitwarden-password-protected-importer"; +import { BlackBerryCsvImporter } from "../importers/blackberry-csv-importer"; +import { BlurCsvImporter } from "../importers/blur-csv-importer"; +import { ButtercupCsvImporter } from "../importers/buttercup-csv-importer"; import { ChromeCsvImporter } from "../importers/chrome-csv-importer"; -import { ClipperzHtmlImporter } from "../importers/clipperzHtmlImporter"; -import { CodebookCsvImporter } from "../importers/codebookCsvImporter"; -import { DashlaneCsvImporter } from "../importers/dashlaneImporters/dashlaneCsvImporter"; -import { DashlaneJsonImporter } from "../importers/dashlaneImporters/dashlaneJsonImporter"; -import { EncryptrCsvImporter } from "../importers/encryptrCsvImporter"; -import { EnpassCsvImporter } from "../importers/enpassCsvImporter"; -import { EnpassJsonImporter } from "../importers/enpassJsonImporter"; -import { FirefoxCsvImporter } from "../importers/firefoxCsvImporter"; -import { FSecureFskImporter } from "../importers/fsecureFskImporter"; -import { GnomeJsonImporter } from "../importers/gnomeJsonImporter"; -import { ImportError } from "../importers/importError"; +import { ClipperzHtmlImporter } from "../importers/clipperz-html-importer"; +import { CodebookCsvImporter } from "../importers/codebook-csv-importer"; +import { DashlaneCsvImporter } from "../importers/dashlane/dashlane-csv-importer"; +import { DashlaneJsonImporter } from "../importers/dashlane/dashlane-json-importer"; +import { EncryptrCsvImporter } from "../importers/encryptr-csv-importer"; +import { EnpassCsvImporter } from "../importers/enpass-csv-importer"; +import { EnpassJsonImporter } from "../importers/enpass-json-importer"; +import { FirefoxCsvImporter } from "../importers/firefox-csv-importer"; +import { FSecureFskImporter } from "../importers/fsecure-fsk-importer"; +import { GnomeJsonImporter } from "../importers/gnome-json-importer"; +import { ImportError } from "../importers/import-error"; import { Importer } from "../importers/importer"; -import { KasperskyTxtImporter } from "../importers/kasperskyTxtImporter"; -import { KeePass2XmlImporter } from "../importers/keepass2XmlImporter"; -import { KeePassXCsvImporter } from "../importers/keepassxCsvImporter"; -import { KeeperCsvImporter } from "../importers/keeperImporters/keeperCsvImporter"; -import { LastPassCsvImporter } from "../importers/lastpassCsvImporter"; -import { LogMeOnceCsvImporter } from "../importers/logMeOnceCsvImporter"; -import { MeldiumCsvImporter } from "../importers/meldiumCsvImporter"; -import { MSecureCsvImporter } from "../importers/msecureCsvImporter"; -import { MykiCsvImporter } from "../importers/mykiCsvImporter"; -import { NordPassCsvImporter } from "../importers/nordpassCsvImporter"; -import { OnePassword1PifImporter } from "../importers/onepasswordImporters/onepassword1PifImporter"; -import { OnePassword1PuxImporter } from "../importers/onepasswordImporters/onepassword1PuxImporter"; -import { OnePasswordMacCsvImporter } from "../importers/onepasswordImporters/onepasswordMacCsvImporter"; -import { OnePasswordWinCsvImporter } from "../importers/onepasswordImporters/onepasswordWinCsvImporter"; -import { PadlockCsvImporter } from "../importers/padlockCsvImporter"; -import { PassKeepCsvImporter } from "../importers/passkeepCsvImporter"; -import { PassmanJsonImporter } from "../importers/passmanJsonImporter"; -import { PasspackCsvImporter } from "../importers/passpackCsvImporter"; -import { PasswordAgentCsvImporter } from "../importers/passwordAgentCsvImporter"; -import { PasswordBossJsonImporter } from "../importers/passwordBossJsonImporter"; -import { PasswordDragonXmlImporter } from "../importers/passwordDragonXmlImporter"; -import { PasswordSafeXmlImporter } from "../importers/passwordSafeXmlImporter"; -import { PasswordWalletTxtImporter } from "../importers/passwordWalletTxtImporter"; -import { RememBearCsvImporter } from "../importers/rememBearCsvImporter"; -import { RoboFormCsvImporter } from "../importers/roboformCsvImporter"; -import { SafariCsvImporter } from "../importers/safariCsvImporter"; -import { SafeInCloudXmlImporter } from "../importers/safeInCloudXmlImporter"; -import { SaferPassCsvImporter } from "../importers/saferpassCsvImport"; -import { SecureSafeCsvImporter } from "../importers/secureSafeCsvImporter"; -import { SplashIdCsvImporter } from "../importers/splashIdCsvImporter"; -import { StickyPasswordXmlImporter } from "../importers/stickyPasswordXmlImporter"; -import { TrueKeyCsvImporter } from "../importers/truekeyCsvImporter"; -import { UpmCsvImporter } from "../importers/upmCsvImporter"; -import { YotiCsvImporter } from "../importers/yotiCsvImporter"; -import { ZohoVaultCsvImporter } from "../importers/zohoVaultCsvImporter"; +import { KasperskyTxtImporter } from "../importers/kaspersky-txt-importer"; +import { KeePass2XmlImporter } from "../importers/keepass2-xml-importer"; +import { KeePassXCsvImporter } from "../importers/keepassx-csv-importer"; +import { KeeperCsvImporter } from "../importers/keeper/keeper-csv-importer"; +import { LastPassCsvImporter } from "../importers/lastpass-csv-importer"; +import { LogMeOnceCsvImporter } from "../importers/logmeonce-csv-importer"; +import { MeldiumCsvImporter } from "../importers/meldium-csv-importer"; +import { MSecureCsvImporter } from "../importers/msecure-csv-importer"; +import { MykiCsvImporter } from "../importers/myki-csv-importer"; +import { NordPassCsvImporter } from "../importers/nordpass-csv-importer"; +import { OnePassword1PifImporter } from "../importers/onepassword/onepassword-1pif-importer"; +import { OnePassword1PuxImporter } from "../importers/onepassword/onepassword-1pux-importer"; +import { OnePasswordMacCsvImporter } from "../importers/onepassword/onepassword-mac-csv-importer"; +import { OnePasswordWinCsvImporter } from "../importers/onepassword/onepassword-win-csv-importer"; +import { PadlockCsvImporter } from "../importers/padlock-csv-importer"; +import { PassKeepCsvImporter } from "../importers/passkeep-csv-importer"; +import { PassmanJsonImporter } from "../importers/passman-json-importer"; +import { PasspackCsvImporter } from "../importers/passpack-csv-importer"; +import { PasswordAgentCsvImporter } from "../importers/passwordagent-csv-importer"; +import { PasswordBossJsonImporter } from "../importers/passwordboss-json-importer"; +import { PasswordDragonXmlImporter } from "../importers/passworddragon-xml-importer"; +import { PasswordSafeXmlImporter } from "../importers/passwordsafe-xml-importer"; +import { PasswordWalletTxtImporter } from "../importers/passwordwallet-txt-importer"; +import { RememBearCsvImporter } from "../importers/remembear-csv-importer"; +import { RoboFormCsvImporter } from "../importers/roboform-csv-importer"; +import { SafariCsvImporter } from "../importers/safari-csv-importer"; +import { SafeInCloudXmlImporter } from "../importers/safeincloud-xml-importer"; +import { SaferPassCsvImporter } from "../importers/saferpass-csv-importer"; +import { SecureSafeCsvImporter } from "../importers/securesafe-csv-importer"; +import { SplashIdCsvImporter } from "../importers/splashid-csv-importer"; +import { StickyPasswordXmlImporter } from "../importers/stickypassword-xml-importer"; +import { TrueKeyCsvImporter } from "../importers/truekey-csv-importer"; +import { UpmCsvImporter } from "../importers/upm-csv-importer"; +import { YotiCsvImporter } from "../importers/yoti-csv-importer"; +import { ZohoVaultCsvImporter } from "../importers/zohovault-csv-importer"; import { Utils } from "../misc/utils"; import { ImportResult } from "../models/domain/import-result"; import { CipherRequest } from "../models/request/cipher.request"; diff --git a/libs/common/src/services/login.service.ts b/libs/common/src/services/login.service.ts new file mode 100644 index 00000000000..8a06f6b7a0d --- /dev/null +++ b/libs/common/src/services/login.service.ts @@ -0,0 +1,27 @@ +import { LoginService as LoginServiceAbstraction } from "../abstractions/login.service"; + +export class LoginService implements LoginServiceAbstraction { + private _email: string; + private _rememberEmail: boolean; + + getEmail() { + return this._email; + } + + getRememberEmail() { + return this._rememberEmail; + } + + setEmail(value: string) { + this._email = value; + } + + setRememberEmail(value: boolean) { + this._rememberEmail = value; + } + + clearValues() { + this._email = null; + this._rememberEmail = null; + } +} diff --git a/libs/common/src/services/organization/organization.service.ts b/libs/common/src/services/organization/organization.service.ts index 9d9a7d57346..101069adadc 100644 --- a/libs/common/src/services/organization/organization.service.ts +++ b/libs/common/src/services/organization/organization.service.ts @@ -101,6 +101,20 @@ export class OrganizationService implements OrganizationServiceAbstraction { return organizations.find((organization) => organization.id === id); } + /** + * @deprecated For the CLI only + * @param id id of the organization + */ + async getFromState(id: string): Promise { + const organizationsMap = await this.stateService.getOrganizations(); + const organization = organizationsMap[id]; + if (organization == null) { + return null; + } + + return new Organization(organization); + } + getByIdentifier(identifier: string): Organization { const organizations = this._organizations.getValue(); diff --git a/libs/common/src/services/passwordGeneration.service.ts b/libs/common/src/services/passwordGeneration.service.ts index 99964449d5f..ca2c07a6480 100644 --- a/libs/common/src/services/passwordGeneration.service.ts +++ b/libs/common/src/services/passwordGeneration.service.ts @@ -1,4 +1,3 @@ -import { firstValueFrom, map } from "rxjs"; import * as zxcvbn from "zxcvbn"; import { CryptoService } from "../abstractions/crypto.service"; @@ -11,7 +10,6 @@ import { EncString } from "../models/domain/enc-string"; import { GeneratedPasswordHistory } from "../models/domain/generated-password-history"; import { PasswordGeneratorOptions } from "../models/domain/password-generator-options"; import { PasswordGeneratorPolicyOptions } from "../models/domain/password-generator-policy-options"; -import { Policy } from "../models/domain/policy"; const DefaultOptions: PasswordGeneratorOptions = { length: 14, @@ -257,14 +255,7 @@ export class PasswordGenerationService implements PasswordGenerationServiceAbstr } async getPasswordGeneratorPolicyOptions(): Promise { - const policies: Policy[] = - this.policyService == null - ? null - : await firstValueFrom( - this.policyService.policies$.pipe( - map((p) => p.filter((policy) => policy.type === PolicyType.PasswordGenerator)) - ) - ); + const policies = await this.policyService?.getAll(PolicyType.PasswordGenerator); let enforcedOptions: PasswordGeneratorPolicyOptions = null; if (policies == null || policies.length === 0) { diff --git a/libs/common/src/services/policy/policy.service.ts b/libs/common/src/services/policy/policy.service.ts index 9f084eb4d6d..757c3b3e05f 100644 --- a/libs/common/src/services/policy/policy.service.ts +++ b/libs/common/src/services/policy/policy.service.ts @@ -124,10 +124,7 @@ export class PolicyService implements InternalPolicyServiceAbstraction { ); } - policyAppliesToActiveUser$( - policyType: PolicyType, - policyFilter: (policy: Policy) => boolean = (p) => true - ) { + policyAppliesToActiveUser$(policyType: PolicyType, policyFilter?: (policy: Policy) => boolean) { return this.policies$.pipe( concatMap(async (policies) => { const userId = await this.stateService.getUserId(); @@ -225,11 +222,13 @@ export class PolicyService implements InternalPolicyServiceAbstraction { policies[policy.id] = policy; await this.updateObservables(policies); + await this.stateService.setDecryptedPolicies(null); await this.stateService.setEncryptedPolicies(policies); } async replace(policies: { [id: string]: PolicyData }): Promise { await this.updateObservables(policies); + await this.stateService.setDecryptedPolicies(null); await this.stateService.setEncryptedPolicies(policies); } @@ -237,6 +236,7 @@ export class PolicyService implements InternalPolicyServiceAbstraction { if (userId == null || userId == (await this.stateService.getUserId())) { this._policies.next([]); } + await this.stateService.setDecryptedPolicies(null, { userId: userId }); await this.stateService.setEncryptedPolicies(null, { userId: userId }); } @@ -257,12 +257,12 @@ export class PolicyService implements InternalPolicyServiceAbstraction { private async checkPoliciesThatApplyToUser( policies: Policy[], policyType: PolicyType, - policyFilter: (policy: Policy) => boolean = (p) => true, + policyFilter?: (policy: Policy) => boolean, userId?: string ) { const organizations = await this.organizationService.getAll(userId); const filteredPolicies = policies.filter( - (p) => p.type === policyType && p.enabled && policyFilter(p) + (p) => p.type === policyType && p.enabled && (policyFilter == null || policyFilter(p)) ); const policySet = new Set(filteredPolicies.map((p) => p.organizationId)); diff --git a/libs/common/src/services/state.service.ts b/libs/common/src/services/state.service.ts index 11751b9ec8f..0c1c3b725ab 100644 --- a/libs/common/src/services/state.service.ts +++ b/libs/common/src/services/state.service.ts @@ -65,8 +65,10 @@ export class StateService< TAccount extends Account = Account > implements StateServiceAbstraction { - accounts = new BehaviorSubject<{ [userId: string]: TAccount }>({}); - private activeAccountSubject = new BehaviorSubject(null); + private accountsSubject = new BehaviorSubject<{ [userId: string]: TAccount }>({}); + accounts$ = this.accountsSubject.asObservable(); + + private activeAccountSubject = new BehaviorSubject(null); activeAccount$ = this.activeAccountSubject.asObservable(); private activeAccountUnlockedSubject = new BehaviorSubject(false); @@ -2530,11 +2532,11 @@ export class StateService< await this.pruneInMemoryAccounts(); await this.state().then((state) => { if (state.accounts == null || Object.keys(state.accounts).length < 1) { - this.accounts.next(null); + this.accountsSubject.next({}); return; } - this.accounts.next(state.accounts); + this.accountsSubject.next(state.accounts); }); } diff --git a/libs/common/src/services/system.service.ts b/libs/common/src/services/system.service.ts index 643f00831ce..ee2dbf33b5b 100644 --- a/libs/common/src/services/system.service.ts +++ b/libs/common/src/services/system.service.ts @@ -1,3 +1,5 @@ +import { firstValueFrom } from "rxjs"; + import { AuthService } from "../abstractions/auth.service"; import { MessagingService } from "../abstractions/messaging.service"; import { PlatformUtilsService } from "../abstractions/platformUtils.service"; @@ -19,7 +21,7 @@ export class SystemService implements SystemServiceAbstraction { ) {} async startProcessReload(authService: AuthService): Promise { - const accounts = this.stateService.accounts.getValue(); + const accounts = await firstValueFrom(this.stateService.accounts$); if (accounts != null) { const keys = Object.keys(accounts); if (keys.length > 0) { @@ -56,7 +58,7 @@ export class SystemService implements SystemServiceAbstraction { } private async executeProcessReload() { - const accounts = this.stateService.accounts.getValue(); + const accounts = await firstValueFrom(this.stateService.accounts$); const doRefresh = accounts == null || Object.keys(accounts).length == 0 || diff --git a/libs/common/src/services/vaultTimeout/vaultTimeout.service.ts b/libs/common/src/services/vaultTimeout/vaultTimeout.service.ts index f4a9e0330ca..79521d686a4 100644 --- a/libs/common/src/services/vaultTimeout/vaultTimeout.service.ts +++ b/libs/common/src/services/vaultTimeout/vaultTimeout.service.ts @@ -1,3 +1,5 @@ +import { firstValueFrom } from "rxjs"; + import { AuthService } from "../../abstractions/auth.service"; import { CipherService } from "../../abstractions/cipher.service"; import { CollectionService } from "../../abstractions/collection.service"; @@ -52,7 +54,8 @@ export class VaultTimeoutService implements VaultTimeoutServiceAbstraction { return; } - for (const userId in this.stateService.accounts.getValue()) { + const accounts = await firstValueFrom(this.stateService.accounts$); + for (const userId in accounts) { if (userId != null && (await this.shouldLock(userId))) { await this.executeTimeoutAction(userId); } diff --git a/libs/components/src/tabs/shared/tab-list-item.directive.ts b/libs/components/src/tabs/shared/tab-list-item.directive.ts index 1d4015b226b..390c84ee783 100644 --- a/libs/components/src/tabs/shared/tab-list-item.directive.ts +++ b/libs/components/src/tabs/shared/tab-list-item.directive.ts @@ -28,8 +28,23 @@ export class TabListItemDirective implements FocusableOption { @HostBinding("class") get classList(): string[] { return this.baseClassList - .concat(this.active ? this.activeClassList : ["!tw-text-main"]) - .concat(this.disabled ? this.disabledClassList : []); + .concat(this.active ? this.activeClassList : []) + .concat(this.disabled ? this.disabledClassList : []) + .concat(this.textColorClassList); + } + + /** + * Classes used for styling tab item text color. + * Separate text color class list required to override bootstrap classes in Web. + */ + get textColorClassList(): string[] { + if (this.disabled) { + return ["!tw-text-muted", "hover:!tw-text-muted"]; + } + if (this.active) { + return ["!tw-text-primary-500", "hover:!tw-text-primary-700"]; + } + return ["!tw-text-main", "hover:!tw-text-main"]; } get baseClassList(): string[] { @@ -47,9 +62,7 @@ export class TabListItemDirective implements FocusableOption { "tw-border-transparent", "tw-border-solid", "tw-bg-transparent", - "tw-text-main", "hover:tw-underline", - "hover:tw-text-main", "focus-visible:tw-z-10", "focus-visible:tw-outline-none", "focus-visible:tw-ring-2", @@ -58,13 +71,7 @@ export class TabListItemDirective implements FocusableOption { } get disabledClassList(): string[] { - return [ - "!tw-bg-secondary-100", - "!tw-text-muted", - "hover:!tw-text-muted", - "!tw-no-underline", - "tw-cursor-not-allowed", - ]; + return ["!tw-bg-secondary-100", "!tw-no-underline", "tw-cursor-not-allowed"]; } get activeClassList(): string[] { @@ -75,9 +82,7 @@ export class TabListItemDirective implements FocusableOption { "tw-border-b", "tw-border-b-background", "tw-bg-background", - "!tw-text-primary-500", "hover:tw-border-t-primary-700", - "hover:!tw-text-primary-700", "focus-visible:tw-border-t-primary-700", "focus-visible:!tw-text-primary-700", ]; diff --git a/libs/components/src/tabs/tab-nav-bar/tab-link.component.html b/libs/components/src/tabs/tab-nav-bar/tab-link.component.html index 3b0ad6b22c5..012e32ecafd 100644 --- a/libs/components/src/tabs/tab-nav-bar/tab-link.component.html +++ b/libs/components/src/tabs/tab-nav-bar/tab-link.component.html @@ -2,6 +2,7 @@ bitTabListItem [routerLink]="disabled ? null : route" routerLinkActive + [routerLinkActiveOptions]="routerLinkMatchOptions" #rla="routerLinkActive" [active]="rla.isActive" [disabled]="disabled" diff --git a/libs/components/src/tabs/tab-nav-bar/tab-link.component.ts b/libs/components/src/tabs/tab-nav-bar/tab-link.component.ts index fc067fb69f8..4b9da818242 100644 --- a/libs/components/src/tabs/tab-nav-bar/tab-link.component.ts +++ b/libs/components/src/tabs/tab-nav-bar/tab-link.component.ts @@ -1,6 +1,6 @@ import { FocusableOption } from "@angular/cdk/a11y"; import { AfterViewInit, Component, HostListener, Input, OnDestroy, ViewChild } from "@angular/core"; -import { RouterLinkActive } from "@angular/router"; +import { IsActiveMatchOptions, RouterLinkActive } from "@angular/router"; import { Subject, takeUntil } from "rxjs"; import { TabListItemDirective } from "../shared/tab-list-item.directive"; @@ -17,6 +17,13 @@ export class TabLinkComponent implements FocusableOption, AfterViewInit, OnDestr @ViewChild(TabListItemDirective) tabItem: TabListItemDirective; @ViewChild("rla") routerLinkActive: RouterLinkActive; + readonly routerLinkMatchOptions: IsActiveMatchOptions = { + queryParams: "ignored", + matrixParams: "ignored", + paths: "subset", + fragment: "ignored", + }; + @Input() route: string; @Input() disabled = false; diff --git a/libs/electron/src/services/electronCrypto.service.ts b/libs/electron/src/services/electronCrypto.service.ts index 0fe814b1385..bb1ad996d69 100644 --- a/libs/electron/src/services/electronCrypto.service.ts +++ b/libs/electron/src/services/electronCrypto.service.ts @@ -1,5 +1,5 @@ -import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service"; +import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; @@ -10,7 +10,7 @@ import { CryptoService } from "@bitwarden/common/services/crypto.service"; export class ElectronCryptoService extends CryptoService { constructor( cryptoFunctionService: CryptoFunctionService, - encryptService: AbstractEncryptService, + encryptService: EncryptService, platformUtilService: PlatformUtilsService, logService: LogService, stateService: StateService diff --git a/libs/shared/tsconfig.json b/libs/shared/tsconfig.json index 3a70f6b92cf..a6cbd30e0d5 100644 --- a/libs/shared/tsconfig.json +++ b/libs/shared/tsconfig.json @@ -4,7 +4,7 @@ "moduleResolution": "node", "noImplicitAny": true, "target": "ES6", - "module": "commonjs", + "module": "es2020", "lib": ["es5", "es6", "es7", "dom"], "sourceMap": true, "allowSyntheticDefaultImports": true, diff --git a/package-lock.json b/package-lock.json index 1c3ec8f5d13..fb69cf82452 100644 --- a/package-lock.json +++ b/package-lock.json @@ -164,6 +164,7 @@ "typescript": "4.6.4", "url": "^0.11.0", "util": "^0.12.4", + "wait-on": "^6.0.1", "webpack": "^5.64.4", "webpack-cli": "^4.9.1", "webpack-dev-server": "^4.9.3", @@ -4065,6 +4066,21 @@ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", @@ -5395,6 +5411,27 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, "node_modules/@sinclair/typebox": { "version": "0.24.20", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.20.tgz", @@ -15181,6 +15218,15 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, "node_modules/babel-jest": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", @@ -29410,6 +29456,19 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/joi": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, "node_modules/jquery": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", @@ -41869,6 +41928,25 @@ "node": ">=10" } }, + "node_modules/wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "dev": true, + "dependencies": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -45838,6 +45916,21 @@ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, "@humanwhocodes/config-array": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", @@ -46891,6 +46984,27 @@ "jsonc-parser": "3.1.0" } }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, "@sinclair/typebox": { "version": "0.24.20", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.20.tgz", @@ -54564,6 +54678,15 @@ "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", "dev": true }, + "axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.7" + } + }, "babel-jest": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", @@ -65603,6 +65726,19 @@ } } }, + "joi": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, "jquery": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", @@ -75257,6 +75393,19 @@ "xml-name-validator": "^3.0.0" } }, + "wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "dev": true, + "requires": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + } + }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", diff --git a/package.json b/package.json index c814877516d..50c1b6e6136 100644 --- a/package.json +++ b/package.json @@ -129,6 +129,7 @@ "typescript": "4.6.4", "url": "^0.11.0", "util": "^0.12.4", + "wait-on": "^6.0.1", "webpack": "^5.64.4", "webpack-cli": "^4.9.1", "webpack-dev-server": "^4.9.3", diff --git a/tsconfig.json b/tsconfig.json index f8b94f2a1a3..6761a4f5c20 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,7 @@ "moduleResolution": "node", "noImplicitAny": true, "target": "ES6", - "module": "commonjs", + "module": "ES2020", "lib": ["es5", "es6", "es7", "dom"], "sourceMap": true, "allowSyntheticDefaultImports": true,