diff --git a/.checkmarx/config.yml b/.checkmarx/config.yml new file mode 100644 index 0000000000..e45e83fcac --- /dev/null +++ b/.checkmarx/config.yml @@ -0,0 +1,12 @@ +version: 1 + +# Checkmarx configuration file +# +# https://checkmarx.com/resource/documents/en/34965-68549-configuring-projects-using-config-as-code-files.html +checkmarx: + scan: + configs: + sast: + presetName: "BW ASA Premium" + # Exclude spec files, and test specific files + filter: "!*.spec.ts,!**/spec/**,!apps/desktop/native-messaging-test-runner/**" diff --git a/.codescene/code-health-rules.json b/.codescene/code-health-rules.json new file mode 100644 index 0000000000..bafdb1188e --- /dev/null +++ b/.codescene/code-health-rules.json @@ -0,0 +1,14 @@ +{ + "usage": "Documentation: https://codescene.io/docs/guides/technical/code-health.html. Template: https://codescene.io/projects/26215/config/codehealth/export/code-health-rules.json", + "rule_sets": [ + { + "matching_content_path": "**/*.spec.ts", + "rules": [ + { + "name": "Code Duplication", + "weight": 0.0 + } + ] + } + ] +} diff --git a/.eslintignore b/.eslintignore index e1fbda3813..68d426174a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -12,14 +12,12 @@ storybook-static apps/browser/config/config.js apps/browser/src/auth/scripts/duo.js -apps/browser/src/autofill/content/autofill.js apps/desktop/desktop_native apps/desktop/src/auth/scripts/duo.js apps/web/config.js apps/web/scripts/*.js -apps/web/src/theme.js apps/web/tailwind.config.js apps/cli/config/config.js diff --git a/.eslintrc.json b/.eslintrc.json index afa134a65e..671e7b2fab 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -20,7 +20,8 @@ "plugin:import/recommended", "plugin:import/typescript", "prettier", - "plugin:rxjs/recommended" + "plugin:rxjs/recommended", + "plugin:storybook/recommended" ], "settings": { "import/parsers": { @@ -33,20 +34,15 @@ } }, "rules": { - "@typescript-eslint/no-explicit-any": "off", // TODO: This should be re-enabled - "@typescript-eslint/no-unused-vars": ["error", { "args": "none" }], "@typescript-eslint/explicit-member-accessibility": [ "error", - { - "accessibility": "no-public" - } - ], - "@typescript-eslint/no-this-alias": [ - "error", - { - "allowedNames": ["self"] - } + { "accessibility": "no-public" } ], + "@typescript-eslint/no-explicit-any": "off", // TODO: This should be re-enabled + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/no-misused-promises": ["error", { "checksVoidReturn": false }], + "@typescript-eslint/no-this-alias": ["error", { "allowedNames": ["self"] }], + "@typescript-eslint/no-unused-vars": ["error", { "args": "none" }], "no-console": "error", "import/no-unresolved": "off", // TODO: Look into turning off once each package is an actual package. "import/order": [ @@ -71,7 +67,7 @@ "pathGroupsExcludedImportTypes": ["builtin"] } ], - "rxjs-angular/prefer-takeuntil": "error", + "rxjs-angular/prefer-takeuntil": ["error", { "alias": ["takeUntilDestroyed"] }], "rxjs/no-exposed-subjects": ["error", { "allowProtected": true }], "no-restricted-syntax": [ "error", @@ -103,16 +99,26 @@ // Import/export "./libs/importer/**/*", - "./libs/exporter/**/*" + "./libs/tools/export/vault-export/vault-export-core/**/*" ] + }, + { + // avoid import of unexported state objects + "target": [ + "!(libs)/**/*", + "libs/!(common)/**/*", + "libs/common/!(src)/**/*", + "libs/common/src/!(platform)/**/*", + "libs/common/src/platform/!(state)/**/*" + ], + "from": ["./libs/common/src/platform/state/**/*"], + // allow module index import + "except": ["**/state/index.ts"] } ] } ], - "no-restricted-imports": [ - "error", - { "patterns": ["src/**/*"], "paths": ["@fluffy-spoon/substitute"] } - ] + "no-restricted-imports": ["error", { "patterns": ["src/**/*"] }] } }, { @@ -134,6 +140,15 @@ "tailwindcss/no-contradicting-classname": "error" } }, + { + "files": ["libs/admin-console/src/**/*.ts"], + "rules": { + "no-restricted-imports": [ + "error", + { "patterns": ["@bitwarden/admin-console/*", "src/**/*"] } + ] + } + }, { "files": ["libs/angular/src/**/*.ts"], "rules": { @@ -146,6 +161,12 @@ "no-restricted-imports": ["error", { "patterns": ["@bitwarden/auth/*", "src/**/*"] }] } }, + { + "files": ["libs/billing/src/**/*.ts"], + "rules": { + "no-restricted-imports": ["error", { "patterns": ["@bitwarden/billing/*", "src/**/*"] }] + } + }, { "files": ["libs/common/src/**/*.ts"], "rules": { @@ -155,13 +176,28 @@ { "files": ["libs/components/src/**/*.ts"], "rules": { - "no-restricted-imports": ["error", { "patterns": ["@bitwarden/components/*", "src/**/*"] }] + "no-restricted-imports": [ + "error", + { "patterns": ["@bitwarden/components/*", "src/**/*", "@bitwarden/angular/*"] } + ] } }, { - "files": ["libs/exporter/src/**/*.ts"], + "files": ["libs/tools/export/vault-export/vault-export-core/src/**/*.ts"], "rules": { - "no-restricted-imports": ["error", { "patterns": ["@bitwarden/exporter/*", "src/**/*"] }] + "no-restricted-imports": [ + "error", + { "patterns": ["@bitwarden/vault-export-core/*", "src/**/*"] } + ] + } + }, + { + "files": ["libs/tools/export/vault-export/vault-export-ui/src/**/*.ts"], + "rules": { + "no-restricted-imports": [ + "error", + { "patterns": ["@bitwarden/vault-export-ui/*", "src/**/*"] } + ] } }, { @@ -175,6 +211,41 @@ "rules": { "no-restricted-imports": ["error", { "patterns": ["@bitwarden/node/*", "src/**/*"] }] } + }, + { + "files": ["libs/platform/src/**/*.ts"], + "rules": { + "no-restricted-imports": ["error", { "patterns": ["@bitwarden/platform/*", "src/**/*"] }] + } + }, + { + "files": ["libs/vault/src/**/*.ts"], + "rules": { + "no-restricted-imports": ["error", { "patterns": ["@bitwarden/vault/*", "src/**/*"] }] + } + }, + { + "files": ["apps/browser/src/**/*.ts", "libs/**/*.ts"], + "excludedFiles": [ + "apps/browser/src/autofill/{content,notification}/**/*.ts", + "apps/browser/src/**/background/**/*.ts", // It's okay to have long lived listeners in the background + "apps/browser/src/platform/background.ts" + ], + "rules": { + "no-restricted-syntax": [ + "error", + { + "message": "Using addListener in the browser popup produces a memory leak in Safari, use `BrowserApi.addListener` instead", + // This selector covers events like chrome.storage.onChange & chrome.runtime.onMessage + "selector": "CallExpression > [object.object.object.name='chrome'][property.name='addListener']" + }, + { + "message": "Using addListener in the browser popup produces a memory leak in Safari, use `BrowserApi.addListener` instead", + // This selector covers events like chrome.storage.local.onChange + "selector": "CallExpression > [object.object.object.object.name='chrome'][property.name='addListener']" + } + ] + } } ] } diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 9dd7b5c2e6..c0d1e0eb8a 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -22,3 +22,6 @@ 193434461dbd9c48fe5dcbad95693470aec422ac # Jslib: Monorepository https://github.com/bitwarden/clients/pull/2824/commits/d7492e3cf320410e74ebd0e0675ab994e64bd01a d7492e3cf320410e74ebd0e0675ab994e64bd01a + +# All Clients: Apply Prettier https://github.com/bitwarden/clients/pull/7014 +28de9439beb87133c8683434df952a0c0be94100 diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 1aed9c1be8..e9c1f229a5 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,11 +1,9 @@ -# Please sort lines alphabetically, this will ensure we don't accidentally add duplicates. +# Please sort into logical groups with comment headers. Sort groups in order of specificity. +# For example, default owners should always be the first group. +# Sort lines alphabetically within these groups to avoid accidentally adding duplicates. # # https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners -# The following owners will be the default owners for everything in the repo. -# Unless a later match takes precedence -* @bitwarden/team-leads-eng - ## Secrets Manager team files ## bitwarden_license/bit-web/src/app/secrets-manager @bitwarden/team-secrets-manager-dev @@ -29,8 +27,15 @@ apps/web/src/app/tools @bitwarden/team-tools-dev libs/angular/src/tools @bitwarden/team-tools-dev libs/common/src/models/export @bitwarden/team-tools-dev libs/common/src/tools @bitwarden/team-tools-dev -libs/exporter @bitwarden/team-tools-dev libs/importer @bitwarden/team-tools-dev +libs/tools @bitwarden/team-tools-dev + +## Localization/Crowdin (Tools team) +apps/browser/src/_locales @bitwarden/team-tools-dev +apps/browser/store/locales @bitwarden/team-tools-dev +apps/cli/src/locales @bitwarden/team-tools-dev +apps/desktop/src/locales @bitwarden/team-tools-dev +apps/web/src/locales @bitwarden/team-tools-dev ## Vault team files ## apps/browser/src/vault @bitwarden/team-vault-dev @@ -39,6 +44,7 @@ apps/desktop/src/vault @bitwarden/team-vault-dev apps/web/src/app/vault @bitwarden/team-vault-dev libs/angular/src/vault @bitwarden/team-vault-dev libs/common/src/vault @bitwarden/team-vault-dev +libs/vault @bitwarden/team-vault-dev ## Admin Console team files ## apps/browser/src/admin-console @bitwarden/team-admin-console-dev @@ -48,11 +54,14 @@ apps/web/src/app/admin-console @bitwarden/team-admin-console-dev bitwarden_license/bit-web/src/app/admin-console @bitwarden/team-admin-console-dev libs/angular/src/admin-console @bitwarden/team-admin-console-dev libs/common/src/admin-console @bitwarden/team-admin-console-dev +libs/admin-console @bitwarden/team-admin-console-dev ## Billing team files ## apps/web/src/app/billing @bitwarden/team-billing-dev libs/angular/src/billing @bitwarden/team-billing-dev libs/common/src/billing @bitwarden/team-billing-dev +libs/billing @bitwarden/team-billing-dev +bitwarden_license/bit-web/src/app/billing @bitwarden/team-billing-dev ## Platform team files ## apps/browser/src/platform @bitwarden/team-platform-dev @@ -61,6 +70,9 @@ apps/desktop/src/platform @bitwarden/team-platform-dev apps/web/src/app/platform @bitwarden/team-platform-dev libs/angular/src/platform @bitwarden/team-platform-dev libs/common/src/platform @bitwarden/team-platform-dev +libs/common/spec @bitwarden/team-platform-dev +libs/common/src/state-migrations @bitwarden/team-platform-dev +libs/platform @bitwarden/team-platform-dev # Node-specifc platform files libs/node @bitwarden/team-platform-dev # Web utils used across app and connectors @@ -72,34 +84,29 @@ apps/web/src/translation-constants.ts @bitwarden/team-platform-dev ## Autofill team files ## apps/browser/src/autofill @bitwarden/team-autofill-dev +apps/desktop/src/autofill @bitwarden/team-autofill-dev +libs/common/src/autofill @bitwarden/team-autofill-dev ## Component Library ## -libs/components @bitwarden/team-platform-dev +.storybook @bitwarden/team-component-library +libs/components @bitwarden/team-component-library +apps/web/src/app/layouts/header ## Desktop native module ## apps/desktop/desktop_native @bitwarden/team-platform-dev -## Multiple file owners ## -apps/browser/package.json -apps/browser/src/manifest.json -apps/browser/src/manifest.v3.json +## DevOps team files ## +/.github/workflows @bitwarden/dept-devops -apps/cli/package.json +# DevOps for Docker changes. +**/Dockerfile @bitwarden/dept-devops +**/*.Dockerfile @bitwarden/dept-devops +**/.dockerignore @bitwarden/dept-devops +**/entrypoint.sh @bitwarden/dept-devops -apps/desktop/package.json -apps/desktop/src/package-lock.json -apps/desktop/src/package.json - -/apps/web/config -/apps/web/package.json - -package-lock.json - -## Locales ## +## Locales ## apps/browser/src/_locales/en/messages.json +apps/browser/store/locales/en apps/cli/src/locales/en/messages.json apps/desktop/src/locales/en/messages.json apps/web/src/locales/en/messages.json - -## DevOps team files ## -/.github/workflows @bitwarden/dept-devops diff --git a/.github/ISSUE_TEMPLATE/desktop.yml b/.github/ISSUE_TEMPLATE/desktop.yml index 8da7b28588..6fd6f1d1c2 100644 --- a/.github/ISSUE_TEMPLATE/desktop.yml +++ b/.github/ISSUE_TEMPLATE/desktop.yml @@ -90,4 +90,4 @@ body: description: | Issue tracking information options: - - label: I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress. + - label: I understand that work is tracked outside of GitHub. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress. diff --git a/.github/codecov.yml b/.github/codecov.yml new file mode 100644 index 0000000000..b477440720 --- /dev/null +++ b/.github/codecov.yml @@ -0,0 +1,2 @@ +ignore: + - "**/*.spec.ts" # Tests diff --git a/.github/renovate.json b/.github/renovate.json index 81dea67731..95fd2dc11e 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -1,55 +1,266 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "config:base", - ":combinePatchMinorReleases", - ":dependencyDashboard", - ":maintainLockFilesWeekly", - ":pinAllExceptPeerDependencies", - ":rebaseStalePrs", - "schedule:weekends", - ":separateMajorReleases" - ], - "prConcurrentLimit": 3, + "extends": ["github>bitwarden/renovate-config"], "enabledManagers": ["cargo", "github-actions", "npm"], "packageRules": [ - { - "groupName": "cargo minor", - "matchManagers": ["cargo"], - "matchUpdateTypes": ["minor", "patch"] - }, { "groupName": "gh minor", "matchManagers": ["github-actions"], "matchUpdateTypes": ["minor", "patch"] }, { - "groupName": "npm minor", - "matchManagers": ["npm"], - "matchUpdateTypes": ["minor", "patch"] + "matchManagers": ["github-actions"], + "commitMessagePrefix": "[deps] DevOps:" }, { - "matchPackageNames": ["typescript"], + "matchManagers": ["cargo"], + "commitMessagePrefix": "[deps] Platform:" + }, + { + "groupName": "napi", + "matchPackageNames": ["napi", "napi-build", "napi-derive"] + }, + { + "matchPackageNames": ["typescript", "zone.js"], "matchUpdateTypes": ["major", "minor"], + "description": "Determined by Angular", "enabled": false }, { - "matchPackageNames": ["typescript"], + "matchPackageNames": ["typescript", "zone.js"], "matchUpdateTypes": "patch" }, { "groupName": "jest", "matchPackageNames": ["@types/jest", "jest", "ts-jest", "jest-preset-angular"], "matchUpdateTypes": "major" + }, + { + "matchPackageNames": [ + "@ngtools/webpack", + "base64-loader", + "buffer", + "bufferutil", + "copy-webpack-plugin", + "core-js", + "css-loader", + "html-loader", + "html-webpack-injector", + "html-webpack-plugin", + "mini-css-extract-plugin", + "ngx-infinite-scroll", + "postcss", + "postcss-loader", + "process", + "sass", + "sass-loader", + "style-loader", + "ts-loader", + "tsconfig-paths-webpack-plugin", + "url", + "util", + "webpack", + "webpack-cli", + "webpack-dev-server", + "webpack-node-externals" + ], + "description": "Admin Console owned dependencies", + "commitMessagePrefix": "[deps] AC:", + "reviewers": ["team:team-admin-console-dev"] + }, + { + "matchPackageNames": [ + "@types/duo_web_sdk", + "@types/node-ipc", + "duo_web_sdk", + "node-ipc", + "qrious", + "regedit" + ], + "description": "Auth owned dependencies", + "commitMessagePrefix": "[deps] Auth:", + "reviewers": ["team:team-auth-dev"] + }, + { + "matchPackageNames": [ + "@webcomponents/custom-elements", + "concurrently", + "cross-env", + "del", + "gulp", + "gulp-filter", + "gulp-if", + "gulp-json-editor", + "gulp-replace", + "gulp-zip", + "nord", + "patch-package", + "prettier", + "prettier-plugin-tailwindcss", + "rimraf", + "tabbable", + "tldts", + "wait-on" + ], + "description": "Autofill owned dependencies", + "commitMessagePrefix": "[deps] Autofill:", + "reviewers": ["team:team-autofill-dev"] + }, + { + "matchPackageNames": ["braintree-web-drop-in"], + "description": "Billing owned dependencies", + "commitMessagePrefix": "[deps] Billing:", + "reviewers": ["team:team-billing-dev"] + }, + { + "matchPackageNames": [ + "@angular-devkit/build-angular", + "@angular/animations", + "@angular/cdk", + "@angular/cli", + "@angular/common", + "@angular/compiler", + "@angular/compiler-cli", + "@angular/core", + "@angular/forms", + "@angular/platform", + "@angular/compiler", + "@angular/router", + "@types/argon2-browser", + "@types/chrome", + "@types/firefox-webext-browser", + "@types/jquery", + "@types/node", + "@types/node-forge", + "argon2", + "argon2-browser", + "big-integer", + "bootstrap", + "jquery", + "node-forge", + "popper.js", + "rxjs", + "type-fest", + "typescript", + "zone.js" + ], + "description": "Platform owned dependencies", + "commitMessagePrefix": "[deps] Platform:", + "reviewers": ["team:team-platform-dev"] + }, + { + "matchPackageNames": [ + "@compodoc/compodoc", + "@ng-select/ng-select", + "@storybook/addon-a11y", + "@storybook/addon-actions", + "@storybook/addon-designs", + "@storybook/addon-essentials", + "@storybook/addon-links", + "@storybook/angular", + "@types/react", + "autoprefixer", + "chromatic", + "ngx-toastr", + "react", + "react-dom", + "remark-gfm", + "storybook", + "tailwindcss" + ], + "description": "Component library owned dependencies", + "commitMessagePrefix": "[deps] Platform (CL):", + "reviewers": ["team:team-component-library"] + }, + { + "matchPackageNames": [ + "@angular-eslint/eslint-plugin", + "@angular-eslint/eslint-plugin-template", + "@angular-eslint/template-parser", + "@types/jest", + "@typescript-eslint/eslint-plugin", + "@typescript-eslint/parser", + "eslint", + "eslint-config-prettier", + "eslint-import-resolver-typescript", + "eslint-plugin-import", + "eslint-plugin-rxjs", + "eslint-plugin-rxjs-angular", + "eslint-plugin-storybook", + "eslint-plugin-tailwindcss", + "husky", + "jest-junit", + "jest-mock-extended", + "jest-preset-angular", + "lint-staged", + "ts-jest" + ], + "description": "Secrets Manager owned dependencies", + "commitMessagePrefix": "[deps] SM:", + "reviewers": ["team:team-secrets-manager-dev"] + }, + { + "matchPackageNames": [ + "@electron/notarize", + "@electron/rebuild", + "@microsoft/signalr-protocol-msgpack", + "@microsoft/signalr", + "@types/jsdom", + "@types/papaparse", + "@types/zxcvbn", + "electron-builder", + "electron-log", + "electron-reload", + "electron-store", + "electron-updater", + "electron", + "jsdom", + "jszip", + "oidc-client-ts", + "papaparse", + "utf-8-validate", + "zxcvbn" + ], + "description": "Tools owned dependencies", + "commitMessagePrefix": "[deps] Tools:", + "reviewers": ["team:team-tools-dev"] + }, + { + "matchPackageNames": [ + "@koa/multer", + "@koa/router", + "@types/inquirer", + "@types/koa", + "@types/koa__multer", + "@types/koa__router", + "@types/koa-bodyparser", + "@types/koa-json", + "@types/lowdb", + "@types/lunr", + "@types/node-fetch", + "@types/proper-lockfile", + "@types/retry", + "chalk", + "commander", + "form-data", + "https-proxy-agent", + "inquirer", + "koa", + "koa-bodyparser", + "koa-json", + "lowdb", + "lunr", + "multer", + "node-fetch", + "open", + "pkg", + "proper-lockfile", + "qrcode-parser" + ], + "description": "Vault owned dependencies", + "commitMessagePrefix": "[deps] Vault:", + "reviewers": ["team:team-vault-dev"] } ], - "ignoreDeps": [ - "@types/koa-bodyparser", - "bootstrap", - "electron-builder", - "electron", - "node-ipc", - "regedit", - "zone.js" - ] + "ignoreDeps": ["@types/koa-bodyparser", "bootstrap", "node-ipc", "node", "npm", "regedit"] } diff --git a/.github/secrets/appstore-app-cert.p12.gpg b/.github/secrets/appstore-app-cert.p12.gpg deleted file mode 100644 index 284add80d5..0000000000 Binary files a/.github/secrets/appstore-app-cert.p12.gpg and /dev/null differ diff --git a/.github/secrets/appstore-installer-cert.p12.gpg b/.github/secrets/appstore-installer-cert.p12.gpg deleted file mode 100644 index cd1f58eca1..0000000000 Binary files a/.github/secrets/appstore-installer-cert.p12.gpg and /dev/null differ diff --git a/.github/secrets/bitwarden-desktop-key.p12.gpg b/.github/secrets/bitwarden-desktop-key.p12.gpg deleted file mode 100644 index 76ee0cbb5e..0000000000 Binary files a/.github/secrets/bitwarden-desktop-key.p12.gpg and /dev/null differ diff --git a/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg b/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg deleted file mode 100644 index d55f405517..0000000000 Binary files a/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg and /dev/null differ diff --git a/.github/secrets/devid-app-cert.p12.gpg b/.github/secrets/devid-app-cert.p12.gpg deleted file mode 100644 index 8e2e2146e2..0000000000 Binary files a/.github/secrets/devid-app-cert.p12.gpg and /dev/null differ diff --git a/.github/secrets/devid-installer-cert.p12.gpg b/.github/secrets/devid-installer-cert.p12.gpg deleted file mode 100644 index f379fc214f..0000000000 Binary files a/.github/secrets/devid-installer-cert.p12.gpg and /dev/null differ diff --git a/.github/secrets/macdev-cert.p12.gpg b/.github/secrets/macdev-cert.p12.gpg deleted file mode 100644 index f89cfb82a1..0000000000 Binary files a/.github/secrets/macdev-cert.p12.gpg and /dev/null differ diff --git a/.github/whitelist-capital-letters.txt b/.github/whitelist-capital-letters.txt index 17047f4333..99ce80376d 100644 --- a/.github/whitelist-capital-letters.txt +++ b/.github/whitelist-capital-letters.txt @@ -2,10 +2,7 @@ ./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 -./libs/common/src/abstractions/vaultTimeout -./libs/common/src/services/vaultTimeout ./bitwarden_license/README.md ./libs/angular/src/directives/cipherListVirtualScroll.directive.ts ./libs/angular/src/scss/webfonts/Open_Sans-italic-700.woff @@ -18,20 +15,13 @@ ./libs/angular/src/scss/webfonts/Open_Sans-normal-600.woff ./libs/angular/src/scss/webfonts/Open_Sans-normal-800.woff ./libs/angular/src/scss/webfonts/Open_Sans-normal-400.woff -./libs/angular/src/validators/inputsFieldMatch.validator.ts -./libs/angular/src/validators/notAllowedValueAsync.validator.ts -./libs/angular/src/services/theming/themeBuilder.ts -./libs/common/src/misc/nodeUtils.ts -./libs/common/src/misc/linkedFieldOption.decorator.ts -./libs/common/src/misc/serviceUtils.ts -./libs/common/src/misc/serviceUtils.spec.ts -./libs/common/src/abstractions/vaultTimeout/vaultTimeoutSettings.service.ts -./libs/common/src/abstractions/vaultTimeout/vaultTimeout.service.ts -./libs/common/src/abstractions/anonymousHub.service.ts -./libs/common/src/services/vaultTimeout/vaultTimeoutSettings.service.ts -./libs/common/src/services/vaultTimeout/vaultTimeout.service.ts -./libs/common/src/services/anonymousHub.service.ts +./libs/admin-console/README.md ./libs/auth/README.md +./libs/billing/README.md +./libs/platform/README.md +./libs/tools/README.md +./libs/tools/export/vault-export/README.md +./libs/vault/README.md ./README.md ./LICENSE_BITWARDEN.txt ./CONTRIBUTING.md @@ -54,15 +44,6 @@ ./apps/browser/README.md ./apps/browser/store/windows/AppxManifest.xml ./apps/browser/src/background/nativeMessaging.background.ts -./apps/browser/src/background/models/addLoginRuntimeMessage.ts -./apps/browser/src/background/models/addChangePasswordQueueMessage.ts -./apps/browser/src/background/models/addLoginQueueMessage.ts -./apps/browser/src/background/models/changePasswordRuntimeMessage.ts -./apps/browser/src/background/models/notificationQueueMessage.ts -./apps/browser/src/background/models/notificationQueueMessageType.ts -./apps/browser/src/background/models/lockedVaultPendingNotificationsItem.ts -./apps/browser/src/background/webRequest.background.ts -./apps/browser/src/popup/services/debounceNavigationService.ts ./apps/browser/src/models/browserComponentState.ts ./apps/browser/src/models/browserSendComponentState.ts ./apps/browser/src/models/browserGroupingsComponentState.ts @@ -78,5 +59,4 @@ ./apps/browser/src/safari/safari/SafariWebExtensionHandler.swift ./apps/browser/src/safari/safari/Info.plist ./apps/browser/src/safari/desktop.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -./apps/browser/src/services/vaultTimeout/vaultTimeout.service.ts ./SECURITY.md diff --git a/.github/workflows/auto-branch-updater.yml b/.github/workflows/auto-branch-updater.yml index fee2ad958f..90376c9956 100644 --- a/.github/workflows/auto-branch-updater.yml +++ b/.github/workflows/auto-branch-updater.yml @@ -4,7 +4,7 @@ name: Auto Update Branch on: push: branches: - - 'master' + - 'main' - 'rc' paths: - 'apps/web/**' @@ -29,7 +29,7 @@ jobs: run: echo "branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: ref: 'eu-web-${{ steps.setup.outputs.branch }}' fetch-depth: 0 diff --git a/.github/workflows/automatic-issue-responses.yml b/.github/workflows/automatic-issue-responses.yml index 90d561c922..289b8bd662 100644 --- a/.github/workflows/automatic-issue-responses.yml +++ b/.github/workflows/automatic-issue-responses.yml @@ -7,7 +7,7 @@ on: jobs: close-issue: name: 'Close issue with automatic response' - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 permissions: issues: write steps: diff --git a/.github/workflows/automatic-pull-request-responses.yml b/.github/workflows/automatic-pull-request-responses.yml index 261cd5c255..16e1a46c05 100644 --- a/.github/workflows/automatic-pull-request-responses.yml +++ b/.github/workflows/automatic-pull-request-responses.yml @@ -7,7 +7,7 @@ on: jobs: close-issue: name: 'Close pull request with automatic response' - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 permissions: pull-requests: write steps: diff --git a/.github/workflows/brew-bump-cli.yml b/.github/workflows/brew-bump-cli.yml index 438e74c942..33c6b7c368 100644 --- a/.github/workflows/brew-bump-cli.yml +++ b/.github/workflows/brew-bump-cli.yml @@ -14,22 +14,22 @@ defaults: jobs: update-desktop-cask: name: Update Bitwarden CLI Formula - runs-on: macos-11 + runs-on: macos-13 steps: - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "brew-bump-workflow-pat" - name: Update Homebrew formula - uses: dawidd6/action-homebrew-bump-formula@d3667e5ae14df19579e4414897498e3e88f2f458 # v3.10.0 + uses: dawidd6/action-homebrew-bump-formula@baf2b60c51fc1f8453c884b0c61052668a71bd1d # v3.11.0 with: # Required, custom GitHub access token with the 'public_repo' and 'workflow' scopes token: ${{ steps.retrieve-secrets.outputs.brew-bump-workflow-pat }} @@ -38,4 +38,4 @@ jobs: formula: bitwarden-cli tag: ${{ github.ref }} revision: ${{ github.sha }} - force: false + force: true diff --git a/.github/workflows/brew-bump-desktop.yml b/.github/workflows/brew-bump-desktop.yml index b724f3562a..31239aa9b2 100644 --- a/.github/workflows/brew-bump-desktop.yml +++ b/.github/workflows/brew-bump-desktop.yml @@ -14,16 +14,16 @@ defaults: jobs: update-desktop-cask: name: Update Bitwarden Desktop Cask - runs-on: macos-11 + runs-on: macos-13 steps: - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "brew-bump-workflow-pat" @@ -38,5 +38,5 @@ jobs: cask: bitwarden tag: ${{ github.ref }} revision: ${{ github.sha }} - force: false + force: true dryrun: true diff --git a/.github/workflows/build-browser.yml b/.github/workflows/build-browser.yml index 8e4fc6d4f7..585a888ae1 100644 --- a/.github/workflows/build-browser.yml +++ b/.github/workflows/build-browser.yml @@ -10,19 +10,17 @@ on: - 'apps/browser/**' - 'libs/**' - '*' - - '!libs/importer' - '!*.md' - '!*.txt' push: branches: - - 'master' + - 'main' - 'rc' - 'hotfix-rc-browser' paths: - 'apps/browser/**' - 'libs/**' - '*' - - '!libs/importer' - '!*.md' - '!*.txt' - '.github/workflows/build-browser.yml' @@ -36,29 +34,17 @@ defaults: shell: bash jobs: - cloc: - name: CLOC - runs-on: ubuntu-20.04 - steps: - - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - - name: Set up cloc - run: | - sudo apt update - sudo apt -y install cloc - - - name: Print lines of code - run: cloc --include-lang TypeScript,JavaScript,HTML,Sass,CSS --vcs git - - setup: name: Setup - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 outputs: repo_url: ${{ steps.gen_vars.outputs.repo_url }} adj_build_number: ${{ steps.gen_vars.outputs.adj_build_number }} + node_version: ${{ steps.retrieve-node-version.outputs.node_version }} steps: + - name: Checkout repo + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Get Package Version id: gen_vars run: | @@ -68,10 +54,18 @@ jobs: echo "repo_url=$repo_url" >> $GITHUB_OUTPUT echo "adj_build_number=$adj_build_num" >> $GITHUB_OUTPUT + - name: Get Node Version + id: retrieve-node-version + working-directory: ./ + run: | + NODE_NVMRC=$(cat .nvmrc) + NODE_VERSION=${NODE_NVMRC/v/''} + echo "node_version=$NODE_VERSION" >> $GITHUB_OUTPUT + locales-test: name: Locales Test - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: - setup defaults: @@ -79,7 +73,7 @@ jobs: working-directory: apps/browser steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Testing locales - extName length run: | @@ -108,121 +102,123 @@ jobs: build: name: Build - runs-on: windows-2019 + runs-on: ubuntu-22.04 needs: - setup - locales-test env: _BUILD_NUMBER: ${{ needs.setup.outputs.adj_build_number }} - defaults: - run: - working-directory: apps/browser + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Print environment run: | node --version npm --version + - name: Build sources for reviewers + run: | + # Include hidden files in glob copy + shopt -s dotglob + + # Remove ".git" directory + rm -r .git + + # Copy root level files to source directory + mkdir browser-source + FILES=$(find . -maxdepth 1 -type f) + for FILE in $FILES; do cp "$FILE" browser-source/; done + + # Copy patches to the Browser source directory + mkdir -p browser-source/patches + cp -r patches/* browser-source/patches + + # Copy apps/browser to the Browser source directory + mkdir -p browser-source/apps/browser + cp -r apps/browser/* browser-source/apps/browser + + # Copy libs to Browser source directory + mkdir browser-source/libs + cp -r libs/* browser-source/libs + + zip -r browser-source.zip browser-source + - name: NPM setup run: npm ci - working-directory: ./ + working-directory: browser-source/ - name: Build run: npm run dist + working-directory: browser-source/apps/browser # - name: Build Manifest v3 # run: npm run dist:mv3 + # working-directory: browser-source/apps/browser - name: Gulp run: gulp ci - - - name: Build sources for reviewers - shell: cmd - run: | - REM Remove ".git" directory - rmdir /S /Q ".git" - - REM Copy root level files to source directory - mkdir browser-source - copy * browser-source - - REM Copy apps\browser to Browser source directory - mkdir browser-source\apps\browser - xcopy apps\browser\* browser-source\apps\browser /E - - REM Copy libs to Browser source directory - mkdir browser-source\libs - xcopy libs\* browser-source\libs /E - - call 7z a browser-source.zip "browser-source\*" - working-directory: ./ + working-directory: browser-source/apps/browser - name: Upload Opera artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: dist-opera-${{ env._BUILD_NUMBER }}.zip - path: apps/browser/dist/dist-opera.zip + path: browser-source/apps/browser/dist/dist-opera.zip if-no-files-found: error # - name: Upload Opera MV3 artifact # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 # with: # name: dist-opera-MV3-${{ env._BUILD_NUMBER }}.zip - # path: apps/browser/dist/dist-opera-mv3.zip + # path: browser-source/apps/browser/dist/dist-opera-mv3.zip # if-no-files-found: error - name: Upload Chrome artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: dist-chrome-${{ env._BUILD_NUMBER }}.zip - path: apps/browser/dist/dist-chrome.zip + path: browser-source/apps/browser/dist/dist-chrome.zip if-no-files-found: error # - name: Upload Chrome MV3 artifact # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 # with: # name: dist-chrome-MV3-${{ env._BUILD_NUMBER }}.zip - # path: apps/browser/dist/dist-chrome-mv3.zip + # path: browser-source/apps/browser/dist/dist-chrome-mv3.zip # if-no-files-found: error - name: Upload Firefox artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: dist-firefox-${{ env._BUILD_NUMBER }}.zip - path: apps/browser/dist/dist-firefox.zip + path: browser-source/apps/browser/dist/dist-firefox.zip if-no-files-found: error - name: Upload Edge artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: dist-edge-${{ env._BUILD_NUMBER }}.zip - path: apps/browser/dist/dist-edge.zip + path: browser-source/apps/browser/dist/dist-edge.zip if-no-files-found: error # - name: Upload Edge MV3 artifact # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 # with: # name: dist-edge-MV3-${{ env._BUILD_NUMBER }}.zip - # path: apps/browser/dist/dist-edge-mv3.zip + # path: browser-source/apps/browser/dist/dist-edge-mv3.zip # if-no-files-found: error - name: Upload browser source - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: browser-source-${{ env._BUILD_NUMBER }}.zip path: browser-source.zip @@ -230,88 +226,103 @@ jobs: - name: Upload coverage artifact if: false - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: coverage-${{ env._BUILD_NUMBER }}.zip - path: apps/browser/coverage/coverage-${{ env._BUILD_NUMBER }}.zip + path: browser-source/apps/browser/coverage/coverage-${{ env._BUILD_NUMBER }}.zip if-no-files-found: error build-safari: name: Build Safari - runs-on: macos-11 + runs-on: macos-13 needs: - setup - locales-test env: _BUILD_NUMBER: ${{ needs.setup.outputs.adj_build_number }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' + node-version: ${{ env._NODE_VERSION }} - name: Print environment run: | node --version npm --version - - name: Decrypt secrets + - name: Login to Azure + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + + - name: Download Provisioning Profiles secrets env: - DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }} + ACCOUNT_NAME: bitwardenci + CONTAINER_NAME: profiles run: | mkdir -p $HOME/secrets - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden-desktop-key.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden-desktop-key.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/macdev-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/macdev-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden_desktop_appstore.provisionprofile" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg" + + az storage blob download --account-name $ACCOUNT_NAME --container-name $CONTAINER_NAME \ + --name bitwarden_desktop_appstore.provisionprofile \ + --file $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + --output none + + - name: Get certificates + run: | + mkdir -p $HOME/certificates + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/bitwarden-desktop-key | + jq -r .value | base64 -d > $HOME/certificates/bitwarden-desktop-key.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-app-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-app-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | + jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 - name: Set up keychain env: KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} - DESKTOP_KEY_PASSWORD: ${{ secrets.DESKTOP_KEY_PASSWORD }} - DEVID_CERT_PASSWORD: ${{ secrets.DEVID_CERT_PASSWORD }} - APPSTORE_CERT_PASSWORD: ${{ secrets.APPSTORE_CERT_PASSWORD }} - MACDEV_CERT_PASSWORD: ${{ secrets.MACDEV_CERT_PASSWORD }} - APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain security set-keychain-settings -lut 1200 build.keychain - security import "$HOME/secrets/bitwarden-desktop-key.p12" -k build.keychain -P $DESKTOP_KEY_PASSWORD \ + + security import "$HOME/certificates/bitwarden-desktop-key.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-app-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-installer-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-app-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-installer-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/macdev-cert.p12" -k build.keychain -P $MACDEV_CERT_PASSWORD \ + + security import "$HOME/certificates/macdev-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain - name: NPM setup @@ -330,7 +341,7 @@ jobs: ls -la - name: Upload Safari artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: dist-safari-${{ env._BUILD_NUMBER }}.zip path: apps/browser/dist/dist-safari.zip @@ -338,45 +349,44 @@ jobs: crowdin-push: name: Crowdin Push - if: github.ref == 'refs/heads/master' - runs-on: ubuntu-20.04 + if: github.ref == 'refs/heads/main' + runs-on: ubuntu-22.04 needs: - build - build-safari steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "crowdin-api-token" - name: Upload Sources - uses: crowdin/github-action@ee4ab4ea2feadc0fdc3b200729c7b1c4cf4b38f3 # v1.11.0 + uses: crowdin/github-action@c953b17499daa6be3e5afbf7a63616fb02d8b18d # v1.19.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} CROWDIN_PROJECT_ID: "268134" with: config: apps/browser/crowdin.yml - crowdin_branch_name: master + crowdin_branch_name: main upload_sources: true upload_translations: false check-failures: name: Check for failures if: always() - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: - - cloc - setup - locales-test - build @@ -384,31 +394,11 @@ jobs: - crowdin-push steps: - name: Check if any job failed - if: ${{ (github.ref == 'refs/heads/master') || (github.ref == 'refs/heads/rc') }} - env: - CLOC_STATUS: ${{ needs.cloc.result }} - SETUP_STATUS: ${{ needs.setup.result }} - LOCALES_TEST_STATUS: ${{ needs.locales-test.result }} - BUILD_STATUS: ${{ needs.build.result }} - SAFARI_BUILD_STATUS: ${{ needs.build-safari.result }} - CROWDIN_PUSH_STATUS: ${{ needs.crowdin-push.result }} - run: | - if [ "$CLOC_STATUS" = "failure" ]; then - exit 1 - elif [ "$SETUP_STATUS" = "failure" ]; then - exit 1 - elif [ "$LOCALES_TEST_STATUS" = "failure" ]; then - exit 1 - elif [ "$BUILD_STATUS" = "failure" ]; then - exit 1 - elif [ "$SAFARI_BUILD_STATUS" = "failure" ]; then - exit 1 - elif [ "$CROWDIN_PUSH_STATUS" = "failure" ]; then - exit 1 - fi + if: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/rc' || github.ref == 'refs/heads/hotfix-rc') && contains(needs.*.result, 'failure') + run: exit 1 - name: Login to Azure - Prod Subscription - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 if: failure() with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} @@ -416,7 +406,7 @@ jobs: - name: Retrieve secrets id: retrieve-secrets if: failure() - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "devops-alerts-slack-webhook-url" diff --git a/.github/workflows/build-cli.yml b/.github/workflows/build-cli.yml index b0cc27e0ea..2c3ea3982a 100644 --- a/.github/workflows/build-cli.yml +++ b/.github/workflows/build-cli.yml @@ -15,7 +15,7 @@ on: - '.github/workflows/build-cli.yml' push: branches: - - 'master' + - 'main' - 'rc' - 'hotfix-rc-cli' paths: @@ -33,53 +33,47 @@ defaults: working-directory: apps/cli jobs: - cloc: - name: CLOC - runs-on: ubuntu-20.04 - steps: - - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - - name: Set up cloc - run: | - sudo apt update - sudo apt -y install cloc - - - name: Print lines of code - run: cloc --include-lang TypeScript,JavaScript --vcs git - - setup: name: Setup - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 outputs: - package_version: ${{ steps.retrieve-version.outputs.package_version }} + package_version: ${{ steps.retrieve-package-version.outputs.package_version }} + node_version: ${{ steps.retrieve-node-version.outputs.node_version }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Get Package Version - id: retrieve-version + id: retrieve-package-version run: | PKG_VERSION=$(jq -r .version package.json) echo "package_version=$PKG_VERSION" >> $GITHUB_OUTPUT + - name: Get Node Version + id: retrieve-node-version + working-directory: ./ + run: | + NODE_NVMRC=$(cat .nvmrc) + NODE_VERSION=${NODE_NVMRC/v/''} + echo "node_version=$NODE_VERSION" >> $GITHUB_OUTPUT + cli: name: Build CLI ${{ matrix.os }} strategy: matrix: - os: [ubuntu-20.04, macos-11] + os: [ubuntu-22.04, macos-11] runs-on: ${{ matrix.os }} needs: - setup env: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} _WIN_PKG_FETCH_VERSION: 18.5.0 _WIN_PKG_VERSION: 3.4 steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Setup Unix Vars run: | @@ -88,16 +82,11 @@ jobs: awk '{print tolower($0)}')" >> $GITHUB_ENV - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Install run: npm ci @@ -129,14 +118,14 @@ jobs: | awk '{split($0, a); print a[1]}' > bw-${{ env.LOWER_RUNNER_OS }}-sha256-${{ env._PACKAGE_VERSION }}.txt - name: Upload unix zip asset - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bw-${{ env.LOWER_RUNNER_OS }}-${{ env._PACKAGE_VERSION }}.zip path: apps/cli/dist/bw-${{ env.LOWER_RUNNER_OS }}-${{ env._PACKAGE_VERSION }}.zip if-no-files-found: error - name: Upload unix checksum asset - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bw-${{ env.LOWER_RUNNER_OS }}-sha256-${{ env._PACKAGE_VERSION }}.txt path: apps/cli/dist/bw-${{ env.LOWER_RUNNER_OS }}-sha256-${{ env._PACKAGE_VERSION }}.txt @@ -144,16 +133,17 @@ jobs: cli-windows: name: Build CLI Windows - runs-on: windows-2019 + runs-on: windows-2022 needs: - setup env: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} _WIN_PKG_FETCH_VERSION: 18.5.0 _WIN_PKG_VERSION: 3.4 steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Setup Windows builder run: | @@ -162,16 +152,11 @@ jobs: choco install nasm --no-progress - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Get pkg-fetch shell: pwsh @@ -264,28 +249,28 @@ jobs: -t sha256 | Out-File -Encoding ASCII ./dist/bw-windows-sha256-${env:_PACKAGE_VERSION}.txt - name: Upload windows zip asset - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bw-windows-${{ env._PACKAGE_VERSION }}.zip path: apps/cli/dist/bw-windows-${{ env._PACKAGE_VERSION }}.zip if-no-files-found: error - name: Upload windows checksum asset - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bw-windows-sha256-${{ env._PACKAGE_VERSION }}.txt path: apps/cli/dist/bw-windows-sha256-${{ env._PACKAGE_VERSION }}.txt if-no-files-found: error - name: Upload Chocolatey asset - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bitwarden-cli.${{ env._PACKAGE_VERSION }}.nupkg path: apps/cli/dist/chocolatey/bitwarden-cli.${{ env._PACKAGE_VERSION }}.nupkg if-no-files-found: error - name: Upload NPM Build Directory asset - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bitwarden-cli-${{ env._PACKAGE_VERSION }}-npm-build.zip path: apps/cli/build @@ -293,13 +278,16 @@ jobs: snap: name: Build Snap - runs-on: ubuntu-20.04 + # Note, before updating the ubuntu version of the workflow, ensure the snap base image + # is equal or greater than the new version. Otherwise there might be GLIBC version issues. + # The snap base for CLI is defined in `apps/cli/stores/snap/snapcraft.yaml` + runs-on: ubuntu-22.04 needs: [setup, cli] env: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Print environment run: | @@ -309,7 +297,7 @@ jobs: echo "BW Package Version: $_PACKAGE_VERSION" - name: Get bw linux cli - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: name: bw-linux-${{ env._PACKAGE_VERSION }}.zip path: apps/cli/dist/snap @@ -322,7 +310,7 @@ jobs: ls -alth - name: Build snap - uses: snapcore/action-build@3457752ec9b1c79a8290b5167fce2d14df0997c1 # v1.1.2 + uses: snapcore/action-build@2096990827aa966f773676c8a53793c723b6b40f # v1.2.0 with: path: apps/cli/dist/snap @@ -351,14 +339,14 @@ jobs: run: sudo snap remove bw - name: Upload snap asset - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bw_${{ env._PACKAGE_VERSION }}_amd64.snap path: apps/cli/dist/snap/bw_${{ env._PACKAGE_VERSION }}_amd64.snap if-no-files-found: error - name: Upload snap checksum asset - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bw-snap-sha256-${{ env._PACKAGE_VERSION }}.txt path: apps/cli/dist/snap/bw-snap-sha256-${{ env._PACKAGE_VERSION }}.txt @@ -368,9 +356,8 @@ jobs: check-failures: name: Check for failures if: always() - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: - - cloc - setup - cli - cli-windows @@ -378,25 +365,11 @@ jobs: steps: - name: Check if any job failed working-directory: ${{ github.workspace }} - if: ${{ (github.ref == 'refs/heads/master') || (github.ref == 'refs/heads/rc') }} - env: - CLOC_STATUS: ${{ needs.cloc.result }} - SETUP_STATUS: ${{ needs.setup.result }} - CLI_STATUS: ${{ needs.cli.result }} - SNAP_STATUS: ${{ needs.snap.result }} - run: | - if [ "$CLOC_STATUS" = "failure" ]; then - exit 1 - elif [ "$SETUP_STATUS" = "failure" ]; then - exit 1 - elif [ "$CLI_STATUS" = "failure" ]; then - exit 1 - elif [ "$SNAP_STATUS" = "failure" ]; then - exit 1 - fi + if: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/rc' || github.ref == 'refs/heads/hotfix-rc') && contains(needs.*.result, 'failure') + run: exit 1 - name: Login to Azure - Prod Subscription - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 if: failure() with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} @@ -404,7 +377,7 @@ jobs: - name: Retrieve secrets id: retrieve-secrets if: failure() - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "devops-alerts-slack-webhook-url" diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index 60949f3d69..e73f882bb4 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -10,20 +10,18 @@ on: - 'apps/desktop/**' - 'libs/**' - '*' - - '!libs/importer' - '!*.md' - '!*.txt' - '.github/workflows/build-desktop.yml' push: branches: - - 'master' + - 'main' - 'rc' - 'hotfix-rc-desktop' paths: - 'apps/desktop/**' - 'libs/**' - '*' - - '!libs/importer' - '!*.md' - '!*.txt' - '.github/workflows/build-desktop.yml' @@ -35,27 +33,12 @@ defaults: shell: bash jobs: - cloc: - name: CLOC - runs-on: ubuntu-20.04 - steps: - - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - - name: Set up cloc - run: | - sudo apt-get update - sudo apt-get -y install cloc - - - name: Print lines of code - run: cloc --include-lang TypeScript,JavaScript,HTML,Sass,CSS --vcs git - electron-verify: name: Verify Electron Version - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Verify run: | @@ -71,19 +54,20 @@ jobs: setup: name: Setup - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 outputs: package_version: ${{ steps.retrieve-version.outputs.package_version }} release_channel: ${{ steps.release-channel.outputs.channel }} build_number: ${{ steps.increment-version.outputs.build_number }} rc_branch_exists: ${{ steps.branch-check.outputs.rc_branch_exists }} hotfix_branch_exists: ${{ steps.branch-check.outputs.hotfix_branch_exists }} + node_version: ${{ steps.retrieve-node-version.outputs.node_version }} defaults: run: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Get Package Version id: retrieve-version @@ -130,35 +114,40 @@ jobs: echo "hotfix_branch_exists=0" >> $GITHUB_OUTPUT fi + - name: Get Node Version + id: retrieve-node-version + working-directory: ./ + run: | + NODE_NVMRC=$(cat .nvmrc) + NODE_VERSION=${NODE_NVMRC/v/''} + echo "node_version=$NODE_VERSION" >> $GITHUB_OUTPUT linux: name: Linux Build + # Note, before updating the ubuntu version of the workflow, ensure the snap base image + # is equal or greater than the new version. Otherwise there might be GLIBC version issues. + # The snap base for desktop is defined in `apps/desktop/electron-builder.json` + # We are currently running on 20.04 until the Ubuntu 24.04 release is available, as moving + # to 22.04 now breaks users who are on 20.04 due to mismatched GLIBC versions. runs-on: ubuntu-20.04 - needs: - - setup + needs: setup env: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} + NODE_OPTIONS: --max_old_space_size=4096 defaults: run: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Set Node options - run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Set up environment run: | @@ -180,7 +169,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: path: | @@ -204,42 +193,42 @@ jobs: run: npm run dist:lin - name: Upload .deb artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-amd64.deb path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-amd64.deb if-no-files-found: error - name: Upload .rpm artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-x86_64.rpm path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x86_64.rpm if-no-files-found: error - name: Upload .freebsd artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-x64.freebsd path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x64.freebsd if-no-files-found: error - name: Upload .snap artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bitwarden_${{ env._PACKAGE_VERSION }}_amd64.snap path: apps/desktop/dist/bitwarden_${{ env._PACKAGE_VERSION }}_amd64.snap if-no-files-found: error - name: Upload .AppImage artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-x86_64.AppImage path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x86_64.AppImage if-no-files-found: error - name: Upload auto-update artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: ${{ needs.setup.outputs.release_channel }}-linux.yml path: apps/desktop/dist/${{ needs.setup.outputs.release_channel }}-linux.yml @@ -248,36 +237,29 @@ jobs: windows: name: Windows Build - runs-on: windows-2019 - needs: - - setup + runs-on: windows-2022 + needs: setup defaults: run: shell: pwsh working-directory: apps/desktop env: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} + NODE_OPTIONS: --max_old_space_size=4096 steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Set Node options - run: echo "NODE_OPTIONS=--max_old_space_size=4096" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Install AST - uses: bitwarden/gh-actions/install-ast@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + run: dotnet tool install --global AzureSignTool --version 4.0.1 - name: Set up environmentF run: choco install checksum --no-progress @@ -296,13 +278,13 @@ jobs: rustup show - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "code-signing-vault-url, @@ -316,7 +298,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: path: apps/desktop/desktop_native/*.node @@ -369,91 +351,91 @@ jobs: -NewName bitwarden-${{ env._PACKAGE_VERSION }}-arm64.nsis.7z - name: Upload portable exe artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-Portable-${{ env._PACKAGE_VERSION }}.exe path: apps/desktop/dist/Bitwarden-Portable-${{ env._PACKAGE_VERSION }}.exe if-no-files-found: error - name: Upload installer exe artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-Installer-${{ env._PACKAGE_VERSION }}.exe path: apps/desktop/dist/nsis-web/Bitwarden-Installer-${{ env._PACKAGE_VERSION }}.exe if-no-files-found: error - name: Upload appx ia32 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-ia32.appx path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-ia32.appx if-no-files-found: error - name: Upload store appx ia32 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-ia32-store.appx path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-ia32-store.appx if-no-files-found: error - name: Upload NSIS ia32 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bitwarden-${{ env._PACKAGE_VERSION }}-ia32.nsis.7z path: apps/desktop/dist/nsis-web/bitwarden-${{ env._PACKAGE_VERSION }}-ia32.nsis.7z if-no-files-found: error - name: Upload appx x64 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-x64.appx path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x64.appx if-no-files-found: error - name: Upload store appx x64 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-x64-store.appx path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x64-store.appx if-no-files-found: error - name: Upload NSIS x64 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bitwarden-${{ env._PACKAGE_VERSION }}-x64.nsis.7z path: apps/desktop/dist/nsis-web/bitwarden-${{ env._PACKAGE_VERSION }}-x64.nsis.7z if-no-files-found: error - name: Upload appx ARM64 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-arm64.appx path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-arm64.appx if-no-files-found: error - name: Upload store appx ARM64 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-arm64-store.appx path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-arm64-store.appx if-no-files-found: error - name: Upload NSIS ARM64 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bitwarden-${{ env._PACKAGE_VERSION }}-arm64.nsis.7z path: apps/desktop/dist/nsis-web/bitwarden-${{ env._PACKAGE_VERSION }}-arm64.nsis.7z if-no-files-found: error - name: Upload nupkg artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bitwarden.${{ env._PACKAGE_VERSION }}.nupkg path: apps/desktop/dist/chocolatey/bitwarden.${{ env._PACKAGE_VERSION }}.nupkg if-no-files-found: error - name: Upload auto-update artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: ${{ needs.setup.outputs.release_channel }}.yml path: apps/desktop/dist/nsis-web/${{ needs.setup.outputs.release_channel }}.yml @@ -462,32 +444,28 @@ jobs: macos-build: name: MacOS Build + # Note, this workflow is running on macOS 11 to maintain compatibility with macOS 10.15 Catalina, + # as the newer versions will case the native modules to be incompatible with older macOS systems + # This version should stay pinned until we drop support for macOS 10.15, or we drop the native modules runs-on: macos-11 - needs: - - setup + needs: setup env: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} + NODE_OPTIONS: --max_old_space_size=4096 defaults: run: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Set Node options - run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Rust shell: pwsh @@ -503,70 +481,84 @@ jobs: - name: Cache Build id: build-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Cache Safari id: safari-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension - - name: Decrypt secrets + - name: Login to Azure + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + + - name: Download Provisioning Profiles secrets env: - DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }} + ACCOUNT_NAME: bitwardenci + CONTAINER_NAME: profiles run: | mkdir -p $HOME/secrets - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden-desktop-key.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden-desktop-key.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/macdev-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/macdev-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden_desktop_appstore.provisionprofile" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg" + + az storage blob download --account-name $ACCOUNT_NAME --container-name $CONTAINER_NAME \ + --name bitwarden_desktop_appstore.provisionprofile \ + --file $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + --output none + + - name: Get certificates + run: | + mkdir -p $HOME/certificates + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/bitwarden-desktop-key | + jq -r .value | base64 -d > $HOME/certificates/bitwarden-desktop-key.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-app-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-app-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | + jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 - name: Set up keychain env: KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} - DESKTOP_KEY_PASSWORD: ${{ secrets.DESKTOP_KEY_PASSWORD }} - DEVID_CERT_PASSWORD: ${{ secrets.DEVID_CERT_PASSWORD }} - APPSTORE_CERT_PASSWORD: ${{ secrets.APPSTORE_CERT_PASSWORD }} - MACDEV_CERT_PASSWORD: ${{ secrets.MACDEV_CERT_PASSWORD }} - APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain security set-keychain-settings -lut 1200 build.keychain - security import "$HOME/secrets/bitwarden-desktop-key.p12" -k build.keychain -P $DESKTOP_KEY_PASSWORD \ + + security import "$HOME/certificates/bitwarden-desktop-key.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-app-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-installer-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-app-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-installer-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/macdev-cert.p12" -k build.keychain -P $MACDEV_CERT_PASSWORD \ + + security import "$HOME/certificates/macdev-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain - name: Set up provisioning profiles @@ -582,13 +574,14 @@ jobs: $package = Get-Content -Raw -Path electron-builder.json | ConvertFrom-Json $package | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER" $package | ConvertTo-Json -Depth 32 | Set-Content -Path electron-builder.json + "### MacOS build number: $env:BUILD_NUMBER" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append - name: Install Node dependencies run: npm ci working-directory: ./ - name: Cache Native Module - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: path: apps/desktop/desktop_native/*.node @@ -612,6 +605,9 @@ jobs: macos-package-github: name: MacOS Package GitHub Release Assets + # Note, this workflow is running on macOS 11 to maintain compatibility with macOS 10.15 Catalina, + # as the newer versions will case the native modules to be incompatible with older macOS systems + # This version should stay pinned until we drop support for macOS 10.15, or we drop the native modules runs-on: macos-11 needs: - browser-build @@ -619,27 +615,21 @@ jobs: - setup env: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} + NODE_OPTIONS: --max_old_space_size=4096 defaults: run: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Set Node options - run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Rust shell: pwsh @@ -655,70 +645,84 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension - - name: Decrypt secrets + - name: Login to Azure + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + + - name: Download Provisioning Profiles secrets env: - DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }} + ACCOUNT_NAME: bitwardenci + CONTAINER_NAME: profiles run: | mkdir -p $HOME/secrets - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden-desktop-key.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden-desktop-key.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/macdev-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/macdev-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden_desktop_appstore.provisionprofile" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg" + + az storage blob download --account-name $ACCOUNT_NAME --container-name $CONTAINER_NAME \ + --name bitwarden_desktop_appstore.provisionprofile \ + --file $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + --output none + + - name: Get certificates + run: | + mkdir -p $HOME/certificates + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/bitwarden-desktop-key | + jq -r .value | base64 -d > $HOME/certificates/bitwarden-desktop-key.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-app-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-app-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | + jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 - name: Set up keychain env: KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} - DESKTOP_KEY_PASSWORD: ${{ secrets.DESKTOP_KEY_PASSWORD }} - DEVID_CERT_PASSWORD: ${{ secrets.DEVID_CERT_PASSWORD }} - APPSTORE_CERT_PASSWORD: ${{ secrets.APPSTORE_CERT_PASSWORD }} - MACDEV_CERT_PASSWORD: ${{ secrets.MACDEV_CERT_PASSWORD }} - APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain security set-keychain-settings -lut 1200 build.keychain - security import "$HOME/secrets/bitwarden-desktop-key.p12" -k build.keychain -P $DESKTOP_KEY_PASSWORD \ + + security import "$HOME/certificates/bitwarden-desktop-key.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-app-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-installer-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-app-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-installer-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/macdev-cert.p12" -k build.keychain -P $MACDEV_CERT_PASSWORD \ + + security import "$HOME/certificates/macdev-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain - name: Set up provisioning profiles @@ -734,13 +738,14 @@ jobs: $package = Get-Content -Raw -Path electron-builder.json | ConvertFrom-Json $package | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER" $package | ConvertTo-Json -Depth 32 | Set-Content -Path electron-builder.json + "### MacOS GitHub build number: $env:BUILD_NUMBER" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append - name: Install Node dependencies run: npm ci working-directory: ./ - name: Cache Native Module - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: path: apps/desktop/desktop_native/*.node @@ -756,7 +761,7 @@ jobs: run: npm run build - name: Download Browser artifact - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: path: ${{ github.workspace }}/browser-build-artifacts @@ -779,28 +784,28 @@ jobs: run: npm run pack:mac - name: Upload .zip artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-universal-mac.zip path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-universal-mac.zip if-no-files-found: error - name: Upload .dmg artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-universal.dmg path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-universal.dmg if-no-files-found: error - name: Upload .dmg blockmap artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-universal.dmg.blockmap path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-universal.dmg.blockmap if-no-files-found: error - name: Upload auto-update artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: ${{ needs.setup.outputs.release_channel }}-mac.yml path: apps/desktop/dist/${{ needs.setup.outputs.release_channel }}-mac.yml @@ -809,6 +814,9 @@ jobs: macos-package-mas: name: MacOS Package Prod Release Asset + # Note, this workflow is running on macOS 11 to maintain compatibility with macOS 10.15 Catalina, + # as the newer versions will case the native modules to be incompatible with older macOS systems + # This version should stay pinned until we drop support for macOS 10.15, or we drop the native modules runs-on: macos-11 needs: - browser-build @@ -816,27 +824,21 @@ jobs: - setup env: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} + NODE_OPTIONS: --max_old_space_size=4096 defaults: run: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Set Node options - run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Rust shell: pwsh @@ -852,70 +854,84 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension - - name: Decrypt secrets + - name: Login to Azure + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + + - name: Download Provisioning Profiles secrets env: - DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }} + ACCOUNT_NAME: bitwardenci + CONTAINER_NAME: profiles run: | mkdir -p $HOME/secrets - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden-desktop-key.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden-desktop-key.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/macdev-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/macdev-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden_desktop_appstore.provisionprofile" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg" + + az storage blob download --account-name $ACCOUNT_NAME --container-name $CONTAINER_NAME \ + --name bitwarden_desktop_appstore.provisionprofile \ + --file $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + --output none + + - name: Get certificates + run: | + mkdir -p $HOME/certificates + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/bitwarden-desktop-key | + jq -r .value | base64 -d > $HOME/certificates/bitwarden-desktop-key.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-app-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-app-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | + jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 - name: Set up keychain env: KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} - DESKTOP_KEY_PASSWORD: ${{ secrets.DESKTOP_KEY_PASSWORD }} - DEVID_CERT_PASSWORD: ${{ secrets.DEVID_CERT_PASSWORD }} - APPSTORE_CERT_PASSWORD: ${{ secrets.APPSTORE_CERT_PASSWORD }} - MACDEV_CERT_PASSWORD: ${{ secrets.MACDEV_CERT_PASSWORD }} - APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain security set-keychain-settings -lut 1200 build.keychain - security import "$HOME/secrets/bitwarden-desktop-key.p12" -k build.keychain -P $DESKTOP_KEY_PASSWORD \ + + security import "$HOME/certificates/bitwarden-desktop-key.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-app-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-installer-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-app-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-installer-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/macdev-cert.p12" -k build.keychain -P $MACDEV_CERT_PASSWORD \ + + security import "$HOME/certificates/macdev-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain - name: Set up provisioning profiles @@ -931,13 +947,14 @@ jobs: $package = Get-Content -Raw -Path electron-builder.json | ConvertFrom-Json $package | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER" $package | ConvertTo-Json -Depth 32 | Set-Content -Path electron-builder.json + "### MacOS App Store build number: $env:BUILD_NUMBER" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append - name: Install Node dependencies run: npm ci working-directory: ./ - name: Cache Native Module - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: path: apps/desktop/desktop_native/*.node @@ -953,7 +970,7 @@ jobs: run: npm run build - name: Download Browser artifact - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: path: ${{ github.workspace }}/browser-build-artifacts @@ -976,7 +993,7 @@ jobs: CSC_FOR_PULL_REQUEST: true - name: Upload .pkg artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-universal.pkg path: apps/desktop/dist/mas-universal/Bitwarden-${{ env._PACKAGE_VERSION }}-universal.pkg @@ -987,7 +1004,7 @@ jobs: APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }} APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} if: | - (github.ref == 'refs/heads/master' + (github.ref == 'refs/heads/main' && needs.setup.outputs.rc_branch_exists == 0 && needs.setup.outputs.hotfix_branch_exists == 0) || (github.ref == 'refs/heads/rc' && needs.setup.outputs.hotfix_branch_exists == 0) @@ -998,6 +1015,9 @@ jobs: macos-package-dev: name: MacOS Package Dev Release Asset if: false # We need to look into how code signing works for dev + # Note, this workflow is running on macOS 11 to maintain compatibility with macOS 10.15 Catalina, + # as the newer versions will case the native modules to be incompatible with older macOS systems + # This version should stay pinned until we drop support for macOS 10.15, or we drop the native modules runs-on: macos-11 needs: - browser-build @@ -1005,27 +1025,21 @@ jobs: - setup env: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} + NODE_OPTIONS: --max_old_space_size=4096 defaults: run: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Set Node options - run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Print environment run: | @@ -1036,70 +1050,84 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension - - name: Decrypt secrets + - name: Login to Azure + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + + - name: Download Provisioning Profiles secrets env: - DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }} + ACCOUNT_NAME: bitwardenci + CONTAINER_NAME: profiles run: | mkdir -p $HOME/secrets - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden-desktop-key.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden-desktop-key.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/macdev-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/macdev-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden_desktop_appstore.provisionprofile" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg" + + az storage blob download --account-name $ACCOUNT_NAME --container-name $CONTAINER_NAME \ + --name bitwarden_desktop_appstore.provisionprofile \ + --file $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + --output none + + - name: Get certificates + run: | + mkdir -p $HOME/certificates + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/bitwarden-desktop-key | + jq -r .value | base64 -d > $HOME/certificates/bitwarden-desktop-key.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-app-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-app-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | + jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 - name: Set up keychain env: KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} - DESKTOP_KEY_PASSWORD: ${{ secrets.DESKTOP_KEY_PASSWORD }} - DEVID_CERT_PASSWORD: ${{ secrets.DEVID_CERT_PASSWORD }} - APPSTORE_CERT_PASSWORD: ${{ secrets.APPSTORE_CERT_PASSWORD }} - MACDEV_CERT_PASSWORD: ${{ secrets.MACDEV_CERT_PASSWORD }} - APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain security set-keychain-settings -lut 1200 build.keychain - security import "$HOME/secrets/bitwarden-desktop-key.p12" -k build.keychain -P $DESKTOP_KEY_PASSWORD \ + + security import "$HOME/certificates/bitwarden-desktop-key.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-app-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-installer-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-app-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-installer-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/macdev-cert.p12" -k build.keychain -P $MACDEV_CERT_PASSWORD \ + + security import "$HOME/certificates/macdev-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain - name: Set up provisioning profiles @@ -1115,13 +1143,14 @@ jobs: $package = Get-Content -Raw -Path electron-builder.json | ConvertFrom-Json $package | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER" $package | ConvertTo-Json -Depth 32 | Set-Content -Path electron-builder.json + "### MacOS Dev build number: $env:BUILD_NUMBER" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append - name: Install Node dependencies run: npm ci working-directory: ./ - name: Cache Native Module - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: path: apps/desktop/desktop_native/*.node @@ -1137,7 +1166,7 @@ jobs: run: npm run build - name: Download Browser artifact - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: path: ${{ github.workspace }}/browser-build-artifacts @@ -1163,7 +1192,7 @@ jobs: run: zip -r Bitwarden-${{ env.PACKAGE_VERSION }}-masdev-universal.zip Bitwarden.app - name: Upload masdev artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-masdev-universal.zip path: apps/desktop/dist/mas-universal/Bitwarden-${{ env._PACKAGE_VERSION }}-masdev-universal.zip @@ -1172,38 +1201,38 @@ jobs: crowdin-push: name: Crowdin Push - if: github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/main' needs: - linux - windows - macos-package-github - macos-package-mas - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "crowdin-api-token" - name: Upload Sources - uses: crowdin/github-action@ee4ab4ea2feadc0fdc3b200729c7b1c4cf4b38f3 # v1.11.0 + uses: crowdin/github-action@c953b17499daa6be3e5afbf7a63616fb02d8b18d # v1.19.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} CROWDIN_PROJECT_ID: "299360" with: config: apps/desktop/crowdin.yml - crowdin_branch_name: master + crowdin_branch_name: main upload_sources: true upload_translations: false @@ -1211,9 +1240,8 @@ jobs: check-failures: name: Check for failures if: always() - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: - - cloc - electron-verify - browser-build - setup @@ -1225,43 +1253,11 @@ jobs: - crowdin-push steps: - name: Check if any job failed - if: ${{ (github.ref == 'refs/heads/master') || (github.ref == 'refs/heads/rc') }} - env: - CLOC_STATUS: ${{ needs.cloc.result }} - ELECTRON_VERIFY_STATUS: ${{ needs.electron-verify.result }} - BROWSER_BUILD_STATUS: ${{ needs.browser-build.result }} - SETUP_STATUS: ${{ needs.setup.result }} - LINUX_STATUS: ${{ needs.linux.result }} - WINDOWS_STATUS: ${{ needs.windows.result }} - MACOS_BUILD_STATUS: ${{ needs.macos-build.result }} - MACOS_PKG_GITHUB_STATUS: ${{ needs.macos-package-github.result }} - MACOS_PKG_MAS_STATUS: ${{ needs.macos-package-mas.result }} - CROWDIN_PUSH_STATUS: ${{ needs.crowdin-push.result }} - run: | - if [ "$CLOC_STATUS" = "failure" ]; then - exit 1 - elif [ "$ELECTRON_VERIFY_STATUS" = "failure" ]; then - exit 1 - elif [ "$BROWSER_BUILD_STATUS" = "failure" ]; then - exit 1 - elif [ "$SETUP_STATUS" = "failure" ]; then - exit 1 - elif [ "$LINUX_STATUS" = "failure" ]; then - exit 1 - elif [ "$WINDOWS_STATUS" = "failure" ]; then - exit 1 - elif [ "$MACOS_BUILD_STATUS" = "failure" ]; then - exit 1 - elif [ "$MACOS_PKG_GITHUB_STATUS" = "failure" ]; then - exit 1 - elif [ "$MACOS_PKG_MAS_STATUS" = "failure" ]; then - exit 1 - elif [ "$CROWDIN_PUSH_STATUS" = "failure" ]; then - exit 1 - fi + if: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/rc' || github.ref == 'refs/heads/hotfix-rc') && contains(needs.*.result, 'failure') + run: exit 1 - name: Login to Azure - Prod Subscription - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 if: failure() with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} @@ -1269,7 +1265,7 @@ jobs: - name: Retrieve secrets id: retrieve-secrets if: failure() - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "devops-alerts-slack-webhook-url" diff --git a/.github/workflows/build-web.yml b/.github/workflows/build-web.yml index 9c670f01c6..8576fb6760 100644 --- a/.github/workflows/build-web.yml +++ b/.github/workflows/build-web.yml @@ -15,7 +15,7 @@ on: - '.github/workflows/build-web.yml' push: branches: - - 'master' + - 'main' - 'rc' - 'hotfix-rc-web' paths: @@ -25,50 +25,46 @@ on: - '!*.md' - '!*.txt' - '.github/workflows/build-web.yml' + release: + types: [published] workflow_dispatch: inputs: custom_tag_extension: description: "Custom image tag extension" required: false +env: + _AZ_REGISTRY: bitwardenprod.azurecr.io + jobs: - cloc: - name: CLOC - runs-on: ubuntu-22.04 - steps: - - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - - name: Set up cloc - run: | - sudo apt update - sudo apt -y install cloc - - - name: Print lines of code - working-directory: apps/web - run: cloc --include-lang TypeScript,JavaScript,HTML,Sass,CSS --vcs git - - setup: name: Setup runs-on: ubuntu-22.04 outputs: version: ${{ steps.version.outputs.value }} + node_version: ${{ steps.retrieve-node-version.outputs.node_version }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Get GitHub sha as version id: version run: echo "value=${GITHUB_SHA:0:7}" >> $GITHUB_OUTPUT + - name: Get Node Version + id: retrieve-node-version + run: | + NODE_NVMRC=$(cat .nvmrc) + NODE_VERSION=${NODE_NVMRC/v/''} + echo "node_version=$NODE_VERSION" >> $GITHUB_OUTPUT + build-artifacts: name: Build artifacts runs-on: ubuntu-22.04 - needs: - - setup + needs: setup env: _VERSION: ${{ needs.setup.outputs.version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} strategy: matrix: include: @@ -80,23 +76,29 @@ jobs: npm_command: "dist:bit:selfhost" - name: "cloud-QA" npm_command: "build:bit:qa" + git_metadata: true - name: "ee" npm_command: "build:bit:ee" + git_metadata: true - name: "cloud-euprd" npm_command: "build:bit:euprd" - name: "cloud-euqa" npm_command: "build:bit:euqa" + git_metadata: true + - name: "cloud-usdev" + npm_command: "build:bit:usdev" + git_metadata: true steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: "16" + node-version: ${{ env._NODE_VERSION }} - name: Print environment run: | @@ -111,9 +113,9 @@ jobs: - name: Install dependencies run: npm ci - - name: Setup QA metadata + - name: Add Git metadata to build version working-directory: apps/web - if: matrix.name == 'cloud-QA' + if: matrix.git_metadata run: | VERSION=$( jq -r ".version" package.json) jq --arg version "$VERSION+${GITHUB_SHA:0:7}" '.version = $version' package.json > package.json.tmp @@ -128,7 +130,7 @@ jobs: run: zip -r web-${{ env._VERSION }}-${{ matrix.name }}.zip build - name: Upload ${{ matrix.name }} artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: web-${{ env._VERSION }}-${{ matrix.name }}.zip path: apps/web/web-${{ env._VERSION }}-${{ matrix.name }}.zip @@ -146,23 +148,20 @@ jobs: matrix: include: - artifact_name: cloud-QA - registries: [bitwardenprod.azurecr.io, bitwardenqa.azurecr.io] image_name: web-qa-cloud - artifact_name: ee - registries: [bitwardenprod.azurecr.io, bitwardenqa.azurecr.io] image_name: web-ee - artifact_name: selfhosted-COMMERCIAL - registries: [bitwarden, bitwardenprod.azurecr.io, bitwardenqa.azurecr.io] image_name: web env: _VERSION: ${{ needs.setup.outputs.version }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Check Branch to Publish env: - PUBLISH_BRANCHES: "master,rc,hotfix-rc-web" + PUBLISH_BRANCHES: "main,rc,hotfix-rc-web" id: publish-branch-check run: | IFS="," read -a publish_branches <<< $PUBLISH_BRANCHES @@ -174,24 +173,28 @@ jobs: fi ########## ACRs ########## - - name: Login to Azure - QA - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 - with: - creds: ${{ secrets.AZURE_QA_KV_CREDENTIALS }} - - - name: Log into QA container registry - run: az acr login -n bitwardenqa - - - name: Login to Azure - Prod - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + - name: Login to Prod Azure + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} - name: Log into Prod container registry run: az acr login -n bitwardenprod + - name: Login to Azure - CI Subscription + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + + - name: Retrieve github PAT secrets + id: retrieve-secret-pat + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: "bitwarden-ci" + secrets: "github-pat-bitwarden-devops-bot-repo-scope" + - name: Download ${{ matrix.artifact_name }} artifact - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: name: web-${{ env._VERSION }}-${{ matrix.artifact_name }}.zip path: apps/web @@ -203,10 +206,10 @@ jobs: if [[ $(grep "pull" <<< "${GITHUB_REF}") ]]; then IMAGE_TAG=$(echo "${GITHUB_HEAD_REF}" | sed "s#/#-#g") else - IMAGE_TAG=$(echo "${GITHUB_REF:11}" | sed "s#/#-#g") + IMAGE_TAG=$(echo "${GITHUB_REF_NAME}" | sed "s#/#-#g") fi - if [[ "$IMAGE_TAG" == "master" ]]; then + if [[ "$IMAGE_TAG" == "main" ]]; then IMAGE_TAG=dev fi @@ -218,135 +221,117 @@ jobs: echo "image_tag=$IMAGE_TAG" >> $GITHUB_OUTPUT - - name: Generate tag list - id: tag-list - env: - IMAGE_TAG: ${{ steps.tag.outputs.image_tag }} - PROJECT_NAME: ${{ matrix.image_name }} - run: echo "tags=bitwardenqa.azurecr.io/${PROJECT_NAME}:${IMAGE_TAG},bitwardenprod.azurecr.io/${PROJECT_NAME}:${IMAGE_TAG}" >> $GITHUB_OUTPUT - ########## Build Image ########## - name: Extract artifact working-directory: apps/web run: unzip web-${{ env._VERSION }}-${{ matrix.artifact_name }}.zip - - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 - with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - - - name: Retrieve github PAT secrets - id: retrieve-secret-pat - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c - with: - keyvault: "bitwarden-ci" - secrets: "github-pat-bitwarden-devops-bot-repo-scope" - - - name: Setup DCT - if: ${{ env.is_publish_branch == 'true' }} - id: setup-dct - uses: bitwarden/gh-actions/setup-docker-trust@a30e9c3d658dc97c4c2e61ec749fdab64b83386c - with: - azure-creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - azure-keyvault-name: "bitwarden-ci" + - name: Generate image full name + id: image-name + env: + IMAGE_TAG: ${{ steps.tag.outputs.image_tag }} + PROJECT_NAME: ${{ matrix.image_name }} + run: echo "name=$_AZ_REGISTRY/${PROJECT_NAME}:${IMAGE_TAG}" >> $GITHUB_OUTPUT - name: Build Docker image - uses: docker/build-push-action@2eb1c1961a95fc15694676618e422e8ba1d63825 # v4.1.1 + uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 with: context: apps/web file: apps/web/Dockerfile platforms: linux/amd64 push: true - tags: ${{ steps.tag-list.outputs.tags }} + tags: ${{ steps.image-name.outputs.name }} secrets: | "GH_PAT=${{ steps.retrieve-secret-pat.outputs.github-pat-bitwarden-devops-bot-repo-scope }}" - - name: Push to DockerHub - if: contains(matrix.registries, 'bitwarden') && env.is_publish_branch == 'true' - env: - IMAGE_TAG: ${{ steps.tag.outputs.image_tag }} - PROJECT_NAME: ${{ matrix.image_name }} - DOCKER_CONTENT_TRUST: 1 - DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE: ${{ steps.setup-dct.outputs.dct-delegate-repo-passphrase }} - run: | - docker tag bitwardenprod.azurecr.io/$PROJECT_NAME:$IMAGE_TAG bitwarden/$PROJECT_NAME:$IMAGE_TAG - docker push bitwarden/$PROJECT_NAME:$IMAGE_TAG - - name: Log out of Docker run: docker logout crowdin-push: name: Crowdin Push - if: github.ref == 'refs/heads/master' - needs: - - build-artifacts + if: github.ref == 'refs/heads/main' + needs: build-artifacts runs-on: ubuntu-22.04 steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "crowdin-api-token" - name: Upload Sources - uses: crowdin/github-action@ee4ab4ea2feadc0fdc3b200729c7b1c4cf4b38f3 # v1.11.0 + uses: crowdin/github-action@c953b17499daa6be3e5afbf7a63616fb02d8b18d # v1.19.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} CROWDIN_PROJECT_ID: "308189" with: config: apps/web/crowdin.yml - crowdin_branch_name: master + crowdin_branch_name: main upload_sources: true upload_translations: false + trigger-web-vault-deploy: + name: Trigger web vault deploy + if: github.ref == 'refs/heads/main' + runs-on: ubuntu-22.04 + needs: build-artifacts + steps: + - name: Login to Azure - CI Subscription + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + + - name: Retrieve github PAT secrets + id: retrieve-secret-pat + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: "bitwarden-ci" + secrets: "github-pat-bitwarden-devops-bot-repo-scope" + + - name: Trigger web vault deploy using GitHub Run ID + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + github-token: ${{ steps.retrieve-secret-pat.outputs.github-pat-bitwarden-devops-bot-repo-scope }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'bitwarden', + repo: 'clients', + workflow_id: 'deploy-web.yml', + ref: 'main', + inputs: { + 'environment': 'USDEV', + 'build-web-run-id': '${{ github.run_id }}' + } + }) check-failures: name: Check for failures if: always() runs-on: ubuntu-22.04 needs: - - cloc - setup - build-artifacts - build-containers - crowdin-push + - trigger-web-vault-deploy steps: - name: Check if any job failed - if: ${{ (github.ref == 'refs/heads/master') || (github.ref == 'refs/heads/rc') }} - env: - CLOC_STATUS: ${{ needs.cloc.result }} - SETUP_STATUS: ${{ needs.setup.result }} - ARTIFACT_STATUS: ${{ needs.build-artifacts.result }} - BUILD_CONTAINERS_STATUS: ${{ needs.build-containers.result }} - CROWDIN_PUSH_STATUS: ${{ needs.crowdin-push.result }} - run: | - if [ "$CLOC_STATUS" = "failure" ]; then - exit 1 - elif [ "$SETUP_STATUS" = "failure" ]; then - exit 1 - elif [ "$ARTIFACT_STATUS" = "failure" ]; then - exit 1 - elif [ "$BUILD_SELFHOST_STATUS" = "failure" ]; then - exit 1 - elif [ "$BUILD_CONTAINERS_STATUS" = "failure" ]; then - exit 1 - elif [ "$CROWDIN_PUSH_STATUS" = "failure" ]; then - exit 1 - fi + if: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/rc' || github.ref == 'refs/heads/hotfix-rc') && contains(needs.*.result, 'failure') + run: exit 1 - name: Login to Azure - Prod Subscription - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 if: failure() with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} @@ -354,7 +339,7 @@ jobs: - name: Retrieve secrets id: retrieve-secrets if: failure() - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "devops-alerts-slack-webhook-url" diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index eda9f8d0f7..ab08d509b3 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -3,45 +3,54 @@ name: Chromatic on: push: + branches-ignore: + - 'renovate/**' paths-ignore: - '.github/workflows/**' jobs: chromatic: name: Chromatic - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 - with: - node-version: "16" - - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: fetch-depth: 0 + - name: Get Node Version + id: retrieve-node-version + run: | + NODE_NVMRC=$(cat .nvmrc) + NODE_VERSION=${NODE_NVMRC/v/''} + echo "node_version=$NODE_VERSION" >> $GITHUB_OUTPUT + + - name: Set up Node + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + with: + node-version: ${{ steps.retrieve-node-version.outputs.node_version }} + - name: Cache npm id: npm-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: "~/.npm" key: ${{ runner.os }}-npm-chromatic-${{ hashFiles('**/package-lock.json') }} - name: Install Node dependencies run: npm ci - + # Manual build the storybook to resolve a chromatic/storybook bug related to TurboSnap - name: Build Storybook run: npm run build-storybook:ci - name: Publish to Chromatic - uses: chromaui/action@44caff7e88d584b04f79f04e31e819f9a95d4d8f + uses: chromaui/action@c9067691aca4a28d6fbb40d9eea6e144369fbcae # v10.9.5 with: token: ${{ secrets.GITHUB_TOKEN }} projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} storybookBuildDir: ./storybook-static exitOnceUploaded: true onlyChanged: true - externals: "[\"libs/components/**/*.scss\", \"libs/components/tailwind.config*.js\"]" + externals: "[\"libs/components/**/*.scss\", \"libs/components/**/*.css\", \"libs/components/tailwind.config*.js\"]" diff --git a/.github/workflows/crowdin-pull.yml b/.github/workflows/crowdin-pull.yml index 28498461d3..b6c2e27646 100644 --- a/.github/workflows/crowdin-pull.yml +++ b/.github/workflows/crowdin-pull.yml @@ -10,7 +10,7 @@ on: jobs: crowdin-sync: name: Autosync - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: @@ -23,29 +23,29 @@ jobs: crowdin_project_id: "308189" steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "crowdin-api-token, github-gpg-private-key, github-gpg-private-key-passphrase" - name: Download translations - uses: bitwarden/gh-actions/crowdin@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/crowdin@main env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} CROWDIN_PROJECT_ID: ${{ matrix.crowdin_project_id }} with: config: crowdin.yml - crowdin_branch_name: master + crowdin_branch_name: main upload_sources: false upload_translations: false download_translations: true diff --git a/.github/workflows/deploy-eu-prod-web.yml b/.github/workflows/deploy-eu-prod-web.yml deleted file mode 100644 index d2cadd295b..0000000000 --- a/.github/workflows/deploy-eu-prod-web.yml +++ /dev/null @@ -1,60 +0,0 @@ ---- -name: Deploy Web to EU-PRD Cloud - -on: - workflow_dispatch: - inputs: - tag: - description: "Branch name to deploy (examples: 'master', 'feature/sm')" - required: true - type: string - default: master - -jobs: - azure-deploy: - name: Deploy to Azure - runs-on: ubuntu-22.04 - env: - _WEB_ARTIFACT: "web-*-cloud-euprd.zip" - steps: - - name: Login to Azure - EU Subscription - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 - with: - creds: ${{ secrets.AZURE_KV_EU_PRD_SERVICE_PRINCIPAL }} - - - name: Retrieve Storage Account connection string - id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c - with: - keyvault: webvault-westeurope-prod - secrets: "sa-bitwarden-web-vault-dev-key-temp" - - - name: Download latest cloud asset - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c - with: - workflow: build-web.yml - path: apps/web - workflow_conclusion: success - branch: ${{ github.event.inputs.tag }} - artifacts: ${{ env._WEB_ARTIFACT }} - - - name: Unzip build asset - working-directory: apps/web - run: unzip ${{ env._WEB_ARTIFACT }} - - - name: Empty container in Storage Account - run: | - az storage blob delete-batch \ - --source '$web' \ - --pattern '*' \ - --connection-string "${{ steps.retrieve-secrets.outputs.sa-bitwarden-web-vault-dev-key-temp }}" - - - name: Deploy to Azure Storage Account - working-directory: apps/web - run: | - az storage blob upload-batch \ - --source "./build" \ - --destination '$web' \ - --connection-string "${{ steps.retrieve-secrets.outputs.sa-bitwarden-web-vault-dev-key-temp }}" \ - --overwrite \ - --no-progress diff --git a/.github/workflows/deploy-eu-qa-web.yml b/.github/workflows/deploy-eu-qa-web.yml deleted file mode 100644 index a5b161e5da..0000000000 --- a/.github/workflows/deploy-eu-qa-web.yml +++ /dev/null @@ -1,60 +0,0 @@ ---- -name: Deploy Web to EU-QA Cloud - -on: - workflow_dispatch: - inputs: - tag: - description: "Branch name to deploy (examples: 'master', 'feature/sm')" - required: true - type: string - default: master - -jobs: - azure-deploy: - name: Deploy to Azure - runs-on: ubuntu-22.04 - env: - _WEB_ARTIFACT: "web-*-cloud-euqa.zip" - steps: - - name: Login to Azure - EU Subscription - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 - with: - creds: ${{ secrets.AZURE_KV_EU_QA_SERVICE_PRINCIPAL }} - - - name: Retrieve Storage Account connection string - id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c - with: - keyvault: webvaulteu-westeurope-qa - secrets: "sa-bitwarden-web-vault-dev-key-temp" - - - name: Download latest cloud asset - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c - with: - workflow: build-web.yml - path: apps/web - workflow_conclusion: success - branch: ${{ github.event.inputs.tag }} - artifacts: ${{ env._WEB_ARTIFACT }} - - - name: Unzip build asset - working-directory: apps/web - run: unzip ${{ env._WEB_ARTIFACT }} - - - name: Empty container in Storage Account - run: | - az storage blob delete-batch \ - --source '$web' \ - --pattern '*' \ - --connection-string "${{ steps.retrieve-secrets.outputs.sa-bitwarden-web-vault-dev-key-temp }}" - - - name: Deploy to Azure Storage Account - working-directory: apps/web - run: | - az storage blob upload-batch \ - --source "./build" \ - --destination '$web' \ - --connection-string "${{ steps.retrieve-secrets.outputs.sa-bitwarden-web-vault-dev-key-temp }}" \ - --overwrite \ - --no-progress diff --git a/.github/workflows/deploy-non-prod-web.yml b/.github/workflows/deploy-non-prod-web.yml deleted file mode 100644 index 512fefb534..0000000000 --- a/.github/workflows/deploy-non-prod-web.yml +++ /dev/null @@ -1,128 +0,0 @@ ---- -name: Deploy Web - Non-Prod -run-name: Deploy Web ${{ inputs.environment }} - -on: - workflow_dispatch: - inputs: - environment: - description: 'Environment' - default: 'QA' - type: choice - options: - - QA - - workflow_call: - inputs: - environment: - description: 'Environment' - default: 'QA' - type: string - -jobs: - setup: - name: Setup - runs-on: ubuntu-20.04 - outputs: - environment: ${{ steps.config.outputs.environment }} - environment-url: ${{ steps.config.outputs.environment-url }} - environment-name: ${{ steps.config.outputs.environment-name }} - environment-branch: ${{ steps.config.outputs.environment-branch }} - environment-artifact: ${{ steps.config.outputs.environment-artifact }} - steps: - - name: Configure - id: config - run: | - ENV_NAME_LOWER=$(echo "${{ inputs.environment }}" | awk '{print tolower($0)}') - echo "configuring the Web deploy for ${{ inputs.environment }}" - echo "environment=${{ inputs.environment }}" >> $GITHUB_OUTPUT - echo "environment-url=http://vault.$ENV_NAME_LOWER.bitwarden.pw" >> $GITHUB_OUTPUT - echo "environment-name=Web Vault - ${{ inputs.environment }}" >> $GITHUB_OUTPUT - echo "environment-branch=cf-pages-$ENV_NAME_LOWER" >> $GITHUB_OUTPUT - echo "environment-artifact=web-*-cloud-${{ inputs.environment }}.zip" >> $GITHUB_OUTPUT - - - cfpages-deploy: - name: Deploy Web Vault to ${{ inputs.environment }} CloudFlare Pages branch - needs: setup - runs-on: ubuntu-20.04 - env: - _ENVIRONMENT: ${{ needs.setup.outputs.environment }} - _ENVIRONMENT_URL: ${{ needs.setup.outputs.environment-url }} - _ENVIRONMENT_NAME: ${{ needs.setup.outputs.environment-name }} - _ENVIRONMENT_BRANCH: ${{ needs.setup.outputs.environment-branch }} - _ENVIRONMENT_ARTIFACT: ${{ needs.setup.outputs.environment-artifact }} - steps: - - name: Create GitHub deployment - uses: chrnorm/deployment-action@d42cde7132fcec920de534fffc3be83794335c00 # v2.0.5 - id: deployment - with: - token: '${{ secrets.GITHUB_TOKEN }}' - initial-status: 'in_progress' - environment-url: ${{ env._ENVIRONMENT_URL }} - environment: ${{ env._ENVIRONMENT_NAME }} - description: 'Deployment from branch ${{ github.ref_name }}' - - - name: Checkout Repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - - name: Download latest cloud asset - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c - with: - workflow: build-web.yml - path: apps/web - workflow_conclusion: success - branch: ${{ github.ref_name }} - artifacts: ${{ env._ENVIRONMENT_ARTIFACT }} - - - name: Unzip cloud asset - working-directory: apps/web - run: unzip ${{ env._ENVIRONMENT_ARTIFACT }} - - - name: Checkout Repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - with: - ref: ${{ env._ENVIRONMENT_BRANCH }} - path: deployment - - - name: Setup git config - run: | - git config --global user.name "GitHub Action Bot" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - git config --global url."https://github.com/".insteadOf ssh://git@github.com/ - git config --global url."https://".insteadOf ssh:// - - - name: Deploy CloudFlare Pages - run: | - rm -rf ./* - cp -R ../apps/web/build/* . - working-directory: deployment - - - name: Push new ver to ${{ env._ENVIRONMENT_BRANCH }} - run: | - if [ -n "$(git status --porcelain)" ]; then - git add . - git commit -m "Deploy ${{ github.ref_name }} to ${{ env._ENVIRONMENT }} Cloudflare pages" - git push -u origin ${{ env._ENVIRONMENT_BRANCH }} - else - echo "No changes to commit!"; - fi - working-directory: deployment - - - name: Update deployment status to Success - if: ${{ success() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 - with: - token: '${{ secrets.GITHUB_TOKEN }}' - environment-url: ${{ env._ENVIRONMENT_URL }} - state: 'success' - deployment-id: ${{ steps.deployment.outputs.deployment_id }} - - - name: Update deployment status to Failure - if: ${{ failure() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 - with: - token: '${{ secrets.GITHUB_TOKEN }}' - environment-url: ${{ env._ENVIRONMENT_URL }} - state: 'failure' - deployment-id: ${{ steps.deployment.outputs.deployment_id }} diff --git a/.github/workflows/deploy-web.yml b/.github/workflows/deploy-web.yml new file mode 100644 index 0000000000..769e700588 --- /dev/null +++ b/.github/workflows/deploy-web.yml @@ -0,0 +1,367 @@ +--- +name: Deploy Web Vault +run-name: Deploy Web Vault to ${{ inputs.environment }} from ${{ inputs.branch-or-tag }} + +on: + workflow_dispatch: + inputs: + environment: + description: 'Environment' + default: 'QA' + type: choice + options: + - USQA + - EUQA + - USPROD + - EUPROD + - USDEV + branch-or-tag: + description: "Branch or Tag name to deploy (examples: 'main', 'feature/sm', 'web-v2023.12.0')" + type: string + default: main + force-delete-destination: + description: "Delete remote files that are not found locally" + type: boolean + default: false + debug: + description: "Debug mode" + type: boolean + default: true + build-web-run-id: + description: "Build-web workflow Run ID to use for artifact download" + type: string + required: false + + workflow_call: + inputs: + environment: + description: 'Environment' + default: 'USQA' + type: string + branch-or-tag: + description: "Branch or Tag name to deploy (examples: 'main', 'feature/sm', 'web-v2023.12.0')" + type: string + default: main + force-delete-destination: + description: "Delete remote files that are not found locally" + type: boolean + default: false + debug: + description: "Debug mode" + type: boolean + default: true + build-web-run-id: + description: "Build-web workflow Run ID to use for artifact download" + type: string + required: false + +permissions: + deployments: write + +jobs: + setup: + name: Setup + runs-on: ubuntu-22.04 + outputs: + environment: ${{ steps.config.outputs.environment }} + environment-url: ${{ steps.config.outputs.environment-url }} + environment-name: ${{ steps.config.outputs.environment-name }} + environment-artifact: ${{ steps.config.outputs.environment-artifact }} + azure-login-creds: ${{ steps.config.outputs.azure-login-creds }} + retrieve-secrets-keyvault: ${{ steps.config.outputs.retrieve-secrets-keyvault }} + sync-utility: ${{ steps.config.outputs.sync-utility }} + sync-delete-destination-files: ${{ steps.config.outputs.sync-delete-destination-files }} + steps: + - name: Configure + id: config + run: | + ENV_NAME_LOWER=$(echo "${{ inputs.environment }}" | awk '{print tolower($0)}') + echo "configuring the Web deploy for ${{ inputs.environment }}" + echo "environment=${{ inputs.environment }}" >> $GITHUB_OUTPUT + + case ${{ inputs.environment }} in + "USQA") + echo "azure-login-creds=AZURE_KV_US_QA_SERVICE_PRINCIPAL" >> $GITHUB_OUTPUT + echo "retrieve-secrets-keyvault=bw-webvault-rlktusqa-kv" >> $GITHUB_OUTPUT + echo "environment-artifact=web-*-cloud-QA.zip" >> $GITHUB_OUTPUT + echo "environment-name=Web Vault - US QA Cloud" >> $GITHUB_OUTPUT + echo "environment-url=http://vault.$ENV_NAME_LOWER.bitwarden.pw" >> $GITHUB_OUTPUT + ;; + "EUQA") + echo "azure-login-creds=AZURE_KV_EU_QA_SERVICE_PRINCIPAL" >> $GITHUB_OUTPUT + echo "retrieve-secrets-keyvault=webvaulteu-westeurope-qa" >> $GITHUB_OUTPUT + echo "environment-artifact=web-*-cloud-euqa.zip" >> $GITHUB_OUTPUT + echo "environment-name=Web Vault - EU QA Cloud" >> $GITHUB_OUTPUT + echo "environment-url=http://vault.$ENV_NAME_LOWER.bitwarden.pw" >> $GITHUB_OUTPUT + ;; + "USPROD") + echo "azure-login-creds=AZURE_KV_US_PROD_SERVICE_PRINCIPAL" >> $GITHUB_OUTPUT + echo "retrieve-secrets-keyvault=bw-webvault-klrt-kv" >> $GITHUB_OUTPUT + echo "environment-artifact=web-*-cloud-COMMERCIAL.zip" >> $GITHUB_OUTPUT + echo "environment-name=Web Vault - US Production Cloud" >> $GITHUB_OUTPUT + echo "environment-url=http://vault.bitwarden.com" >> $GITHUB_OUTPUT + ;; + "EUPROD") + echo "azure-login-creds=AZURE_KV_EU_PRD_SERVICE_PRINCIPAL" >> $GITHUB_OUTPUT + echo "retrieve-secrets-keyvault=webvault-westeurope-prod" >> $GITHUB_OUTPUT + echo "environment-artifact=web-*-cloud-euprd.zip" >> $GITHUB_OUTPUT + echo "environment-name=Web Vault - EU Production Cloud" >> $GITHUB_OUTPUT + echo "environment-url=http://vault.bitwarden.eu" >> $GITHUB_OUTPUT + ;; + "USDEV") + echo "azure-login-creds=AZURE_KV_US_DEV_SERVICE_PRINCIPAL" >> $GITHUB_OUTPUT + echo "retrieve-secrets-keyvault=webvault-eastus-dev" >> $GITHUB_OUTPUT + echo "environment-artifact=web-*-cloud-usdev.zip" >> $GITHUB_OUTPUT + echo "environment-name=Web Vault - US Development Cloud" >> $GITHUB_OUTPUT + echo "environment-url=http://vault.$ENV_NAME_LOWER.bitwarden.pw" >> $GITHUB_OUTPUT + ;; + esac + # Set the sync utility to use for deployment to the environment (az-sync or azcopy) + echo "sync-utility=azcopy" >> $GITHUB_OUTPUT + + approval: + name: Approval for Deployment to ${{ needs.setup.outputs.environment-name }} + needs: setup + runs-on: ubuntu-22.04 + environment: ${{ needs.setup.outputs.environment-name }} + steps: + - name: Success Code + run: exit 0 + + get-branch-or-tag-sha: + name: Get Branch or Tag SHA + runs-on: ubuntu-22.04 + outputs: + branch-or-tag-sha: ${{ steps.get-branch-or-tag-sha.outputs.sha }} + steps: + - name: Checkout Branch + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + ref: ${{ inputs.branch-or-tag }} + fetch-depth: 0 + + - name: Get Branch or Tag SHA + id: get-branch-or-tag-sha + run: | + echo "sha=$(git rev-parse origin/${{ inputs.branch-or-tag }})" >> $GITHUB_OUTPUT + + notify-start: + name: Notify Slack with start message + needs: + - approval + - setup + - get-branch-or-tag-sha + runs-on: ubuntu-22.04 + if: ${{ always() && contains( inputs.environment , 'QA' ) }} + outputs: + channel_id: ${{ steps.slack-message.outputs.channel_id }} + ts: ${{ steps.slack-message.outputs.ts }} + steps: + - uses: bitwarden/gh-actions/report-deployment-status-to-slack@main + id: slack-message + with: + project: Clients + environment: ${{ needs.setup.outputs.environment-name }} + tag: ${{ inputs.branch-or-tag }} + slack-channel: team-eng-qa-devops + event: 'start' + commit-sha: ${{ needs.get-branch-or-tag-sha.outputs.branch-or-tag-sha }} + url: https://github.com/bitwarden/clients/actions/runs/${{ github.run_id }} + AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + + artifact-check: + name: Check if Web artifact is present + runs-on: ubuntu-22.04 + needs: setup + env: + _ENVIRONMENT_ARTIFACT: ${{ needs.setup.outputs.environment-artifact }} + steps: + - name: 'Download latest cloud asset using GitHub Run ID: ${{ inputs.build-web-run-id }}' + if: ${{ inputs.build-web-run-id }} + uses: bitwarden/gh-actions/download-artifacts@main + id: download-latest-artifacts + continue-on-error: true + with: + workflow: build-web.yml + path: apps/web + workflow_conclusion: success + run_id: ${{ inputs.build-web-run-id }} + artifacts: ${{ env._ENVIRONMENT_ARTIFACT }} + + - name: 'Download latest cloud asset from branch/tag: ${{ inputs.branch-or-tag }}' + if: ${{ !inputs.build-web-run-id }} + uses: bitwarden/gh-actions/download-artifacts@main + id: download-artifacts + continue-on-error: true + with: + workflow: build-web.yml + path: apps/web + workflow_conclusion: success + branch: ${{ inputs.branch-or-tag }} + artifacts: ${{ env._ENVIRONMENT_ARTIFACT }} + + - name: Login to Azure + if: ${{ steps.download-artifacts.outcome == 'failure' }} + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + + - name: Retrieve secrets for Build trigger + if: ${{ steps.download-artifacts.outcome == 'failure' }} + id: retrieve-secret + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: "bitwarden-ci" + secrets: "github-pat-bitwarden-devops-bot-repo-scope" + + - name: 'Trigger build web for missing branch/tag ${{ inputs.branch-or-tag }}' + if: ${{ steps.download-artifacts.outcome == 'failure' }} + uses: convictional/trigger-workflow-and-wait@f69fa9eedd3c62a599220f4d5745230e237904be # v1.6.5 + with: + owner: bitwarden + repo: clients + github_token: ${{ steps.retrieve-secret.outputs.github-pat-bitwarden-devops-bot-repo-scope }} + workflow_file_name: build-web.yml + ref: ${{ inputs.branch-or-tag }} + wait_interval: 100 + + azure-deploy: + name: Deploy Web Vault to ${{ inputs.environment }} Storage Account + needs: + - setup + - artifact-check + - approval + runs-on: ubuntu-22.04 + env: + _ENVIRONMENT: ${{ needs.setup.outputs.environment }} + _ENVIRONMENT_URL: ${{ needs.setup.outputs.environment-url }} + _ENVIRONMENT_NAME: ${{ needs.setup.outputs.environment-name }} + _ENVIRONMENT_ARTIFACT: ${{ needs.setup.outputs.environment-artifact }} + steps: + - name: Create GitHub deployment + uses: chrnorm/deployment-action@55729fcebec3d284f60f5bcabbd8376437d696b1 # v2.0.7 + id: deployment + with: + token: '${{ secrets.GITHUB_TOKEN }}' + initial-status: 'in_progress' + environment-url: ${{ env._ENVIRONMENT_URL }} + environment: ${{ env._ENVIRONMENT_NAME }} + task: 'deploy' + description: 'Deployment from branch/tag: ${{ inputs.branch-or-tag }}' + + - name: Login to Azure + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets[needs.setup.outputs.azure-login-creds] }} + + - name: Retrieve Storage Account connection string for az sync + if: ${{ needs.setup.outputs.sync-utility == 'az-sync' }} + id: retrieve-secrets-az-sync + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: ${{ needs.setup.outputs.retrieve-secrets-keyvault }} + secrets: "sa-bitwarden-web-vault-dev-key-temp" + + - name: Retrieve Storage Account name and SPN credentials for azcopy + if: ${{ needs.setup.outputs.sync-utility == 'azcopy' }} + id: retrieve-secrets-azcopy + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: ${{ needs.setup.outputs.retrieve-secrets-keyvault }} + secrets: "sa-bitwarden-web-vault-name,sp-bitwarden-web-vault-password,sp-bitwarden-web-vault-appid,sp-bitwarden-web-vault-tenant" + + - name: 'Download latest cloud asset using GitHub Run ID: ${{ inputs.build-web-run-id }}' + if: ${{ inputs.build-web-run-id }} + uses: bitwarden/gh-actions/download-artifacts@main + id: download-latest-artifacts + continue-on-error: true + with: + workflow: build-web.yml + path: apps/web + workflow_conclusion: success + run_id: ${{ inputs.build-web-run-id }} + artifacts: ${{ env._ENVIRONMENT_ARTIFACT }} + + - name: 'Download cloud asset from branch/tag: ${{ inputs.branch-or-tag }}' + if: ${{ !inputs.build-web-run-id }} + uses: bitwarden/gh-actions/download-artifacts@main + with: + workflow: build-web.yml + path: apps/web + workflow_conclusion: success + branch: ${{ inputs.branch-or-tag }} + artifacts: ${{ env._ENVIRONMENT_ARTIFACT }} + + - name: Unzip build asset + working-directory: apps/web + run: unzip ${{ env._ENVIRONMENT_ARTIFACT }} + + - name: Sync to Azure Storage Account using az storage blob sync + if: ${{ needs.setup.outputs.sync-utility == 'az-sync' }} + working-directory: apps/web + run: | + az storage blob sync \ + --source "./build" \ + --container '$web' \ + --connection-string "${{ steps.retrieve-secrets-az-sync.outputs.sa-bitwarden-web-vault-dev-key-temp }}" \ + --delete-destination=${{ inputs.force-delete-destination }} + + - name: Sync to Azure Storage Account using azcopy + if: ${{ needs.setup.outputs.sync-utility == 'azcopy' }} + working-directory: apps/web + env: + AZCOPY_AUTO_LOGIN_TYPE: SPN + AZCOPY_SPA_APPLICATION_ID: ${{ steps.retrieve-secrets-azcopy.outputs.sp-bitwarden-web-vault-appid }} + AZCOPY_SPA_CLIENT_SECRET: ${{ steps.retrieve-secrets-azcopy.outputs.sp-bitwarden-web-vault-password }} + AZCOPY_TENANT_ID: ${{ steps.retrieve-secrets-azcopy.outputs.sp-bitwarden-web-vault-tenant }} + run: | + azcopy sync ./build 'https://${{ steps.retrieve-secrets-azcopy.outputs.sa-bitwarden-web-vault-name }}.blob.core.windows.net/$web/' \ + --delete-destination=${{ inputs.force-delete-destination }} --compare-hash="MD5" + + - name: Debug sync logs + if: ${{ inputs.debug }} + run: cat /home/runner/.azcopy/*.log + + - name: Debug index.html + if: ${{ inputs.debug }} + run: cat apps/web/build/index.html + + - name: Update deployment status to Success + if: success() + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 + with: + token: '${{ secrets.GITHUB_TOKEN }}' + environment-url: ${{ env._ENVIRONMENT_URL }} + state: 'success' + deployment-id: ${{ steps.deployment.outputs.deployment_id }} + + - name: Update deployment status to Failure + if: failure() + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 + with: + token: '${{ secrets.GITHUB_TOKEN }}' + environment-url: ${{ env._ENVIRONMENT_URL }} + state: 'failure' + deployment-id: ${{ steps.deployment.outputs.deployment_id }} + + notify: + name: Notify Slack with result + runs-on: ubuntu-22.04 + if: ${{ always() && contains( inputs.environment , 'QA' ) }} + needs: + - notify-start + - azure-deploy + - setup + - get-branch-or-tag-sha + steps: + - uses: bitwarden/gh-actions/report-deployment-status-to-slack@main + with: + project: Clients + environment: ${{ needs.setup.outputs.environment-name }} + tag: ${{ inputs.branch-or-tag }} + slack-channel: ${{ needs.notify-start.outputs.channel_id }} + event: ${{ needs.azure-deploy.result }} + url: https://github.com/bitwarden/clients/actions/runs/${{ github.run_id }} + commit-sha: ${{ needs.get-branch-or-tag-sha.outputs.branch-or-tag-sha }} + update-ts: ${{ needs.notify-start.outputs.ts }} + AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} diff --git a/.github/workflows/enforce-labels.yml b/.github/workflows/enforce-labels.yml index 73092bb2e0..a98c4ae1be 100644 --- a/.github/workflows/enforce-labels.yml +++ b/.github/workflows/enforce-labels.yml @@ -8,7 +8,7 @@ on: jobs: enforce-label: name: EnforceLabel - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - name: Enforce Label uses: yogevbd/enforce-label-action@a3c219da6b8fa73f6ba62b68ff09c469b3a1c024 # 2.2.2 diff --git a/.github/workflows/label-issue-pull-request.yml b/.github/workflows/label-issue-pull-request.yml index a83e9e569b..e52bba36d6 100644 --- a/.github/workflows/label-issue-pull-request.yml +++ b/.github/workflows/label-issue-pull-request.yml @@ -1,5 +1,5 @@ # Runs creation of Pull Requests -# If the PR destination branch is master, add a needs-qa label +# If the PR destination branch is main, add a needs-qa label unless created by renovate[bot] --- name: Label Issue Pull Request @@ -10,11 +10,12 @@ on: paths-ignore: - .github/workflows/** # We don't need QA on workflow changes branches: - - 'master' # We only want to check when PRs target master + - 'main' # We only want to check when PRs target main jobs: add-needs-qa-label: runs-on: ubuntu-latest + if: ${{ github.actor != 'renovate[bot]' }} steps: - name: Add label to pull request uses: andymckay/labeler@e6c4322d0397f3240f0e7e30a33b5c5df2d39e90 # 1.0.4 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a3c3efdd19..ed5ada527c 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -18,10 +18,10 @@ defaults: jobs: lint: name: Lint - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Lint filenames (no capital characters) run: | @@ -38,12 +38,19 @@ jobs: > tmp.txt diff <(sort .github/whitelist-capital-letters.txt) <(sort tmp.txt) + - name: Get Node Version + id: retrieve-node-version + run: | + NODE_NVMRC=$(cat .nvmrc) + NODE_VERSION=${NODE_NVMRC/v/''} + echo "node_version=$NODE_VERSION" >> $GITHUB_OUTPUT + - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' + node-version: ${{ steps.retrieve-node-version.outputs.node_version }} - name: Run linter run: | diff --git a/.github/workflows/release-browser.yml b/.github/workflows/release-browser.yml index 11447afa7d..c260f19581 100644 --- a/.github/workflows/release-browser.yml +++ b/.github/workflows/release-browser.yml @@ -22,12 +22,12 @@ defaults: jobs: setup: name: Setup - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 outputs: release-version: ${{ steps.version.outputs.version }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Branch check if: ${{ github.event.inputs.release_type != 'Dry Run' }} @@ -41,7 +41,7 @@ jobs: - name: Check Release Version id: version - uses: bitwarden/gh-actions/release-version-check@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/release-version-check@main with: release-type: ${{ github.event.inputs.release_type }} project-type: ts @@ -52,11 +52,11 @@ jobs: locales-test: name: Locales Test - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: setup steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Testing locales - extName length run: | @@ -86,13 +86,13 @@ jobs: release: name: Create GitHub Release - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: - setup - locales-test steps: - name: Create GitHub deployment - uses: chrnorm/deployment-action@d42cde7132fcec920de534fffc3be83794335c00 # v2.0.5 + uses: chrnorm/deployment-action@55729fcebec3d284f60f5bcabbd8376437d696b1 # v2.0.7 id: deployment with: token: '${{ secrets.GITHUB_TOKEN }}' @@ -103,7 +103,7 @@ jobs: - name: Download latest Release build artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-browser.yml workflow_conclusion: success @@ -114,13 +114,13 @@ jobs: dist-firefox-*.zip, dist-edge-*.zip' - - name: Dry Run - Download latest master build artifacts + - name: Dry Run - Download latest build artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-browser.yml workflow_conclusion: success - branch: master + branch: main artifacts: 'browser-source-*.zip, dist-chrome-*.zip, dist-opera-*.zip, @@ -139,7 +139,7 @@ jobs: - name: Create release if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: ncipollo/release-action@a2e71bdd4e7dab70ca26a852f29600c98b33153e # v1.12.0 + uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5 # v1.14.0 with: artifacts: 'browser-source-${{ needs.setup.outputs.release-version }}.zip, dist-chrome-${{ needs.setup.outputs.release-version }}.zip, @@ -155,7 +155,7 @@ jobs: - name: Update deployment status to Success if: ${{ success() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'success' @@ -163,7 +163,7 @@ jobs: - name: Update deployment status to Failure if: ${{ failure() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'failure' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 6186f0d6df..add0c539e9 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -15,12 +15,12 @@ on: - Redeploy - Dry Run snap_publish: - description: 'Publish to snap store' + description: 'Publish to Snap store' required: true default: true type: boolean choco_publish: - description: 'Publish to chocolatey store' + description: 'Publish to Chocolatey store' required: true default: true type: boolean @@ -38,12 +38,12 @@ defaults: jobs: setup: name: Setup - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 outputs: release-version: ${{ steps.version.outputs.version }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Branch check if: ${{ github.event.inputs.release_type != 'Dry Run' }} @@ -57,7 +57,7 @@ jobs: - name: Check Release Version id: version - uses: bitwarden/gh-actions/release-version-check@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/release-version-check@main with: release-type: ${{ github.event.inputs.release_type }} project-type: ts @@ -67,7 +67,7 @@ jobs: - name: Create GitHub deployment if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: chrnorm/deployment-action@d42cde7132fcec920de534fffc3be83794335c00 # v2.0.5 + uses: chrnorm/deployment-action@55729fcebec3d284f60f5bcabbd8376437d696b1 # v2.0.7 id: deployment with: token: '${{ secrets.GITHUB_TOKEN }}' @@ -78,7 +78,7 @@ jobs: - name: Download all Release artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-cli.yml path: apps/cli @@ -87,16 +87,16 @@ jobs: - name: Dry Run - Download all artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-cli.yml path: apps/cli workflow_conclusion: success - branch: master + branch: main - name: Create release if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: ncipollo/release-action@a2e71bdd4e7dab70ca26a852f29600c98b33153e # v1.12.0 + uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5 # v1.14.0 env: PKG_VERSION: ${{ steps.version.outputs.version }} with: @@ -118,7 +118,7 @@ jobs: - name: Update deployment status to Success if: ${{ github.event.inputs.release_type != 'Dry Run' && success() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'success' @@ -126,7 +126,7 @@ jobs: - name: Update deployment status to Failure if: ${{ github.event.inputs.release_type != 'Dry Run' && failure() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'failure' @@ -134,35 +134,33 @@ jobs: snap: name: Deploy Snap - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: setup if: inputs.snap_publish env: _PKG_VERSION: ${{ needs.setup.outputs.release-version }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "snapcraft-store-token" - name: Install Snap uses: samuelmeuli/action-snapcraft@d33c176a9b784876d966f80fb1b461808edc0641 # v2.1.1 - with: - snapcraft_token: ${{ steps.retrieve-secrets.outputs.snapcraft-store-token }} - name: Download artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-cli.yml path: apps/cli @@ -172,39 +170,41 @@ jobs: - name: Dry Run - Download artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-cli.yml path: apps/cli workflow_conclusion: success - branch: master + branch: main artifacts: bw_${{ env._PKG_VERSION }}_amd64.snap - name: Publish Snap & logout if: ${{ github.event.inputs.release_type != 'Dry Run' }} + env: + SNAPCRAFT_STORE_CREDENTIALS: ${{ steps.retrieve-secrets.outputs.snapcraft-store-token }} run: | - snapcraft push bw_${{ env._PKG_VERSION }}_amd64.snap --release stable + snapcraft upload bw_${{ env._PKG_VERSION }}_amd64.snap --release stable snapcraft logout choco: name: Deploy Choco - runs-on: windows-2019 + runs-on: windows-2022 needs: setup if: inputs.choco_publish env: _PKG_VERSION: ${{ needs.setup.outputs.release-version }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "cli-choco-api-key" @@ -220,7 +220,7 @@ jobs: - name: Download artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-cli.yml path: apps/cli/dist @@ -230,12 +230,12 @@ jobs: - name: Dry Run - Download artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-cli.yml path: apps/cli/dist workflow_conclusion: success - branch: master + branch: main artifacts: bitwarden-cli.${{ env._PKG_VERSION }}.nupkg - name: Push to Chocolatey @@ -247,30 +247,30 @@ jobs: npm: name: Publish NPM - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: setup if: inputs.npm_publish env: _PKG_VERSION: ${{ needs.setup.outputs.release-version }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "npm-api-key" - name: Download artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-cli.yml path: apps/cli/build @@ -280,12 +280,12 @@ jobs: - name: Dry Run - Download artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-cli.yml path: apps/cli/build workflow_conclusion: success - branch: master + branch: main artifacts: bitwarden-cli-${{ env._PKG_VERSION }}-npm-build.zip - name: Setup NPM diff --git a/.github/workflows/release-desktop-beta.yml b/.github/workflows/release-desktop-beta.yml index cf2ab64a56..b9e2d7a8c8 100644 --- a/.github/workflows/release-desktop-beta.yml +++ b/.github/workflows/release-desktop-beta.yml @@ -15,21 +15,22 @@ defaults: jobs: setup: name: Setup - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 outputs: release-version: ${{ steps.version.outputs.version }} release-channel: ${{ steps.release-channel.outputs.channel }} branch-name: ${{ steps.branch.outputs.branch-name }} build_number: ${{ steps.increment-version.outputs.build_number }} + node_version: ${{ steps.retrieve-node-version.outputs.node_version }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - 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/main" ]] && [[ "$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 "[!] Can only release from the 'main', 'rc' or 'hotfix-rc' branches" echo "===================================" exit 1 fi @@ -47,7 +48,7 @@ jobs: - name: Check Release Version id: version - uses: bitwarden/gh-actions/release-version-check@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/release-version-check@main with: release-type: 'Initial Release' project-type: ts @@ -104,35 +105,36 @@ jobs: echo "branch-name=$branch_name" >> $GITHUB_OUTPUT + - name: Get Node Version + id: retrieve-node-version + run: | + NODE_NVMRC=$(cat .nvmrc) + NODE_VERSION=${NODE_NVMRC/v/''} + echo "node_version=$NODE_VERSION" >> $GITHUB_OUTPUT + linux: name: Linux Build - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: setup env: _PACKAGE_VERSION: ${{ needs.setup.outputs.release-version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} + NODE_OPTIONS: --max_old_space_size=4096 defaults: run: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: ref: ${{ needs.setup.outputs.branch-name }} - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Set Node options - run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Set up environment run: | @@ -157,42 +159,42 @@ jobs: run: npm run dist:lin - name: Upload .deb artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-amd64.deb path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-amd64.deb if-no-files-found: error - name: Upload .rpm artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-x86_64.rpm path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x86_64.rpm if-no-files-found: error - name: Upload .freebsd artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-x64.freebsd path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x64.freebsd if-no-files-found: error - name: Upload .snap artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bitwarden_${{ env._PACKAGE_VERSION }}_amd64.snap path: apps/desktop/dist/bitwarden_${{ env._PACKAGE_VERSION }}_amd64.snap if-no-files-found: error - name: Upload .AppImage artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-x86_64.AppImage path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x86_64.AppImage if-no-files-found: error - name: Upload auto-update artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: ${{ needs.setup.outputs.release-channel }}-linux.yml path: apps/desktop/dist/${{ needs.setup.outputs.release-channel }}-linux.yml @@ -201,7 +203,7 @@ jobs: windows: name: Windows Build - runs-on: windows-2019 + runs-on: windows-2022 needs: setup defaults: run: @@ -209,29 +211,23 @@ jobs: working-directory: apps/desktop env: _PACKAGE_VERSION: ${{ needs.setup.outputs.release-version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} + NODE_OPTIONS: --max_old_space_size=4096 steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: ref: ${{ needs.setup.outputs.branch-name }} - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Set Node options - run: echo "NODE_OPTIONS=--max_old_space_size=4096" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Install AST - uses: bitwarden/gh-actions/install-ast@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + run: dotnet tool install --global AzureSignTool --version 4.0.1 - name: Set up environment run: choco install checksum --no-progress @@ -243,13 +239,13 @@ jobs: choco --version - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "code-signing-vault-url, @@ -304,91 +300,91 @@ jobs: -NewName bitwarden-${{ env._PACKAGE_VERSION }}-arm64.nsis.7z - name: Upload portable exe artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-Portable-${{ env._PACKAGE_VERSION }}.exe path: apps/desktop/dist/Bitwarden-Portable-${{ env._PACKAGE_VERSION }}.exe if-no-files-found: error - name: Upload installer exe artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-Installer-${{ env._PACKAGE_VERSION }}.exe path: apps/desktop/dist/nsis-web/Bitwarden-Installer-${{ env._PACKAGE_VERSION }}.exe if-no-files-found: error - name: Upload appx ia32 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-ia32.appx path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-ia32.appx if-no-files-found: error - name: Upload store appx ia32 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-ia32-store.appx path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-ia32-store.appx if-no-files-found: error - name: Upload NSIS ia32 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bitwarden-${{ env._PACKAGE_VERSION }}-ia32.nsis.7z path: apps/desktop/dist/nsis-web/bitwarden-${{ env._PACKAGE_VERSION }}-ia32.nsis.7z if-no-files-found: error - name: Upload appx x64 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-x64.appx path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x64.appx if-no-files-found: error - name: Upload store appx x64 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-x64-store.appx path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-x64-store.appx if-no-files-found: error - name: Upload NSIS x64 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bitwarden-${{ env._PACKAGE_VERSION }}-x64.nsis.7z path: apps/desktop/dist/nsis-web/bitwarden-${{ env._PACKAGE_VERSION }}-x64.nsis.7z if-no-files-found: error - name: Upload appx ARM64 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-arm64.appx path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-arm64.appx if-no-files-found: error - name: Upload store appx ARM64 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-arm64-store.appx path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-arm64-store.appx if-no-files-found: error - name: Upload NSIS ARM64 artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bitwarden-${{ env._PACKAGE_VERSION }}-arm64.nsis.7z path: apps/desktop/dist/nsis-web/bitwarden-${{ env._PACKAGE_VERSION }}-arm64.nsis.7z if-no-files-found: error - name: Upload nupkg artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bitwarden.${{ env._PACKAGE_VERSION }}.nupkg path: apps/desktop/dist/chocolatey/bitwarden.${{ env._PACKAGE_VERSION }}.nupkg if-no-files-found: error - name: Upload auto-update artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: ${{ needs.setup.outputs.release-channel }}.yml path: apps/desktop/dist/nsis-web/${{ needs.setup.outputs.release-channel }}.yml @@ -397,33 +393,30 @@ jobs: macos-build: name: MacOS Build + # Note, this workflow is running on macOS 11 to maintain compatibility with macOS 10.15 Catalina, + # as the newer versions will case the native modules to be incompatible with older macOS systems + # This version should stay pinned until we drop support for macOS 10.15, or we drop the native modules runs-on: macos-11 needs: setup env: _PACKAGE_VERSION: ${{ needs.setup.outputs.release-version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} + NODE_OPTIONS: --max_old_space_size=4096 defaults: run: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: ref: ${{ needs.setup.outputs.branch-name }} - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Set Node options - run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Print environment run: | @@ -434,70 +427,78 @@ jobs: - name: Cache Build id: build-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Cache Safari id: safari-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension - - name: Decrypt secrets + - name: Download Provisioning Profiles secrets env: - DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }} + ACCOUNT_NAME: bitwardenci + CONTAINER_NAME: profiles run: | mkdir -p $HOME/secrets - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden-desktop-key.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden-desktop-key.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/macdev-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/macdev-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden_desktop_appstore.provisionprofile" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg" + + az storage blob download --account-name $ACCOUNT_NAME --container-name $CONTAINER_NAME \ + --name bitwarden_desktop_appstore.provisionprofile \ + --file $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + --output none + + - name: Get certificates + run: | + mkdir -p $HOME/certificates + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/bitwarden-desktop-key | + jq -r .value | base64 -d > $HOME/certificates/bitwarden-desktop-key.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-app-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-app-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | + jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 - name: Set up keychain env: KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} - DESKTOP_KEY_PASSWORD: ${{ secrets.DESKTOP_KEY_PASSWORD }} - DEVID_CERT_PASSWORD: ${{ secrets.DEVID_CERT_PASSWORD }} - APPSTORE_CERT_PASSWORD: ${{ secrets.APPSTORE_CERT_PASSWORD }} - MACDEV_CERT_PASSWORD: ${{ secrets.MACDEV_CERT_PASSWORD }} - APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain security set-keychain-settings -lut 1200 build.keychain - security import "$HOME/secrets/bitwarden-desktop-key.p12" -k build.keychain -P $DESKTOP_KEY_PASSWORD \ + security import "$HOME/certificates/bitwarden-desktop-key.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-app-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-installer-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-app-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-installer-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/macdev-cert.p12" -k build.keychain -P $MACDEV_CERT_PASSWORD \ + + security import "$HOME/certificates/macdev-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain - name: Set up provisioning profiles @@ -524,35 +525,32 @@ jobs: macos-package-github: name: MacOS Package GitHub Release Assets + # Note, this workflow is running on macOS 11 to maintain compatibility with macOS 10.15 Catalina, + # as the newer versions will case the native modules to be incompatible with older macOS systems + # This version should stay pinned until we drop support for macOS 10.15, or we drop the native modules runs-on: macos-11 needs: - setup - macos-build env: _PACKAGE_VERSION: ${{ needs.setup.outputs.release-version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} + NODE_OPTIONS: --max_old_space_size=4096 defaults: run: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: ref: ${{ needs.setup.outputs.branch-name }} - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Set Node options - run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Print environment run: | @@ -563,70 +561,84 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension - - name: Decrypt secrets + - name: Login to Azure + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + + - name: Download Provisioning Profiles secrets env: - DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }} + ACCOUNT_NAME: bitwardenci + CONTAINER_NAME: profiles run: | mkdir -p $HOME/secrets - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden-desktop-key.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden-desktop-key.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/macdev-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/macdev-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden_desktop_appstore.provisionprofile" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg" + + az storage blob download --account-name $ACCOUNT_NAME --container-name $CONTAINER_NAME \ + --name bitwarden_desktop_appstore.provisionprofile \ + --file $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + --output none + + - name: Get certificates + run: | + mkdir -p $HOME/certificates + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/bitwarden-desktop-key | + jq -r .value | base64 -d > $HOME/certificates/bitwarden-desktop-key.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-app-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-app-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | + jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 - name: Set up keychain env: KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} - DESKTOP_KEY_PASSWORD: ${{ secrets.DESKTOP_KEY_PASSWORD }} - DEVID_CERT_PASSWORD: ${{ secrets.DEVID_CERT_PASSWORD }} - APPSTORE_CERT_PASSWORD: ${{ secrets.APPSTORE_CERT_PASSWORD }} - MACDEV_CERT_PASSWORD: ${{ secrets.MACDEV_CERT_PASSWORD }} - APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain security set-keychain-settings -lut 1200 build.keychain - security import "$HOME/secrets/bitwarden-desktop-key.p12" -k build.keychain -P $DESKTOP_KEY_PASSWORD \ + + security import "$HOME/certificates/bitwarden-desktop-key.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-app-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-installer-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-app-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-installer-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/macdev-cert.p12" -k build.keychain -P $MACDEV_CERT_PASSWORD \ + + security import "$HOME/certificates/macdev-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain - name: Set up provisioning profiles @@ -653,7 +665,7 @@ jobs: - name: Download artifact from hotfix-rc if: github.ref == 'refs/heads/hotfix-rc' - uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0 + uses: dawidd6/action-download-artifact@71072fbb1229e1317f1a8de6b04206afb461bd67 # v3.1.2 with: workflow: build-browser.yml workflow_conclusion: success @@ -662,20 +674,20 @@ jobs: - name: Download artifact from rc if: github.ref == 'refs/heads/rc' - uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0 + uses: dawidd6/action-download-artifact@71072fbb1229e1317f1a8de6b04206afb461bd67 # v3.1.2 with: workflow: build-browser.yml workflow_conclusion: success branch: rc path: ${{ github.workspace }}/browser-build-artifacts - - name: Download artifact from master + - name: Download artifacts from main if: ${{ github.ref != 'refs/heads/rc' && github.ref != 'refs/heads/hotfix-rc' }} - uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0 + uses: dawidd6/action-download-artifact@71072fbb1229e1317f1a8de6b04206afb461bd67 # v3.1.2 with: workflow: build-browser.yml workflow_conclusion: success - branch: master + branch: main path: ${{ github.workspace }}/browser-build-artifacts - name: Unzip Safari artifact @@ -696,28 +708,28 @@ jobs: run: npm run pack:mac - name: Upload .zip artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-universal-mac.zip path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-universal-mac.zip if-no-files-found: error - name: Upload .dmg artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-universal.dmg path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-universal.dmg if-no-files-found: error - name: Upload .dmg blockmap artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-universal.dmg.blockmap path: apps/desktop/dist/Bitwarden-${{ env._PACKAGE_VERSION }}-universal.dmg.blockmap if-no-files-found: error - name: Upload auto-update artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: ${{ needs.setup.outputs.release-channel }}-mac.yml path: apps/desktop/dist/${{ needs.setup.outputs.release-channel }}-mac.yml @@ -726,35 +738,32 @@ jobs: macos-package-mas: name: MacOS Package Prod Release Asset + # Note, this workflow is running on macOS 11 to maintain compatibility with macOS 10.15 Catalina, + # as the newer versions will case the native modules to be incompatible with older macOS systems + # This version should stay pinned until we drop support for macOS 10.15, or we drop the native modules runs-on: macos-11 needs: - setup - macos-build env: _PACKAGE_VERSION: ${{ needs.setup.outputs.release-version }} + _NODE_VERSION: ${{ needs.setup.outputs.node_version }} + NODE_OPTIONS: --max_old_space_size=4096 defaults: run: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: ref: ${{ needs.setup.outputs.branch-name }} - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Set Node options - run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV - - - name: Install node-gyp - run: | - npm install -g node-gyp - node-gyp install $(node -v) + node-version: ${{ env._NODE_VERSION }} - name: Print environment run: | @@ -765,70 +774,79 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension - - name: Decrypt secrets + - name: Download Provisioning Profiles secrets env: - DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }} + ACCOUNT_NAME: bitwardenci + CONTAINER_NAME: profiles run: | mkdir -p $HOME/secrets - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden-desktop-key.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden-desktop-key.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/appstore-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/appstore-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-app-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-app-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/devid-installer-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/devid-installer-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/macdev-cert.p12" \ - "$GITHUB_WORKSPACE/.github/secrets/macdev-cert.p12.gpg" - gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ - --output "$HOME/secrets/bitwarden_desktop_appstore.provisionprofile" \ - "$GITHUB_WORKSPACE/.github/secrets/bitwarden_desktop_appstore.provisionprofile.gpg" + + az storage blob download --account-name $ACCOUNT_NAME --container-name $CONTAINER_NAME \ + --name bitwarden_desktop_appstore.provisionprofile \ + --file $HOME/secrets/bitwarden_desktop_appstore.provisionprofile \ + --output none + + - name: Get certificates + run: | + mkdir -p $HOME/certificates + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/bitwarden-desktop-key | + jq -r .value | base64 -d > $HOME/certificates/bitwarden-desktop-key.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-app-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/appstore-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/appstore-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-app-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | + jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 - name: Set up keychain env: KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} - DESKTOP_KEY_PASSWORD: ${{ secrets.DESKTOP_KEY_PASSWORD }} - DEVID_CERT_PASSWORD: ${{ secrets.DEVID_CERT_PASSWORD }} - APPSTORE_CERT_PASSWORD: ${{ secrets.APPSTORE_CERT_PASSWORD }} - MACDEV_CERT_PASSWORD: ${{ secrets.MACDEV_CERT_PASSWORD }} - APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} run: | security create-keychain -p $KEYCHAIN_PASSWORD build.keychain security default-keychain -s build.keychain security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain security set-keychain-settings -lut 1200 build.keychain - security import "$HOME/secrets/bitwarden-desktop-key.p12" -k build.keychain -P $DESKTOP_KEY_PASSWORD \ + + security import "$HOME/certificates/bitwarden-desktop-key.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-app-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/devid-installer-cert.p12" -k build.keychain -P $DEVID_CERT_PASSWORD \ + + security import "$HOME/certificates/devid-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-app-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-app-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/appstore-installer-cert.p12" -k build.keychain -P $APPSTORE_CERT_PASSWORD \ + + security import "$HOME/certificates/appstore-installer-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - security import "$HOME/secrets/macdev-cert.p12" -k build.keychain -P $MACDEV_CERT_PASSWORD \ + + security import "$HOME/certificates/macdev-cert.p12" -k build.keychain -P "" \ -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain - name: Set up provisioning profiles @@ -855,7 +873,7 @@ jobs: - name: Download artifact from hotfix-rc if: github.ref == 'refs/heads/hotfix-rc' - uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0 + uses: dawidd6/action-download-artifact@71072fbb1229e1317f1a8de6b04206afb461bd67 # v3.1.2 with: workflow: build-browser.yml workflow_conclusion: success @@ -864,20 +882,20 @@ jobs: - name: Download artifact from rc if: github.ref == 'refs/heads/rc' - uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0 + uses: dawidd6/action-download-artifact@71072fbb1229e1317f1a8de6b04206afb461bd67 # v3.1.2 with: workflow: build-browser.yml workflow_conclusion: success branch: rc path: ${{ github.workspace }}/browser-build-artifacts - - name: Download artifact from master + - name: Download artifact from main if: ${{ github.ref != 'refs/heads/rc' && github.ref != 'refs/heads/hotfix-rc' }} - uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0 + uses: dawidd6/action-download-artifact@71072fbb1229e1317f1a8de6b04206afb461bd67 # v3.1.2 with: workflow: build-browser.yml workflow_conclusion: success - branch: master + branch: main path: ${{ github.workspace }}/browser-build-artifacts - name: Unzip Safari artifact @@ -898,7 +916,7 @@ jobs: APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} - name: Upload .pkg artifact - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: Bitwarden-${{ env._PACKAGE_VERSION }}-universal.pkg path: apps/desktop/dist/mas-universal/Bitwarden-${{ env._PACKAGE_VERSION }}-universal.pkg @@ -906,7 +924,7 @@ jobs: release: name: Release beta channel to S3 - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: - setup - linux @@ -916,7 +934,7 @@ jobs: - macos-package-mas steps: - name: Create GitHub deployment - uses: chrnorm/deployment-action@d42cde7132fcec920de534fffc3be83794335c00 # v2.0.5 + uses: chrnorm/deployment-action@55729fcebec3d284f60f5bcabbd8376437d696b1 # v2.0.7 id: deployment with: token: '${{ secrets.GITHUB_TOKEN }}' @@ -926,13 +944,13 @@ jobs: task: release - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "aws-electron-access-id, @@ -944,7 +962,7 @@ jobs: cf-prod-account" - name: Download all artifacts - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: path: apps/desktop/artifacts @@ -983,7 +1001,7 @@ jobs: - name: Update deployment status to Success if: ${{ success() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'success' @@ -991,7 +1009,7 @@ jobs: - name: Update deployment status to Failure if: ${{ failure() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'failure' @@ -999,7 +1017,7 @@ jobs: remove-branch: name: Remove branch - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 if: always() needs: - setup @@ -1011,7 +1029,7 @@ jobs: - release steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Setup git config run: | diff --git a/.github/workflows/release-desktop.yml b/.github/workflows/release-desktop.yml index 2dc8bb3b31..cf857d7177 100644 --- a/.github/workflows/release-desktop.yml +++ b/.github/workflows/release-desktop.yml @@ -30,12 +30,12 @@ on: default: true type: boolean electron_publish: - description: 'Publish electron to S3 bucket' + description: 'Publish Electron to S3 bucket' required: true default: true type: boolean github_release: - description: 'Publish github release' + description: 'Publish GitHub release' required: true default: true type: boolean @@ -47,13 +47,13 @@ defaults: jobs: setup: name: Setup - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 outputs: release-version: ${{ steps.version.outputs.version }} release-channel: ${{ steps.release-channel.outputs.channel }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Branch check if: ${{ github.event.inputs.release_type != 'Dry Run' }} @@ -67,9 +67,9 @@ jobs: - name: Check Release Version id: version - uses: bitwarden/gh-actions/release-version-check@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/release-version-check@main with: - release-type: ${{ github.event.inputs.release_type }} + release-type: ${{ inputs.release_type }} project-type: ts file: apps/desktop/src/package.json monorepo: true @@ -94,7 +94,7 @@ jobs: - name: Create GitHub deployment if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: chrnorm/deployment-action@d42cde7132fcec920de534fffc3be83794335c00 # v2.0.5 + uses: chrnorm/deployment-action@55729fcebec3d284f60f5bcabbd8376437d696b1 # v2.0.7 id: deployment with: token: '${{ secrets.GITHUB_TOKEN }}' @@ -104,13 +104,13 @@ jobs: task: release - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "aws-electron-access-id, @@ -123,7 +123,7 @@ jobs: - name: Download all artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-desktop.yml workflow_conclusion: success @@ -132,11 +132,11 @@ jobs: - name: Dry Run - Download all artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-desktop.yml workflow_conclusion: success - branch: master + branch: main path: apps/desktop/artifacts - name: Rename .pkg to .pkg.archive @@ -146,17 +146,17 @@ jobs: run: mv Bitwarden-${{ env.PKG_VERSION }}-universal.pkg Bitwarden-${{ env.PKG_VERSION }}-universal.pkg.archive - name: Set staged rollout percentage - if: ${{ github.event.inputs.electron_publish }} + if: ${{ github.event.inputs.electron_publish == 'true' }} env: RELEASE_CHANNEL: ${{ steps.release-channel.outputs.channel }} - ROLLOUT_PCT: ${{ github.event.inputs.rollout_percentage }} + ROLLOUT_PCT: ${{ inputs.rollout_percentage }} run: | echo "stagingPercentage: ${ROLLOUT_PCT}" >> apps/desktop/artifacts/${RELEASE_CHANNEL}.yml echo "stagingPercentage: ${ROLLOUT_PCT}" >> apps/desktop/artifacts/${RELEASE_CHANNEL}-linux.yml echo "stagingPercentage: ${ROLLOUT_PCT}" >> apps/desktop/artifacts/${RELEASE_CHANNEL}-mac.yml - name: Publish artifacts to S3 - if: ${{ github.event.inputs.release_type != 'Dry Run' && github.event.inputs.electron_publish }} + if: ${{ github.event.inputs.release_type != 'Dry Run' && github.event.inputs.electron_publish == 'true' }} env: AWS_ACCESS_KEY_ID: ${{ steps.retrieve-secrets.outputs.aws-electron-access-id }} AWS_SECRET_ACCESS_KEY: ${{ steps.retrieve-secrets.outputs.aws-electron-access-key }} @@ -170,7 +170,7 @@ jobs: --quiet - name: Publish artifacts to R2 - if: ${{ github.event.inputs.release_type != 'Dry Run' && github.event.inputs.electron_publish }} + if: ${{ github.event.inputs.release_type != 'Dry Run' && github.event.inputs.electron_publish == 'true' }} env: AWS_ACCESS_KEY_ID: ${{ steps.retrieve-secrets.outputs.r2-electron-access-id }} AWS_SECRET_ACCESS_KEY: ${{ steps.retrieve-secrets.outputs.r2-electron-access-key }} @@ -185,14 +185,14 @@ jobs: --endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com - name: Get checksum files - uses: bitwarden/gh-actions/get-checksum@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-checksum@main with: packages_dir: "apps/desktop/artifacts" file_path: "apps/desktop/artifacts/sha256-checksums.txt" - name: Create Release - uses: ncipollo/release-action@a2e71bdd4e7dab70ca26a852f29600c98b33153e # v1.12.0 - if: ${{ steps.release-channel.outputs.channel == 'latest' && github.event.inputs.release_type != 'Dry Run' && inputs.github_release }} + uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5 # v1.14.0 + if: ${{ steps.release-channel.outputs.channel == 'latest' && github.event.inputs.release_type != 'Dry Run' && github.event.inputs.github_release == 'true' }} env: PKG_VERSION: ${{ steps.version.outputs.version }} RELEASE_CHANNEL: ${{ steps.release-channel.outputs.channel }} @@ -231,7 +231,7 @@ jobs: - name: Update deployment status to Success if: ${{ github.event.inputs.release_type != 'Dry Run' && success() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'success' @@ -239,7 +239,7 @@ jobs: - name: Update deployment status to Failure if: ${{ github.event.inputs.release_type != 'Dry Run' && failure() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'failure' @@ -247,31 +247,29 @@ jobs: snap: name: Deploy Snap - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: setup - if: inputs.snap_publish + if: ${{ github.event.inputs.snap_publish == 'true' }} env: _PKG_VERSION: ${{ needs.setup.outputs.release-version }} steps: - name: Checkout Repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "snapcraft-store-token" - name: Install Snap uses: samuelmeuli/action-snapcraft@d33c176a9b784876d966f80fb1b461808edc0641 # v2.1.1 - env: - SNAPCRAFT_STORE_CREDENTIALS: ${{ steps.retrieve-secrets.outputs.snapcraft-store-token }} - name: Setup run: mkdir dist @@ -279,7 +277,7 @@ jobs: - name: Download Snap artifact if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-desktop.yml workflow_conclusion: success @@ -289,11 +287,11 @@ jobs: - name: Dry Run - Download Snap artifact if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-desktop.yml workflow_conclusion: success - branch: master + branch: main artifacts: bitwarden_${{ env._PKG_VERSION }}_amd64.snap path: apps/desktop/dist @@ -302,20 +300,20 @@ jobs: env: SNAPCRAFT_STORE_CREDENTIALS: ${{ steps.retrieve-secrets.outputs.snapcraft-store-token }} run: | - /snap/bin/snapcraft upload bitwarden_${{ env._PKG_VERSION }}_amd64.snap --release stable - /snap/bin/snapcraft logout + snapcraft upload bitwarden_${{ env._PKG_VERSION }}_amd64.snap --release stable + snapcraft logout working-directory: apps/desktop/dist choco: name: Deploy Choco - runs-on: windows-2019 + runs-on: windows-2022 needs: setup - if: inputs.choco_publish + if: ${{ github.event.inputs.choco_publish == 'true' }} env: _PKG_VERSION: ${{ needs.setup.outputs.release-version }} steps: - name: Checkout Repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Print Environment run: | @@ -323,13 +321,13 @@ jobs: dotnet nuget --version - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "cli-choco-api-key" @@ -347,7 +345,7 @@ jobs: - name: Download choco artifact if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-desktop.yml workflow_conclusion: success @@ -357,11 +355,11 @@ jobs: - name: Dry Run - Download choco artifact if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-desktop.yml workflow_conclusion: success - branch: master + branch: main artifacts: bitwarden.${{ env._PKG_VERSION }}.nupkg path: apps/desktop/dist diff --git a/.github/workflows/release-web.yml b/.github/workflows/release-web.yml index 601d788449..2da6daaa19 100644 --- a/.github/workflows/release-web.yml +++ b/.github/workflows/release-web.yml @@ -15,16 +15,19 @@ on: - Redeploy - Dry Run +env: + _AZ_REGISTRY: bitwardenprod.azurecr.io + jobs: setup: name: Setup - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 outputs: release_version: ${{ steps.version.outputs.version }} tag_version: ${{ steps.version.outputs.tag }} steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Branch check if: ${{ github.event.inputs.release_type != 'Dry Run' }} @@ -38,7 +41,7 @@ jobs: - name: Check Release Version id: version - uses: bitwarden/gh-actions/release-version-check@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/release-version-check@main with: release-type: ${{ github.event.inputs.release_type }} project-type: ts @@ -46,10 +49,9 @@ jobs: monorepo: true monorepo-project: web - self-host: name: Release self-host docker - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: setup env: _BRANCH_NAME: ${{ github.ref_name }} @@ -65,195 +67,74 @@ jobs: echo "Github Release Option: $_RELEASE_OPTION" - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - ########## DockerHub ########## - - name: Setup DCT - id: setup-dct - uses: bitwarden/gh-actions/setup-docker-trust@a30e9c3d658dc97c4c2e61ec749fdab64b83386c - with: - azure-creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - azure-keyvault-name: "bitwarden-ci" - - - name: Pull branch image - run: | - if [[ "${{ github.event.inputs.release_type }}" == "Dry Run" ]]; then - docker pull bitwarden/web:latest - else - docker pull bitwarden/web:$_BRANCH_NAME - fi - - - name: Docker Tag version - run: | - if [[ "${{ github.event.inputs.release_type }}" == "Dry Run" ]]; then - docker tag bitwarden/web:latest bitwarden/web:$_RELEASE_VERSION - else - docker tag bitwarden/web:$_BRANCH_NAME bitwarden/web:$_RELEASE_VERSION - fi - - - name: Docker Push version - if: ${{ github.event.inputs.release_type != 'Dry Run' }} - env: - DOCKER_CONTENT_TRUST: 1 - DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE: ${{ steps.setup-dct.outputs.dct-delegate-repo-passphrase }} - run: docker push bitwarden/web:$_RELEASE_VERSION - - - name: Log out of Docker and disable Docker Notary - run: | - docker logout - echo "DOCKER_CONTENT_TRUST=0" >> $GITHUB_ENV + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 ########## ACR ########## - name: Login to Azure - PROD Subscription - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} - name: Login to Azure ACR run: az acr login -n bitwardenprod - - name: Tag version - env: - REGISTRY: bitwardenprod.azurecr.io + - name: Pull branch image run: | if [[ "${{ github.event.inputs.release_type }}" == "Dry Run" ]]; then - docker tag bitwarden/web:latest $REGISTRY/web:$_RELEASE_VERSION - - docker tag bitwarden/web:latest $REGISTRY/web-sh:$_RELEASE_VERSION + docker pull $_AZ_REGISTRY/web:latest else - docker tag bitwarden/web:$_BRANCH_NAME $REGISTRY/web:$_RELEASE_VERSION + docker pull $_AZ_REGISTRY/web:$_BRANCH_NAME + fi - docker tag bitwarden/web:$_BRANCH_NAME $REGISTRY/web-sh:$_RELEASE_VERSION + - name: Tag version + run: | + if [[ "${{ github.event.inputs.release_type }}" == "Dry Run" ]]; then + docker tag $_AZ_REGISTRY/web:latest $_AZ_REGISTRY/web:dryrun + docker tag $_AZ_REGISTRY/web:latest $_AZ_REGISTRY/web-sh:dryrun + else + docker tag $_AZ_REGISTRY/web:$_BRANCH_NAME $_AZ_REGISTRY/web:$_RELEASE_VERSION + docker tag $_AZ_REGISTRY/web:$_BRANCH_NAME $_AZ_REGISTRY/web-sh:$_RELEASE_VERSION + docker tag $_AZ_REGISTRY/web:$_BRANCH_NAME $_AZ_REGISTRY/web:latest + docker tag $_AZ_REGISTRY/web:$_BRANCH_NAME $_AZ_REGISTRY/web-sh:latest fi - name: Push version - if: ${{ github.event.inputs.release_type != 'Dry Run' }} - env: - REGISTRY: bitwardenprod.azurecr.io run: | - docker push $REGISTRY/web:$_RELEASE_VERSION - - docker push $REGISTRY/web-sh:$_RELEASE_VERSION + if [[ "${{ github.event.inputs.release_type }}" == "Dry Run" ]]; then + docker push $_AZ_REGISTRY/web:dryrun + docker push $_AZ_REGISTRY/web-sh:dryrun + else + docker push $_AZ_REGISTRY/web:$_RELEASE_VERSION + docker push $_AZ_REGISTRY/web-sh:$_RELEASE_VERSION + docker push $_AZ_REGISTRY/web:latest + docker push $_AZ_REGISTRY/web-sh:latest + fi - name: Log out of Docker run: docker logout - - ghpages-deploy: - name: Deploy to GitHub Pages - runs-on: ubuntu-20.04 - needs: - - setup - env: - _RELEASE_VERSION: ${{ needs.setup.outputs.release_version }} - _TAG_VERSION: ${{ needs.setup.outputs.tag_version }} - _BRANCH: "v${{ needs.setup.outputs.release_version }}-deploy" - steps: - - name: Login to Azure - CI Subscription - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 - with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - - - name: Retrieve bot secrets - id: retrieve-bot-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c - with: - keyvault: bitwarden-ci - secrets: "github-pat-bitwarden-devops-bot-repo-scope" - - - name: Checkout GH pages repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - with: - repository: bitwarden/web-vault-pages - path: ghpages-deployment - token: ${{ steps.retrieve-bot-secrets.outputs.github-pat-bitwarden-devops-bot-repo-scope }} - - - name: Download latest cloud asset - if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c - with: - workflow: build-web.yml - path: assets - workflow_conclusion: success - branch: ${{ github.ref_name }} - artifacts: web-*-cloud-COMMERCIAL.zip - - - name: Dry Run - Download latest cloud asset - if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c - with: - workflow: build-web.yml - path: assets - workflow_conclusion: success - branch: master - artifacts: web-*-cloud-COMMERCIAL.zip - - - name: Unzip build asset - working-directory: assets - run: unzip web-*-cloud-COMMERCIAL.zip - - - name: Create new branch - run: | - cd ${{ github.workspace }}/ghpages-deployment - git config user.name = "GitHub Action Bot" - git config user.email = "<>" - git config --global url."https://github.com/".insteadOf ssh://git@github.com/ - git config --global url."https://".insteadOf ssh:// - git checkout -b ${_BRANCH} - - - name: Copy build files - run: | - rm -rf ${{ github.workspace }}/ghpages-deployment/* - cp -Rf ${{ github.workspace }}/assets/build/* ghpages-deployment/ - - - name: Commit and push changes - working-directory: ghpages-deployment - run: | - git add . - git commit -m "Deploy Web v${_RELEASE_VERSION} to GitHub Pages" - git push --set-upstream origin ${_BRANCH} --force - - - name: Create GitHub Pages Deploy PR - working-directory: ghpages-deployment - env: - GITHUB_TOKEN: ${{ steps.retrieve-bot-secrets.outputs.github-pat-bitwarden-devops-bot-repo-scope }} - run: | - if [[ "${{ github.event.inputs.release_type }}" == "Dry Run" ]]; then - gh pr create --title "Deploy v${_RELEASE_VERSION} to GitHub Pages" \ - --draft \ - --body "Deploying v${_RELEASE_VERSION}" \ - --base master \ - --head "${_BRANCH}" - else - gh pr create --title "Deploy v${_RELEASE_VERSION} to GitHub Pages" \ - --body "Deploying v${_RELEASE_VERSION}" \ - --base master \ - --head "${_BRANCH}" - fi - release: name: Create GitHub Release - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: - setup - self-host - - ghpages-deploy steps: - name: Create GitHub deployment if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: chrnorm/deployment-action@d42cde7132fcec920de534fffc3be83794335c00 # v2.0.5 + uses: chrnorm/deployment-action@55729fcebec3d284f60f5bcabbd8376437d696b1 # v2.0.7 id: deployment with: token: '${{ secrets.GITHUB_TOKEN }}' initial-status: 'in_progress' environment-url: http://vault.bitwarden.com - environment: 'Web Vault - Production' + environment: 'Web Vault - US Production Cloud' description: 'Deployment ${{ needs.setup.outputs.release_version }} from branch ${{ github.ref_name }}' task: release - name: Download latest build artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-web.yml path: apps/web/artifacts @@ -264,12 +145,12 @@ jobs: - name: Dry Run - Download latest build artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/download-artifacts@main with: workflow: build-web.yml path: apps/web/artifacts workflow_conclusion: success - branch: master + branch: main artifacts: "web-*-selfhosted-COMMERCIAL.zip, web-*-selfhosted-open-source.zip" @@ -281,7 +162,7 @@ jobs: - name: Create release if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: ncipollo/release-action@a2e71bdd4e7dab70ca26a852f29600c98b33153e # v1.12.0 + uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5 # v1.14.0 with: name: "Web v${{ needs.setup.outputs.release_version }}" commit: ${{ github.sha }} @@ -294,7 +175,7 @@ jobs: - name: Update deployment status to Success if: ${{ github.event.inputs.release_type != 'Dry Run' && success() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' environment-url: http://vault.bitwarden.com @@ -303,7 +184,7 @@ jobs: - name: Update deployment status to Failure if: ${{ github.event.inputs.release_type != 'Dry Run' && failure() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' environment-url: http://vault.bitwarden.com diff --git a/.github/workflows/scan.yml b/.github/workflows/scan.yml new file mode 100644 index 0000000000..9aa6745faa --- /dev/null +++ b/.github/workflows/scan.yml @@ -0,0 +1,78 @@ +name: Scan + +on: + workflow_dispatch: + push: + branches: + - "main" + - "rc" + - "hotfix-rc" + pull_request_target: + types: [opened, synchronize] + +jobs: + check-run: + name: Check PR run + uses: bitwarden/gh-actions/.github/workflows/check-run.yml@main + + sast: + name: SAST scan + runs-on: ubuntu-22.04 + needs: check-run + permissions: + contents: read + pull-requests: write + security-events: write + + steps: + - name: Check out repo + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + ref: ${{ github.event.pull_request.head.sha }} + + - name: Scan with Checkmarx + uses: checkmarx/ast-github-action@749fec53e0db0f6404a97e2e0807c3e80e3583a7 #2.0.23 + env: + INCREMENTAL: "${{ contains(github.event_name, 'pull_request') && '--sast-incremental' || '' }}" + with: + project_name: ${{ github.repository }} + cx_tenant: ${{ secrets.CHECKMARX_TENANT }} + base_uri: https://ast.checkmarx.net/ + cx_client_id: ${{ secrets.CHECKMARX_CLIENT_ID }} + cx_client_secret: ${{ secrets.CHECKMARX_SECRET }} + additional_params: | + --report-format sarif \ + --filter "state=TO_VERIFY;PROPOSED_NOT_EXPLOITABLE;CONFIRMED;URGENT" \ + --output-path . ${{ env.INCREMENTAL }} + + - name: Upload Checkmarx results to GitHub + uses: github/codeql-action/upload-sarif@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + with: + sarif_file: cx_result.sarif + + quality: + name: Quality scan + runs-on: ubuntu-22.04 + needs: check-run + permissions: + contents: read + pull-requests: write + + steps: + - name: Check out repo + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + fetch-depth: 0 + ref: ${{ github.event.pull_request.head.sha }} + + - name: Scan with SonarCloud + uses: sonarsource/sonarcloud-github-action@49e6cd3b187936a73b8280d59ffd9da69df63ec9 # v2.1.1 + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + args: > + -Dsonar.organization=${{ github.repository_owner }} + -Dsonar.projectKey=${{ github.repository_owner }}_${{ github.event.repository.name }} + -Dsonar.test.inclusions=**/*.spec.ts + -Dsonar.tests=. diff --git a/.github/workflows/staged-rollout-desktop.yml b/.github/workflows/staged-rollout-desktop.yml index 477192b505..a5b5fc69b1 100644 --- a/.github/workflows/staged-rollout-desktop.yml +++ b/.github/workflows/staged-rollout-desktop.yml @@ -20,13 +20,13 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Login to Azure - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 with: creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" secrets: "aws-electron-access-id, diff --git a/.github/workflows/stale-bot.yml b/.github/workflows/stale-bot.yml index 98f3b9d172..4d3085ce00 100644 --- a/.github/workflows/stale-bot.yml +++ b/.github/workflows/stale-bot.yml @@ -8,10 +8,10 @@ on: jobs: stale: name: 'Check for stale issues and PRs' - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - name: 'Run stale action' - uses: actions/stale@1160a2240286f5da8ec72b1c0816ce2481aabf84 # v8.0.0 + uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0 with: stale-issue-label: 'needs-reply' stale-pr-label: 'needs-changes' @@ -27,4 +27,4 @@ jobs: If you’re still working on this, please respond here after you’ve made the changes we’ve requested and our team will re-open it for further review. - Please make sure to resolve any conflicts with the master branch before requesting another review. + Please make sure to resolve any conflicts with the main branch before requesting another review. diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 55363a329e..3c650d8a62 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,17 +3,12 @@ name: Run tests on: workflow_dispatch: + push: + branches: + - "main" + - "rc" + - "hotfix-rc-*" pull_request: - branches-ignore: - - 'l10n_master' - - 'cf-pages' - paths: - - 'apps/**' - - 'libs/**' - - '*' - - '!*.md' - - '!*.txt' - - '.github/workflows/test.yml' defaults: run: @@ -25,14 +20,21 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Get Node Version + id: retrieve-node-version + run: | + NODE_NVMRC=$(cat .nvmrc) + NODE_VERSION=${NODE_NVMRC/v/''} + echo "node_version=$NODE_VERSION" >> $GITHUB_OUTPUT - name: Set up Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' - node-version: '18' + node-version: ${{ steps.retrieve-node-version.outputs.node_version }} - name: Print environment run: | @@ -46,13 +48,13 @@ jobs: # Tests in apps/ are typechecked when their app is built, so we just do it here for libs/ # See https://bitwarden.atlassian.net/browse/EC-497 - name: Run typechecking - run: npm run test:types + run: npm run test:types --coverage - name: Run tests - run: npm run test + run: npm run test --coverage - name: Report test results - uses: dorny/test-reporter@c9b3d0e2bd2a4e96aaf424dbaa31c46b42318226 # v1.6.0 + uses: dorny/test-reporter@eaa763f6ffc21c7a37837f56cd5f9737f27fc6c8 # v1.8.0 if: always() with: name: Test Results @@ -60,6 +62,11 @@ jobs: reporter: jest-junit fail-on-error: true + - name: Upload to codecov.io + uses: codecov/codecov-action@54bcd8715eee62d40e33596ef5e8f0f48dbbccab # v4.1.0 + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + rust: name: rust - ${{ matrix.os }} runs-on: ${{ matrix.os || 'ubuntu-latest' }} @@ -82,7 +89,7 @@ jobs: sudo apt-get install -y gnome-keyring dbus-x11 - name: Checkout repo - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Build working-directory: ./apps/desktop/desktop_native diff --git a/.github/workflows/version-auto-bump.yml b/.github/workflows/version-auto-bump.yml index 2c13ec05b3..d0d028e570 100644 --- a/.github/workflows/version-auto-bump.yml +++ b/.github/workflows/version-auto-bump.yml @@ -1,49 +1,35 @@ --- -name: Version Auto Bump +name: Auto Bump Desktop Version on: push: tags: - desktop-v** -defaults: - run: - shell: bash - jobs: - setup: - name: "Setup" + bump-version: + name: Bump Desktop Version runs-on: ubuntu-22.04 - outputs: - version_number: ${{ steps.version.outputs.new-version }} steps: - - name: Checkout Branch - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - name: Login to Azure - CI Subscription + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - - name: Calculate bumped version - id: version + - name: Retrieve bot secrets + id: retrieve-bot-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: bitwarden-ci + secrets: "github-pat-bitwarden-devops-bot-repo-scope" + + - name: Trigger Version Bump workflow env: - RELEASE_TAG: ${{ github.ref }} + GH_TOKEN: ${{ steps.retrieve-bot-secrets.outputs.github-pat-bitwarden-devops-bot-repo-scope }} run: | - CURR_MAJOR=$(echo $RELEASE_TAG | sed -r 's/refs\/tags\/[a-z]*-v([0-9]{4}\.[0-9]{1,2})\.([0-9]{1,2})/\1/') - CURR_PATCH=$(echo $RELEASE_TAG | sed -r 's/refs\/tags\/[a-z]*-v([0-9]{4}\.[0-9]{1,2})\.([0-9]{1,2})/\2/') - echo "Current Major: $CURR_MAJOR" - echo "Current Patch: $CURR_PATCH" - - NEW_PATCH=$((CURR_PATCH+1)) - - echo "New patch: $NEW_PATCH" - - NEW_VER=$CURR_MAJOR.$NEW_PATCH - echo "New Version: $NEW_VER" - echo "new-version=$NEW_VER" >> $GITHUB_OUTPUT - - trigger_version_bump: - name: Bump version to ${{ needs.setup.outputs.version_number }} - needs: setup - uses: ./.github/workflows/version-bump.yml - secrets: - AZURE_PROD_KV_CREDENTIALS: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - with: - version_number: ${{ needs.setup.outputs.version_number }} - client: "Desktop" + echo '{"cut_rc_branch": "false", \ + "bump_browser": "false", \ + "bump_cli": "false", \ + "bump_desktop": "true", \ + "bump_web": "false"}' | \ + gh workflow run version-bump.yml --json --repo bitwarden/clients diff --git a/.github/workflows/version-bump.yml b/.github/workflows/version-bump.yml index f30a935c4b..246ca9a533 100644 --- a/.github/workflows/version-bump.yml +++ b/.github/workflows/version-bump.yml @@ -4,141 +4,391 @@ name: Version Bump on: workflow_dispatch: inputs: - client: - description: "Client Project" - required: true - type: choice - options: - - Browser - - CLI - - Desktop - - Web - - All - version_number: - description: "New Version" - required: true - - workflow_call: - inputs: - version_number: - required: true + bump_browser: + description: "Bump Browser?" + type: boolean + default: false + bump_cli: + description: "Bump CLI?" + type: boolean + default: false + bump_desktop: + description: "Bump Desktop?" + type: boolean + default: false + bump_web: + description: "Bump Web?" + type: boolean + default: false + version_number_override: + description: "New version override (leave blank for automatic calculation, example: '2024.1.0')" + required: false type: string - client: - required: true - type: string - secrets: - AZURE_PROD_KV_CREDENTIALS: - required: true - -defaults: - run: - shell: bash + cut_rc_branch: + description: "Cut RC branch?" + default: true + type: boolean jobs: bump_version: - name: "Bump ${{ github.event.inputs.client }} Version" - runs-on: ubuntu-20.04 + name: Bump Version + runs-on: ubuntu-22.04 + outputs: + version_browser: ${{ steps.set-final-version-output.outputs.version_browser }} + version_cli: ${{ steps.set-final-version-output.outputs.version_cli }} + version_desktop: ${{ steps.set-final-version-output.outputs.version_desktop }} + version_web: ${{ steps.set-final-version-output.outputs.version_web }} steps: - - name: Checkout Branch - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - - name: Login to Azure - Prod Subscription - uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7 + - name: Validate version input + if: ${{ inputs.version_number_override != '' }} + uses: bitwarden/gh-actions/version-check@main with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + version: ${{ inputs.version_number_override }} + + - name: Checkout Branch + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + ref: main + + - name: Check if RC branch exists + if: ${{ inputs.cut_rc_branch == true }} + run: | + remote_rc_branch_check=$(git ls-remote --heads origin rc | wc -l) + if [[ "${remote_rc_branch_check}" -gt 0 ]]; then + echo "Remote RC branch exists." + echo "Please delete current RC branch before running again." + exit 1 + fi + + - name: Login to Azure - CI Subscription + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: "bitwarden-ci" - secrets: "github-gpg-private-key, github-gpg-private-key-passphrase" + secrets: "github-gpg-private-key, + github-gpg-private-key-passphrase, + github-pat-bitwarden-devops-bot-repo-scope" - name: Import GPG key - uses: crazy-max/ghaction-import-gpg@72b6676b71ab476b77e676928516f6982eef7a41 # v5.3.0 + uses: crazy-max/ghaction-import-gpg@01dd5d3ca463c7f10f7f4f7b4f177225ac661ee4 # v6.1.0 with: gpg_private_key: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key }} passphrase: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key-passphrase }} git_user_signingkey: true git_commit_gpgsign: true - - name: Create Version Branch - id: branch - env: - CLIENT_NAME: ${{ github.event.inputs.client }} - VERSION: ${{ github.event.inputs.version_number }} + - name: Setup git run: | - CLIENT=$(python -c "print('$CLIENT_NAME'.lower())") - echo "client=$CLIENT" >> $GITHUB_OUTPUT + git config --local user.email "106330231+bitwarden-devops-bot@users.noreply.github.com" + git config --local user.name "bitwarden-devops-bot" - git switch -c ${CLIENT}_version_bump_${VERSION} + - name: Create Version Branch + id: create-branch + run: | + CLIENTS=() + if [[ ${{ inputs.bump_browser }} == true ]]; then + CLIENTS+=("browser") + fi + if [[ ${{ inputs.bump_cli }} == true ]]; then + CLIENTS+=("cli") + fi + if [[ ${{ inputs.bump_desktop }} == true ]]; then + CLIENTS+=("desktop") + fi + if [[ ${{ inputs.bump_web }} == true ]]; then + CLIENTS+=("web") + fi + printf -v joined '%s,' "${CLIENTS[@]}" + echo "client=${joined%,}" >> $GITHUB_OUTPUT + + NAME=version_bump_${{ github.ref_name }}_$(date +"%Y-%m-%d") + git switch -c $NAME + echo "name=$NAME" >> $GITHUB_OUTPUT ######################## # VERSION BUMP SECTION # ######################## ### Browser - - name: Bump Browser Version - if: ${{ github.event.inputs.client == 'Browser' || github.event.inputs.client == 'All' }} + - name: Get current Browser version + if: ${{ inputs.bump_browser == true }} + id: current-browser-version + run: | + CURRENT_VERSION=$(cat package.json | jq -r '.version') + echo "version=$CURRENT_VERSION" >> $GITHUB_OUTPUT + working-directory: apps/browser + + - name: Browser - Verify input version + if: ${{ inputs.bump_browser == true && inputs.version_number_override != '' }} env: - VERSION: ${{ github.event.inputs.version_number }} - run: npm version --workspace=@bitwarden/browser ${VERSION} + CURRENT_VERSION: ${{ steps.current-browser-version.outputs.version }} + NEW_VERSION: ${{ inputs.version_number_override }} + run: | + # Error if version has not changed. + if [[ "$NEW_VERSION" == "$CURRENT_VERSION" ]]; then + echo "Version has not changed." + exit 1 + fi - - name: Bump Browser Version - Manifest - if: ${{ github.event.inputs.client == 'Browser' || github.event.inputs.client == 'All' }} - uses: bitwarden/gh-actions/version-bump@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + # Check if version is newer. + printf '%s\n' "${CURRENT_VERSION}" "${NEW_VERSION}" | sort -C -V + if [ $? -eq 0 ]; then + echo "Version check successful." + else + echo "Version check failed." + exit 1 + fi + working-directory: apps/browser + + - name: Calculate next Browser release version + if: ${{ inputs.bump_browser == true && inputs.version_number_override == '' }} + id: calculate-next-browser-version + uses: bitwarden/gh-actions/version-next@main + with: + version: ${{ steps.current-browser-version.outputs.version }} + + - name: Bump Browser Version - Version Override + if: ${{ inputs.bump_browser == true && inputs.version_number_override != '' }} + id: bump-browser-version-override + run: npm version --workspace=@bitwarden/browser ${{ inputs.version_number_override }} + + - name: Bump Browser Version - Automatic Calculation + if: ${{ inputs.bump_browser == true && inputs.version_number_override == '' }} + id: bump-browser-version-automatic + env: + VERSION: ${{ steps.calculate-next-browser-version.outputs.version }} + run: npm version --workspace=@bitwarden/browser $VERSION + + - name: Bump Browser Version - Manifest - Version Override + if: ${{ inputs.bump_browser == true && inputs.version_number_override != '' }} + uses: bitwarden/gh-actions/version-bump@main with: - version: ${{ github.event.inputs.version_number }} file_path: "apps/browser/src/manifest.json" + version: ${{ inputs.version_number_override }} - - name: Bump Browser Version - Manifest v3 - if: ${{ github.event.inputs.client == 'Browser' || github.event.inputs.client == 'All' }} - uses: bitwarden/gh-actions/version-bump@a30e9c3d658dc97c4c2e61ec749fdab64b83386c + - name: Bump Browser Version - Manifest - Automatic Calculation + if: ${{ inputs.bump_browser == true && inputs.version_number_override == '' }} + uses: bitwarden/gh-actions/version-bump@main + with: + file_path: "apps/browser/src/manifest.json" + version: ${{ steps.calculate-next-browser-version.outputs.version }} + + - name: Bump Browser Version - Manifest v3 - Version Override + if: ${{ inputs.bump_browser == true && inputs.version_number_override != '' }} + uses: bitwarden/gh-actions/version-bump@main with: - version: ${{ github.event.inputs.version_number }} file_path: "apps/browser/src/manifest.v3.json" + version: ${{ inputs.version_number_override }} + + - name: Bump Browser Version - Manifest v3 - Automatic Calculation + if: ${{ inputs.bump_browser == true && inputs.version_number_override == '' }} + uses: bitwarden/gh-actions/version-bump@main + with: + file_path: "apps/browser/src/manifest.v3.json" + version: ${{ steps.calculate-next-browser-version.outputs.version }} - name: Run Prettier after Browser Version Bump - if: ${{ github.event.inputs.client == 'Browser' || github.event.inputs.client == 'All' }} + if: ${{ inputs.bump_browser == true }} run: | npm install -g prettier prettier --write apps/browser/src/manifest.json prettier --write apps/browser/src/manifest.v3.json ### CLI - - name: Bump CLI Version - if: ${{ github.event.inputs.client == 'CLI' || github.event.inputs.client == 'All' }} + - name: Get current CLI version + if: ${{ inputs.bump_cli == true }} + id: current-cli-version + run: | + CURRENT_VERSION=$(cat package.json | jq -r '.version') + echo "version=$CURRENT_VERSION" >> $GITHUB_OUTPUT + working-directory: apps/cli + + - name: CLI - Verify input version + if: ${{ inputs.bump_cli == true && inputs.version_number_override != '' }} env: - VERSION: ${{ github.event.inputs.version_number }} - run: npm version --workspace=@bitwarden/cli ${VERSION} + CURRENT_VERSION: ${{ steps.current-cli-version.outputs.version }} + NEW_VERSION: ${{ inputs.version_number_override }} + run: | + # Error if version has not changed. + if [[ "$NEW_VERSION" == "$CURRENT_VERSION" ]]; then + echo "Version has not changed." + exit 1 + fi + + # Check if version is newer. + printf '%s\n' "${CURRENT_VERSION}" "${NEW_VERSION}" | sort -C -V + if [ $? -eq 0 ]; then + echo "Version check successful." + else + echo "Version check failed." + exit 1 + fi + working-directory: apps/cli + + - name: Calculate next CLI release version + if: ${{ inputs.bump_cli == true && inputs.version_number_override == '' }} + id: calculate-next-cli-version + uses: bitwarden/gh-actions/version-next@main + with: + version: ${{ steps.current-cli-version.outputs.version }} + + - name: Bump CLI Version - Version Override + if: ${{ inputs.bump_cli == true && inputs.version_number_override != '' }} + id: bump-cli-version-override + run: npm version --workspace=@bitwarden/cli ${{ inputs.version_number_override }} + + - name: Bump CLI Version - Automatic Calculation + if: ${{ inputs.bump_cli == true && inputs.version_number_override == '' }} + id: bump-cli-version-automatic + env: + VERSION: ${{ steps.calculate-next-cli-version.outputs.version }} + run: npm version --workspace=@bitwarden/cli $VERSION ### Desktop - - name: Bump Desktop Version - Root - if: ${{ github.event.inputs.client == 'Desktop' || github.event.inputs.client == 'All' }} - env: - VERSION: ${{ github.event.inputs.version_number }} - run: npm version --workspace=@bitwarden/desktop ${VERSION} + - name: Get current Desktop version + if: ${{ inputs.bump_desktop == true }} + id: current-desktop-version + run: | + CURRENT_VERSION=$(cat package.json | jq -r '.version') + echo "version=$CURRENT_VERSION" >> $GITHUB_OUTPUT + working-directory: apps/desktop - - name: Bump Desktop Version - App - if: ${{ github.event.inputs.client == 'Desktop' || github.event.inputs.client == 'All' }} + - name: Desktop - Verify input version + if: ${{ inputs.bump_desktop == true && inputs.version_number_override != '' }} env: - VERSION: ${{ github.event.inputs.version_number }} - run: npm version ${VERSION} + CURRENT_VERSION: ${{ steps.current-desktop-version.outputs.version }} + NEW_VERSION: ${{ inputs.version_number_override }} + run: | + # Error if version has not changed. + if [[ "$NEW_VERSION" == "$CURRENT_VERSION" ]]; then + echo "Version has not changed." + exit 1 + fi + + # Check if version is newer. + printf '%s\n' "${CURRENT_VERSION}" "${NEW_VERSION}" | sort -C -V + if [ $? -eq 0 ]; then + echo "Version check successful." + else + echo "Version check failed." + exit 1 + fi + working-directory: apps/desktop + + - name: Calculate next Desktop release version + if: ${{ inputs.bump_desktop == true && inputs.version_number_override == '' }} + id: calculate-next-desktop-version + uses: bitwarden/gh-actions/version-next@main + with: + version: ${{ steps.current-desktop-version.outputs.version }} + + - name: Bump Desktop Version - Root - Version Override + if: ${{ inputs.bump_desktop == true && inputs.version_number_override != '' }} + id: bump-desktop-version-override + run: npm version --workspace=@bitwarden/desktop ${{ inputs.version_number_override }} + + - name: Bump Desktop Version - Root - Automatic Calculation + if: ${{ inputs.bump_desktop == true && inputs.version_number_override == '' }} + id: bump-desktop-version-automatic + env: + VERSION: ${{ steps.calculate-next-desktop-version.outputs.version }} + run: npm version --workspace=@bitwarden/desktop $VERSION + + - name: Bump Desktop Version - App - Version Override + if: ${{ inputs.bump_desktop == true && inputs.version_number_override != '' }} + run: npm version ${{ inputs.version_number_override }} + working-directory: "apps/desktop/src" + + - name: Bump Desktop Version - App - Automatic Calculation + if: ${{ inputs.bump_desktop == true && inputs.version_number_override == '' }} + env: + VERSION: ${{ steps.calculate-next-desktop-version.outputs.version }} + run: npm version $VERSION working-directory: "apps/desktop/src" ### Web - - name: Bump Web Version - if: ${{ github.event.inputs.client == 'Web' || github.event.inputs.client == 'All' }} + - name: Get current Web version + if: ${{ inputs.bump_web == true }} + id: current-web-version + run: | + CURRENT_VERSION=$(cat package.json | jq -r '.version') + echo "version=$CURRENT_VERSION" >> $GITHUB_OUTPUT + working-directory: apps/web + + - name: Web - Verify input version + if: ${{ inputs.bump_web == true && inputs.version_number_override != '' }} env: - VERSION: ${{ github.event.inputs.version_number }} - run: npm version --workspace=@bitwarden/web-vault ${VERSION} + CURRENT_VERSION: ${{ steps.current-web-version.outputs.version }} + NEW_VERSION: ${{ inputs.version_number_override }} + run: | + # Error if version has not changed. + if [[ "$NEW_VERSION" == "$CURRENT_VERSION" ]]; then + echo "Version has not changed." + exit 1 + fi + + # Check if version is newer. + printf '%s\n' "${CURRENT_VERSION}" "${NEW_VERSION}" | sort -C -V + if [ $? -eq 0 ]; then + echo "Version check successful." + else + echo "Version check failed." + exit 1 + fi + working-directory: apps/web + + - name: Calculate next Web release version + if: ${{ inputs.bump_web == true && inputs.version_number_override == '' }} + id: calculate-next-web-version + uses: bitwarden/gh-actions/version-next@main + with: + version: ${{ steps.current-web-version.outputs.version }} + + - name: Bump Web Version - Version Override + if: ${{ inputs.bump_web == true && inputs.version_number_override != '' }} + id: bump-web-version-override + run: npm version --workspace=@bitwarden/web-vault ${{ inputs.version_number_override }} + + - name: Bump Web Version - Automatic Calculation + if: ${{ inputs.bump_web == true && inputs.version_number_override == '' }} + id: bump-web-version-automatic + env: + VERSION: ${{ steps.calculate-next-web-version.outputs.version }} + run: npm version --workspace=@bitwarden/web-vault $VERSION ######################## - - name: Setup git + - name: Set final version output + id: set-final-version-output run: | - git config --local user.email "106330231+bitwarden-devops-bot@users.noreply.github.com" - git config --local user.name "bitwarden-devops-bot" + if [[ "${{ steps.bump-browser-version-override.outcome }}" = "success" ]]; then + echo "version_browser=${{ inputs.version_number_override }}" >> $GITHUB_OUTPUT + elif [[ "${{ steps.bump-browser-version-automatic.outcome }}" = "success" ]]; then + echo "version_browser=${{ steps.calculate-next-browser-version.outputs.version }}" >> $GITHUB_OUTPUT + fi + + if [[ "${{ steps.bump-cli-version-override.outcome }}" = "success" ]]; then + echo "version_cli=${{ inputs.version_number_override }}" >> $GITHUB_OUTPUT + elif [[ "${{ steps.bump-cli-version-automatic.outcome }}" = "success" ]]; then + echo "version_cli=${{ steps.calculate-next-cli-version.outputs.version }}" >> $GITHUB_OUTPUT + fi + + if [[ "${{ steps.bump-desktop-version-override.outcome }}" = "success" ]]; then + echo "version_desktop=${{ inputs.version_number_override }}" >> $GITHUB_OUTPUT + elif [[ "${{ steps.bump-desktop-version-automatic.outcome }}" = "success" ]]; then + echo "version_desktop=${{ steps.calculate-next-desktop-version.outputs.version }}" >> $GITHUB_OUTPUT + fi + + if [[ "${{ steps.bump-web-version-override.outcome }}" = "success" ]]; then + echo "version_web=${{ inputs.version_number_override }}" >> $GITHUB_OUTPUT + elif [[ "${{ steps.bump-web-version-automatic.outcome }}" = "success" ]]; then + echo "version_web=${{ steps.calculate-next-web-version.outputs.version }}" >> $GITHUB_OUTPUT + fi - name: Check if version changed id: version-changed @@ -153,27 +403,26 @@ jobs: - name: Commit files if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} env: - CLIENT: ${{ steps.branch.outputs.client }} - VERSION: ${{ github.event.inputs.version_number }} + CLIENT: ${{ steps.create-branch.outputs.client }} + VERSION: ${{ steps.set-final-version-output.outputs.version }} run: git commit -m "Bumped ${CLIENT} version to ${VERSION}" -a - name: Push changes if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} env: - CLIENT: ${{ steps.branch.outputs.client }} - VERSION: ${{ github.event.inputs.version_number }} - run: git push -u origin ${CLIENT}_version_bump_${VERSION} + PR_BRANCH: ${{ steps.create-branch.outputs.name }} + run: git push -u origin $PR_BRANCH - - name: Create Bump Version PR + - name: Create Version PR if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} + id: create-pr env: - PR_BRANCH: "${{ steps.branch.outputs.client }}_version_bump_${{ github.event.inputs.version_number }}" - GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" - BASE_BRANCH: master - TITLE: "Bump ${{ github.event.inputs.client }} version to ${{ github.event.inputs.version_number }}" + GH_TOKEN: ${{ steps.retrieve-secrets.outputs.github-pat-bitwarden-devops-bot-repo-scope }} + PR_BRANCH: ${{ steps.create-branch.outputs.name }} + TITLE: "Bump ${{ steps.create-branch.outputs.client }} version to ${{ steps.set-final-version-output.outputs.version }}" run: | - gh pr create --title "$TITLE" \ - --base "$BASE" \ + PR_URL=$(gh pr create --title "$TITLE" \ + --base "main" \ --head "$PR_BRANCH" \ --label "version update" \ --label "automated pr" \ @@ -186,5 +435,107 @@ jobs: - [X] Other ## Objective - Automated ${{ github.event.inputs.client }} version bump to ${{ github.event.inputs.version_number }}" + Automated ${{ steps.create-branch.outputs.client }} version bump to ${{ steps.set-final-version-output.outputs.version }}") + echo "pr_number=${PR_URL##*/}" >> $GITHUB_OUTPUT + - name: Approve PR + if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PR_NUMBER: ${{ steps.create-pr.outputs.pr_number }} + run: gh pr review $PR_NUMBER --approve + + - name: Merge PR + if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} + env: + GH_TOKEN: ${{ steps.retrieve-secrets.outputs.github-pat-bitwarden-devops-bot-repo-scope }} + PR_NUMBER: ${{ steps.create-pr.outputs.pr_number }} + run: gh pr merge $PR_NUMBER --squash --auto --delete-branch + + cut_rc: + name: Cut RC branch + if: ${{ inputs.cut_rc_branch == true }} + needs: bump_version + runs-on: ubuntu-22.04 + steps: + - name: Checkout Branch + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + ref: main + + ### Browser + - name: Browser - Verify version has been updated + if: ${{ inputs.bump_browser == true }} + env: + NEW_VERSION: ${{ needs.bump_version.outputs.version_browser }} + run: | + # Wait for version to change. + while : ; do + echo "Waiting for version to be updated..." + git pull --force + CURRENT_VERSION=$(cat package.json | jq -r '.version') + + # If the versions don't match we continue the loop, otherwise we break out of the loop. + [[ "$NEW_VERSION" != "$CURRENT_VERSION" ]] || break + sleep 10 + done + working-directory: apps/browser + + ### CLI + - name: CLI - Verify version has been updated + if: ${{ inputs.bump_cli == true }} + env: + NEW_VERSION: ${{ needs.bump_version.outputs.version_cli }} + run: | + # Wait for version to change. + while : ; do + echo "Waiting for version to be updated..." + git pull --force + CURRENT_VERSION=$(cat package.json | jq -r '.version') + + # If the versions don't match we continue the loop, otherwise we break out of the loop. + [[ "$NEW_VERSION" != "$CURRENT_VERSION" ]] || break + sleep 10 + done + working-directory: apps/cli + + ### Desktop + - name: Desktop - Verify version has been updated + if: ${{ inputs.bump_desktop == true }} + env: + NEW_VERSION: ${{ needs.bump_version.outputs.version_desktop }} + run: | + # Wait for version to change. + while : ; do + echo "Waiting for version to be updated..." + git pull --force + CURRENT_VERSION=$(cat package.json | jq -r '.version') + + # If the versions don't match we continue the loop, otherwise we break out of the loop. + [[ "$NEW_VERSION" != "$CURRENT_VERSION" ]] || break + sleep 10 + done + working-directory: apps/desktop + + ### Web + - name: Web - Verify version has been updated + if: ${{ inputs.bump_web == true }} + env: + NEW_VERSION: ${{ needs.bump_version.outputs.version_web }} + run: | + # Wait for version to change. + while : ; do + echo "Waiting for version to be updated..." + git pull --force + CURRENT_VERSION=$(cat package.json | jq -r '.version') + + # If the versions don't match we continue the loop, otherwise we break out of the loop. + [[ "$NEW_VERSION" != "$CURRENT_VERSION" ]] || break + sleep 10 + done + working-directory: apps/web + + - name: Cut RC branch + run: | + git switch --quiet --create rc + git push --quiet --set-upstream origin rc diff --git a/.github/workflows/workflow-linter.yml b/.github/workflows/workflow-linter.yml deleted file mode 100644 index 9dced5ee53..0000000000 --- a/.github/workflows/workflow-linter.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -name: Workflow Linter - -on: - pull_request: - paths: - - .github/workflows/** - -jobs: - call-workflow: - uses: bitwarden/gh-actions/.github/workflows/workflow-linter.yml@a30e9c3d658dc97c4c2e61ec749fdab64b83386c diff --git a/.gitignore b/.gitignore index 11a4d4c80f..6dea4b43f1 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,6 @@ junit.xml documentation.json .eslintcache storybook-static + +# Local app configuration +apps/**/config/local.json diff --git a/.husky/pre-commit b/.husky/pre-commit index 36af219892..2312dc587f 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - npx lint-staged diff --git a/.prettierignore b/.prettierignore index 986cadd3d5..cd8eb201f3 100644 --- a/.prettierignore +++ b/.prettierignore @@ -9,7 +9,6 @@ storybook-static # External libraries / auto synced locales apps/browser/src/_locales apps/browser/src/auth/scripts/duo.js -apps/browser/src/autofill/content/autofill.js apps/browser/src/safari apps/desktop/src/locales diff --git a/.storybook/main.ts b/.storybook/main.ts index a7f12f469b..c71a74c2a7 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -4,6 +4,7 @@ import remarkGfm from "remark-gfm"; const config: StorybookConfig = { stories: [ + "../libs/auth/src/**/*.stories.@(js|jsx|ts|tsx)", "../libs/components/src/**/*.mdx", "../libs/components/src/**/*.stories.@(js|jsx|ts|tsx)", "../apps/web/src/**/*.mdx", @@ -15,6 +16,8 @@ const config: StorybookConfig = { "@storybook/addon-links", "@storybook/addon-essentials", "@storybook/addon-a11y", + "@storybook/addon-designs", + "@storybook/addon-interactions", { name: "@storybook/addon-docs", options: { @@ -35,9 +38,7 @@ const config: StorybookConfig = { }, env: (config) => ({ ...config, - FLAGS: JSON.stringify({ - secretsManager: true, - }), + FLAGS: JSON.stringify({}), }), webpackFinal: async (config, { configType }) => { if (config.resolve) { diff --git a/.storybook/manager.js b/.storybook/manager.js new file mode 100644 index 0000000000..89a69bf942 --- /dev/null +++ b/.storybook/manager.js @@ -0,0 +1,63 @@ +import { addons } from "@storybook/addons"; +import { create } from "@storybook/theming/create"; + +const lightTheme = create({ + base: "light", + //logo and Title + brandTitle: "Bitwarden Component Library", + brandUrl: "/", + brandImage: + "https://github.com/bitwarden/brand/blob/51942f8d6e55e96a078a524e0f739efbf1997bcf/logos/logo-horizontal-blue.png?raw=true", + brandTarget: "_self", + + //Colors + colorPrimary: "#6D757E", + colorSecondary: "#175DDC", + + // UI + appBg: "#f9fBff", + appContentBg: "#ffffff", + appBorderColor: "#CED4DC", + + // Text colors + textColor: "#212529", + textInverseColor: "#ffffff", + + // Toolbar default and active colors + barTextColor: "#6D757E", + barSelectedColor: "#175DDC", + barBg: "#ffffff", + + // Form colors + inputBg: "#ffffff", + inputBorder: "#6D757E", + inputTextColor: "#6D757E", +}); + +const darkTheme = create({ + base: "dark", + + //logo and Title + brandTitle: "Bitwarden Component Library", + brandUrl: "/", + brandImage: + "https://github.com/bitwarden/brand/blob/51942f8d6e55e96a078a524e0f739efbf1997bcf/logos/logo-horizontal-white.png?raw=true", + brandTarget: "_self", + + //Colors + colorSecondary: "#6A99F0", + barSelectedColor: "#6A99F0", +}); + +export const getPreferredColorScheme = () => { + if (!globalThis || !globalThis.matchMedia) return "light"; + + const isDarkThemePreferred = globalThis.matchMedia("(prefers-color-scheme: dark)").matches; + if (isDarkThemePreferred) return "dark"; + + return "light"; +}; + +addons.setConfig({ + theme: getPreferredColorScheme() === "dark" ? darkTheme : lightTheme, +}); diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index 0bc9fc5bac..af20dcad74 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -48,7 +48,7 @@ const decorator = componentWrapperDecorator( }, ({ globals }) => { return { theme: `${globals["theme"]}` }; - } + }, ); const preview: Preview = { diff --git a/.vscode/settings.json b/.vscode/settings.json index 07423dd18b..27e3a9b293 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,9 @@ { - "cSpell.words": ["Csprng", "decryptable", "Popout", "Reprompt", "takeuntil"] + "cSpell.words": ["Csprng", "decryptable", "Popout", "Reprompt", "takeuntil"], + "search.exclude": { + "**/locales/[^e]*/messages.json": true, + "**/locales/*[^n]/messages.json": true, + "**/_locales/[^e]*/messages.json": true, + "**/_locales/*[^n]/messages.json": true + } } diff --git a/README.md b/README.md index df1f22a094..da31a2d489 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,12 @@

- Bitwarden + Bitwarden

- - Github Workflow browser build on master - - - Github Workflow CLI build on master - - - Github Workflow desktop build on master - - - Github Workflow web build on master - - - gitter chat - + GitHub Workflow browser build on main + GitHub Workflow CLI build on main + GitHub Workflow desktop build on main + GitHub Workflow web build on main + gitter chat

--- @@ -39,6 +29,6 @@ Interested in contributing in a big way? Consider joining our team! We're hiring # Contribute -Code contributions are welcome! Please commit any pull requests against the `master` branch. Learn more about how to contribute by reading the [Contributing Guidelines](https://contributing.bitwarden.com/contributing/). Check out the [Contributing Documentation](https://contributing.bitwarden.com/) for how to get started with your first contribution. +Code contributions are welcome! Please commit any pull requests against the `main` branch. Learn more about how to contribute by reading the [Contributing Guidelines](https://contributing.bitwarden.com/contributing/). Check out the [Contributing Documentation](https://contributing.bitwarden.com/) for how to get started with your first contribution. Security audits and feedback are welcome. Please open an issue or email us privately if the report is sensitive in nature. You can read our security policy in the [`SECURITY.md`](SECURITY.md) file. diff --git a/apps/browser/.eslintrc.json b/apps/browser/.eslintrc.json new file mode 100644 index 0000000000..ba96051183 --- /dev/null +++ b/apps/browser/.eslintrc.json @@ -0,0 +1,26 @@ +{ + "env": { + "browser": true, + "webextensions": true + }, + "overrides": [ + { + "files": ["src/**/*.ts"], + "excludedFiles": [ + "src/**/{content,popup,spec}/**/*.ts", + "src/**/autofill/{notification,overlay}/**/*.ts", + "src/**/autofill/**/{autofill-overlay-content,collect-autofill-content,dom-element-visibility,insert-autofill-content}.service.ts", + "src/**/*.spec.ts" + ], + "rules": { + "no-restricted-globals": [ + "error", + { + "name": "window", + "message": "The `window` object is not available in service workers and may not be available within the background script. Consider using `self`, `globalThis`, or another global property instead." + } + ] + } + } + ] +} diff --git a/apps/browser/.gitignore b/apps/browser/.gitignore index 7a689bdb9f..87b21b9730 100644 --- a/apps/browser/.gitignore +++ b/apps/browser/.gitignore @@ -1,3 +1,5 @@ +config/local.json + # Safari dist-safari !src/safari/safari/app/popup/index.html diff --git a/apps/browser/README.md b/apps/browser/README.md index 2cd1615a11..c99d0844a0 100644 --- a/apps/browser/README.md +++ b/apps/browser/README.md @@ -4,13 +4,13 @@ # Bitwarden Browser Extension - + - - + + The Bitwarden browser extension is written using the Web Extension API and Angular. diff --git a/apps/browser/config/base.json b/apps/browser/config/base.json index 81b11cd38b..8a3ccc14d3 100644 --- a/apps/browser/config/base.json +++ b/apps/browser/config/base.json @@ -1,6 +1,8 @@ { "dev_flags": {}, "flags": { - "showPasswordless": true + "showPasswordless": true, + "enableCipherKeyEncryption": false, + "accountSwitching": false } } diff --git a/apps/browser/config/development.json b/apps/browser/config/development.json index 972812a9c5..1b628c173c 100644 --- a/apps/browser/config/development.json +++ b/apps/browser/config/development.json @@ -6,6 +6,8 @@ } }, "flags": { - "showPasswordless": true + "showPasswordless": true, + "enableCipherKeyEncryption": false, + "accountSwitching": true } } diff --git a/apps/browser/config/production.json b/apps/browser/config/production.json index b04d1531a2..027003f6c7 100644 --- a/apps/browser/config/production.json +++ b/apps/browser/config/production.json @@ -1,3 +1,6 @@ { - "flags": {} + "flags": { + "enableCipherKeyEncryption": false, + "accountSwitching": true + } } diff --git a/apps/browser/gulpfile.js b/apps/browser/gulpfile.js index 2f672ffcdd..6a0980fc27 100644 --- a/apps/browser/gulpfile.js +++ b/apps/browser/gulpfile.js @@ -1,13 +1,11 @@ const child = require("child_process"); const fs = require("fs"); -const del = require("del"); +const { rimraf } = require("rimraf"); const gulp = require("gulp"); -const filter = require("gulp-filter"); const gulpif = require("gulp-if"); const jeditor = require("gulp-json-editor"); const replace = require("gulp-replace"); -const zip = require("gulp-zip"); const manifest = require("./src/manifest.json"); @@ -47,7 +45,10 @@ function distFileName(browserName, ext) { return `dist-${browserName}${buildString()}.${ext}`; } -function dist(browserName, manifest) { +async function dist(browserName, manifest) { + const { default: zip } = await import("gulp-zip"); + const { default: filter } = await import("gulp-filter"); + return gulp .src(paths.build + "**/*") .pipe(filter(["**"].concat(filters.fonts).concat(filters.safari))) @@ -60,6 +61,10 @@ function dist(browserName, manifest) { function distFirefox() { return dist("firefox", (manifest) => { delete manifest.storage; + delete manifest.sandbox; + manifest.optional_permissions = manifest.optional_permissions.filter( + (permission) => permission !== "privacy", + ); return manifest; }); } @@ -123,13 +128,13 @@ function distSafariApp(cb, subBuildPath) { "--sign", subBuildPath === "mas" ? "3rd Party Mac Developer Application: Bitwarden Inc" - : "E661AB6249AEB60B0F47ABBD7326B2877D2575B0", + : "E7C9978F6FBCE0553429185C405E61F5380BE8EB", "--entitlements", entitlementsPath, ]; } - return del([buildPath + "**/*"]) + return rimraf([buildPath + "**/*"], { glob: true }) .then(() => safariCopyAssets(paths.safari + "**/*", buildPath)) .then(() => safariCopyBuild(paths.build + "**/*", buildPath + "safari/app")) .then(() => { @@ -143,7 +148,9 @@ function distSafariApp(cb, subBuildPath) { stdOutProc(proc); return new Promise((resolve) => proc.on("close", resolve)); }) - .then(() => { + .then(async () => { + const { default: filter } = await import("gulp-filter"); + const libs = fs .readdirSync(builtAppexFrameworkPath) .filter((p) => p.endsWith(".dylib")) @@ -167,7 +174,7 @@ function distSafariApp(cb, subBuildPath) { }, () => { return cb; - } + }, ); } @@ -178,7 +185,7 @@ function safariCopyAssets(source, dest) { .on("error", reject) .pipe(gulpif("safari/Info.plist", replace("0.0.1", manifest.version))) .pipe( - gulpif("safari/Info.plist", replace("0.0.2", process.env.BUILD_NUMBER || manifest.version)) + gulpif("safari/Info.plist", replace("0.0.2", process.env.BUILD_NUMBER || manifest.version)), ) .pipe(gulpif("desktop.xcodeproj/project.pbxproj", replace("../../../build", "../safari/app"))) .pipe(gulp.dest(dest)) @@ -186,7 +193,9 @@ function safariCopyAssets(source, dest) { }); } -function safariCopyBuild(source, dest) { +async function safariCopyBuild(source, dest) { + const { default: filter } = await import("gulp-filter"); + return new Promise((resolve, reject) => { gulp .src(source) @@ -202,8 +211,8 @@ function safariCopyBuild(source, dest) { delete manifest.optional_permissions; manifest.permissions.push("nativeMessaging"); return manifest; - }) - ) + }), + ), ) .pipe(gulp.dest(dest)) .on("end", resolve); @@ -215,7 +224,10 @@ function stdOutProc(proc) { proc.stderr.on("data", (data) => console.error(data.toString())); } -function ciCoverage(cb) { +async function ciCoverage(cb) { + const { default: zip } = await import("gulp-zip"); + const { default: filter } = await import("gulp-filter"); + return gulp .src(paths.coverage + "**/*") .pipe(filter(["**", "!coverage/coverage*.zip"])) diff --git a/apps/browser/jest.config.js b/apps/browser/jest.config.js index cde02cd995..73f5ada287 100644 --- a/apps/browser/jest.config.js +++ b/apps/browser/jest.config.js @@ -9,7 +9,10 @@ module.exports = { ...sharedConfig, preset: "jest-preset-angular", setupFilesAfterEnv: ["/test.setup.ts"], - moduleNameMapper: pathsToModuleNameMapper(compilerOptions?.paths || {}, { - prefix: "/", - }), + moduleNameMapper: pathsToModuleNameMapper( + { "@bitwarden/common/spec": ["../../libs/common/spec"], ...(compilerOptions?.paths ?? {}) }, + { + prefix: "/", + }, + ), }; diff --git a/apps/browser/package.json b/apps/browser/package.json index 5e1ad9bfd8..ee6d100572 100644 --- a/apps/browser/package.json +++ b/apps/browser/package.json @@ -1,12 +1,11 @@ { "name": "@bitwarden/browser", - "version": "2023.7.1", + "version": "2024.4.1", "scripts": { "build": "webpack", "build:mv3": "cross-env MANIFEST_VERSION=3 webpack", "build:watch": "webpack --watch", "build:watch:mv3": "cross-env MANIFEST_VERSION=3 webpack --watch", - "build:watch:autofill": "cross-env AUTOFILL_VERSION=2 webpack --watch", "build:prod": "cross-env NODE_ENV=production webpack", "build:prod:watch": "cross-env NODE_ENV=production webpack --watch", "dist": "npm run build:prod && gulp dist", @@ -19,6 +18,7 @@ "dist:safari:masdev": "npm run build:prod && gulp dist:safari:masdev", "dist:safari:dmg": "npm run build:prod && gulp dist:safari:dmg", "test": "jest", + "test:coverage": "jest --coverage --coverageDirectory=coverage", "test:watch": "jest --watch", "test:watch:all": "jest --watchAll" } diff --git a/apps/browser/spec/mock-port.spec-util.ts b/apps/browser/spec/mock-port.spec-util.ts new file mode 100644 index 0000000000..b5f7825d8e --- /dev/null +++ b/apps/browser/spec/mock-port.spec-util.ts @@ -0,0 +1,29 @@ +import { mockDeep } from "jest-mock-extended"; + +/** + * Mocks a chrome.runtime.Port set up to send messages through `postMessage` to `onMessage.addListener` callbacks. + * @param name - The name of the port. + * @param immediateOnConnectExecution - Whether to immediately execute the onConnect callbacks against the new port. + * Defaults to false. If true, the creator of the port will not have had a chance to set up listeners yet. + * @returns a mock chrome.runtime.Port + */ +export function mockPorts() { + // notify listeners of a new port + (chrome.runtime.connect as jest.Mock).mockImplementation((portInfo) => { + const port = mockDeep(); + port.name = portInfo.name; + + // set message broadcast + (port.postMessage as jest.Mock).mockImplementation((message) => { + (port.onMessage.addListener as jest.Mock).mock.calls.forEach(([callbackFn]) => { + callbackFn(message, port); + }); + }); + + (chrome.runtime.onConnect.addListener as jest.Mock).mock.calls.forEach(([callbackFn]) => { + callbackFn(port); + }); + + return port; + }); +} diff --git a/apps/browser/src/_locales/ar/messages.json b/apps/browser/src/_locales/ar/messages.json index 0e42d032fb..7b17b114d6 100644 --- a/apps/browser/src/_locales/ar/messages.json +++ b/apps/browser/src/_locales/ar/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "التعبئة التلقائية" }, + "autoFillLogin": { + "message": "تسجيل الدخول إلى الملء التلقائي" + }, + "autoFillCard": { + "message": "بطاقة الملء التلقائي" + }, + "autoFillIdentity": { + "message": "هوية التعبئة التلقائية" + }, "generatePasswordCopied": { "message": "إنشاء كلمة مرور (تم النسخ)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "لا توجد تسجيلات دخول مطابقة." }, + "noCards": { + "message": "لا توجد بطاقات" + }, + "noIdentities": { + "message": "لا توجد هويات" + }, + "addLoginMenu": { + "message": "إضافة تسجيل دخول جديد" + }, + "addCardMenu": { + "message": "إضافة بطاقة" + }, + "addIdentityMenu": { + "message": "إضافة هوية" + }, "unlockVaultMenu": { "message": "افتح خزنتك" }, @@ -244,6 +268,9 @@ "length": { "message": "الطول" }, + "passwordMinLength": { + "message": "الحد الأدنى لطول كلمة السر" + }, "uppercase": { "message": "أحرف كبيرة (من A إلى Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "كلمة المرور" }, + "totp": { + "message": "سر المصادقة" + }, "passphrase": { "message": "العبارة السرية" }, @@ -338,6 +368,12 @@ "other": { "message": "الأخرى" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "أعدنّ طريقة إلغاء القُفْل لتغيير إجراء مهلة المخزن الخاص بك." + }, + "unlockMethodNeeded": { + "message": "إعداد طريقة إلغاء القفل في الإعدادات" + }, "rateExtension": { "message": "قيِّم هذه الإضافة" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "إقفل الآن" }, + "lockAll": { + "message": "قفل الكل" + }, "immediately": { "message": "حالاً" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "تم إنشاء حسابك الجديد! يمكنك الآن تسجيل الدخول." }, + "youSuccessfullyLoggedIn": { + "message": "سجلتَ الدخول بنجاح" + }, + "youMayCloseThisWindow": { + "message": "يمكنك إغلاق هذه النافذة" + }, "masterPassSent": { "message": "لقد أرسلنا لك رسالة بريد إلكتروني تحتوي على تلميح كلمة المرور الرئيسية." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "غير قادر على ملء العنصر المحدد تلقائياً في هذه الصفحة. يرجى نسخ ولصق المعلومات يدوياً." }, + "totpCaptureError": { + "message": "غير قادر على مسح رمز QR من صفحة الويب الحالية" + }, + "totpCaptureSuccess": { + "message": "تم إضافة مفتاح المصادقة" + }, + "totpCapture": { + "message": "مسح رمز QR للمصادقة من صفحة الويب الحالية" + }, + "copyTOTP": { + "message": "نسخ مفتاح المصادقة (TOTP)" + }, "loggedOut": { "message": "تم تسجيل الخروج" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "اطلب إضافة عنصر إذا لم يُعثر عليه في خزنتك." }, + "addLoginNotificationDescAlt": { + "message": "اطلب إضافة عنصر إذا لم يتم العثور على عنصر في المخزن الخاص بك. ينطبق على جميع حسابات تسجيل الدخول." + }, "showCardsCurrentTab": { "message": "أظهر البطاقات في صفحة التبويبات" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "اسأل عن تحديث كلمة السر عند اكتشاف تغيير على الموقع الإلكتروني." }, + "changedPasswordNotificationDescAlt": { + "message": "اطلب تحديث كلمة مرور تسجيل الدخول عندما يتم اكتشاف تغيير على موقع. ينطبق على جميع حسابات تسجيل الدخول." + }, + "enableUsePasskeys": { + "message": "اطلب حفظ واستخدام مفاتيح المرور" + }, + "usePasskeysDesc": { + "message": "اطلب حفظ مفاتيح المرور الجديدة أو تسجيل الدخول باستخدام مفاتيح المرور المخزنة في مستودع التخزين الخاص بك. ينطبق هذا على جميع الحسابات المسجل الدخول بها." + }, "notificationChangeDesc": { "message": "هل تريد تحديث كلمة المرور هذه في Bitwarden؟" }, "notificationChangeSave": { "message": "تحديث" }, + "notificationUnlockDesc": { + "message": "افتح مخزن Bitwarden الخاص بك لإكمال طلب التعبئة التلقائية." + }, + "notificationUnlock": { + "message": "إلغاء القفل" + }, "enableContextMenuItem": { "message": "إظهار خيارات قائمة السياق" }, "contextMenuItemDesc": { "message": "استخدم نقرة ثانوية للوصول إلى توليد كلمة المرور ومطابقة تسجيلات الدخول للموقع. " }, + "contextMenuItemDescAlt": { + "message": "استخدم نقرة ثانوية للوصول إلى قسم توليد كلمة المرور ومطابقة تسجيلات الدخول للموقع. ينطبق هذا على جميع الحسابات المسجل الدخول بها." + }, "defaultUriMatchDetection": { "message": "الكشف الافتراضي عن تطابق URI", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "تغيير سمة لون التطبيق." }, + "themeDescAlt": { + "message": "تغيير سمة لون التطبيق. ينطبق على جميع الحسابات المسجل الدخول بها." + }, "dark": { "message": "داكن", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "الميزة غير متوفرة" }, - "updateKey": { - "message": "لا يمكنك استخدام هذه المِيزة حتى تحديث مفتاح التشفير الخاص بك." + "encryptionKeyMigrationRequired": { + "message": "مطلوب نقل مفتاح التشفير. الرجاء تسجيل الدخول بواسطة مخزن الويب لتحديث مفتاح التشفير الخاص بك." }, "premiumMembership": { "message": "العضوية المميزة" @@ -786,11 +867,11 @@ "ppremiumSignUpStorage": { "message": "1 جيغابايت وحدة تخزين مشفرة لمرفقات الملفات." }, - "ppremiumSignUpTwoStep": { - "message": "خيارات تسجيل الدخول الإضافية من خطوتين مثل YubiKey و FIDO U2F و Duo." + "premiumSignUpTwoStepOptions": { + "message": "خيارات تسجيل الدخول بخطوتين المملوكة لجهات اخرى مثل YubiKey و Duo." }, "ppremiumSignUpReports": { - "message": "نظافة كلمة المرور، صحة الحساب، وتقارير خرق البيانات للحفاظ على سلامة خزنتك." + "message": "نظافة كلمة المرور، صحة الحساب، وتقارير تسريبات البيانات للحفاظ على سلامة خزنتك." }, "ppremiumSignUpTotp": { "message": "مورد رمز التحقق (2FA) لتسجيل الدخول في خزنتك." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "روابط البيئة المحفوظة" }, + "showAutoFillMenuOnFormFields": { + "message": "إظهار قائمة الملء التلقائي في حقول النموذج", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "ينطبق على جميع الحسابات المسجل الدخول بها." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "إيقاف تشغيل إعدادات مدير كلمات المرور الافتراضي في متصفحك لتجنب التضارب." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "تعديل إعدادات المتصفح." + }, + "autofillOverlayVisibilityOff": { + "message": "إيقاف", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "عندما يتم تحديد الحقل (على التركيز)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "عندما يتم اختيار ايقونة الملء التلقائي", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "ملء تلقائي عند تحميل الصفحة" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "إظهار صورة قابلة للتعرف بجانب كل تسجيل دخول." }, + "faviconDescAlt": { + "message": "إظهار صورة قابلة للتعرف بجانب كل تسجيل دخول. تنطبق على جميع حسابات تسجيل الدخول." + }, "enableBadgeCounter": { "message": "إظهار عداد الشارات" }, @@ -1258,7 +1367,7 @@ "message": "تحقق مما إذا تم الكشف عن كلمة المرور." }, "passwordExposed": { - "message": "تم الكشف عن كلمة المرور هذه $VALUE$ مرّة (ات) في خروقات البيانات. يجب عليك تغييرها.", + "message": "تم الكشف عن كلمة المرور هذه $VALUE$ مرّة(ات) في تسريبات البيانات. يجب عليك تغييرها.", "placeholders": { "value": { "content": "$1", @@ -1267,7 +1376,7 @@ } }, "passwordSafe": { - "message": "لم يتم العثور على كلمة المرور هذه في أي عمليات اختراق معروفة للبيانات. من المفترض أن تكون آمنة للاستخدام." + "message": "لم يتم العثور على كلمة المرور هذه في أي عمليات تسريبات للبيانات معروفة. من المفترض أن تكون آمنة للاستخدام." }, "baseDomain": { "message": "النطاق الأساسي", @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "رمز PIN غير صالح." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "العديد من محاولات إدخال رقم التعريف الشخصي غير الصالحة. تسجيل الخروج." + }, "unlockWithBiometrics": { "message": "فتح باستخدام القياسات الحيوية" }, @@ -1440,38 +1552,35 @@ "restoreItem": { "message": "استعادة العنصر" }, - "restoreItemConfirmation": { - "message": "هل أنت متأكد من أنك تريد استعادة هذا العنصر؟" - }, "restoredItem": { - "message": "Item restored" + "message": "تم استعادة العنصر" }, "vaultTimeoutLogOutConfirmation": { - "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + "message": "سيؤدي تسجيل الخروج إلى إزالة جميع إمكانية الوصول إلى خزنتك ويتطلب المصادقة عبر الإنترنت بعد انتهاء المهلة. هل أنت متأكد من أنك تريد استخدام هذا الإعداد؟" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout action confirmation" + "message": "تأكيد إجراء المهلة" }, "autoFillAndSave": { - "message": "Auto-fill and save" + "message": "التعبئة التلقائية والحفظ" }, "autoFillSuccessAndSavedUri": { - "message": "Item auto-filled and URI saved" + "message": "تم تعبئة العنصر تلقائياً وحفظ عنوان URI" }, "autoFillSuccess": { - "message": "Item auto-filled " + "message": "ملء العنصر تلقائياً " }, "insecurePageWarning": { - "message": "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." + "message": "تحذير: هذه صفحة HTTP غير آمنة، وأي معلومات تقدمها يمكن رؤيتها وتغييرها من قبل الآخرين. تم حفظ تسجيل الدخول هذا في الأصل على صفحة آمنة (HTTPS)." }, "insecurePageWarningFillPrompt": { - "message": "Do you still wish to fill this login?" + "message": "هل مازلت ترغب في ملء هذا الدخول؟" }, "autofillIframeWarning": { - "message": "The form is hosted by a different domain than the URI of your saved login. Choose OK to auto-fill anyway, or Cancel to stop." + "message": "يتم استضافة النموذج من قبل نطاق مختلف عن عنوان URI الخاص بتسجيل الدخول المحفوظ. اختر موافق للملء التلقائي على أي حال، أو ألغ للتوقف." }, "autofillIframeWarningTip": { - "message": "To prevent this warning in the future, save this URI, $HOSTNAME$, to your Bitwarden login item for this site.", + "message": "لمنع هذا التحذير في المستقبل، حفظ هذا الرابط، $HOSTNAME$ إلى عنصر تسجيل الدخول الخاص بك Bitwarden لهذا الموقع.", "placeholders": { "hostname": { "content": "$1", @@ -1480,22 +1589,22 @@ } }, "setMasterPassword": { - "message": "Set master password" + "message": "تعيين كلمة مرور رئيسية" }, "currentMasterPass": { - "message": "Current master password" + "message": "كلمة المرور الرئيسية الحالية" }, "newMasterPass": { - "message": "New master password" + "message": "كلمة مرور رئيسية جديدة" }, "confirmNewMasterPass": { - "message": "Confirm new master password" + "message": "تأكيد كلمة المرور الرئيسية الجديدة" }, "masterPasswordPolicyInEffect": { - "message": "One or more organization policies require your master password to meet the following requirements:" + "message": "1 - تتطلب سياسة واحدة أو أكثر من سياسات المؤسسة كلمة مرورك الرئيسية لتلبية المتطلبات التالية:" }, "policyInEffectMinComplexity": { - "message": "Minimum complexity score of $SCORE$", + "message": "الحد الأدنى لدرجة التعقيد $SCORE$", "placeholders": { "score": { "content": "$1", @@ -1504,7 +1613,7 @@ } }, "policyInEffectMinLength": { - "message": "Minimum length of $LENGTH$", + "message": "الحد الأدنى لطول $LENGTH$", "placeholders": { "length": { "content": "$1", @@ -1513,16 +1622,16 @@ } }, "policyInEffectUppercase": { - "message": "Contain one or more uppercase characters" + "message": "يحتوي على حرف كبير واحد أو أكثر" }, "policyInEffectLowercase": { - "message": "Contain one or more lowercase characters" + "message": "يحتوي على واحد أو أكثر من الأحرف الصغيرة" }, "policyInEffectNumbers": { - "message": "Contain one or more numbers" + "message": "يحتوي على رقم واحد أو أكثر" }, "policyInEffectSpecial": { - "message": "Contain one or more of the following special characters $CHARS$", + "message": "يحتوي على واحد أو أكثر من الأحرف الخاصة التالية $CHARS$", "placeholders": { "chars": { "content": "$1", @@ -1534,101 +1643,113 @@ "message": "كلمة المرور الرئيسية الجديدة لا تفي بمتطلبات السياسة العامة." }, "acceptPolicies": { - "message": "By checking this box you agree to the following:" + "message": "من خلال تحديد هذا المربع فإنك توافق على ما يلي:" }, "acceptPoliciesRequired": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "لم يتم الاعتراف بشروط الخدمة وسياسة الخصوصية." }, "termsOfService": { - "message": "Terms of Service" + "message": "شروط الخدمة" }, "privacyPolicy": { "message": "سياسة الخصوصية" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "لا يمكن أن يكون تلميح كلمة المرور نفس كلمة المرور الخاصة بك." }, "ok": { "message": "موافق" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "التحقق من مزامنة سطح المكتب" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "الرجاء التحقق من أن تطبيق سطح المكتب يظهر بصمة الإصبع هذه: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not set up" + "message": "لم يتم إعداد تكامل المتصفح" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." + "message": "لم يتم إعداد تكامل المتصفح في تطبيق سطح المكتب Bitwarden. الرجاء إعداده في الإعدادات داخل تطبيق سطح المكتب." }, "startDesktopTitle": { - "message": "Start the Bitwarden desktop application" + "message": "بدء تشغيل تطبيق سطح المكتب Bitwarden" }, "startDesktopDesc": { - "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." + "message": "يجب أن يبدأ تطبيق سطح المكتب Bitwarden قبل أن يمكن فتح القفل باستخدام القياسات الحيوية." }, "errorEnableBiometricTitle": { - "message": "Unable to set up biometrics" + "message": "غير قادر على إعداد القياسات الحيوية" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "تم إلغاء الإجراء بواسطة تطبيق سطح المكتب" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "تطبيق سطح المكتب لم يقبل قناة الاتصال الآمنة. يرجى إعادة محاولة هذه العملية" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "تم انقطاع اتصال سطح المكتب" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "تم تسجيل دخول تطبيق سطح المكتب إلى حساب مختلف. الرجاء التأكد من تسجيل دخول كلا التطبيقين إلى نفس الحساب." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "عدم تطابق الحساب" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not set up" + "message": "لم يتم إعداد القياسات الحيوية" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be set up in the settings first." + "message": "القياسات الحيوية للمتصفح تتطلب القياسات الحيوية لسطح المكتب ليتم إعدادها في الإعدادات أولاً." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "القياسات الحيوية غير مدعومة" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "القياسات الحيوية للمتصفح غير مدعومة على هذا الجهاز." + }, + "biometricsFailedTitle": { + "message": "فشل القياسات الحيوية" + }, + "biometricsFailedDesc": { + "message": "لا يمكن إكمال القياسات الحيوية، فكر في استخدام كلمة مرور رئيسية أو تسجيل الخروج. إذا استمر ذلك، يرجى الاتصال بدعم Bitwarden." }, "nativeMessaginPermissionErrorTitle": { - "message": "Permission not provided" + "message": "الإذن غير متوفر" }, "nativeMessaginPermissionErrorDesc": { - "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + "message": "بدون إذن للتواصل مع تطبيق سطح المكتب Bitwarden لا يمكننا توفير القياسات الحيوية في ملحق المتصفح. الرجاء المحاولة مرة أخرى." }, "nativeMessaginPermissionSidebarTitle": { - "message": "Permission request error" + "message": "خطأ في طلب الإذن" }, "nativeMessaginPermissionSidebarDesc": { - "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + "message": "لا يمكن القيام بهذا الإجراء في الشريط الجانبي، يرجى إعادة محاولة الإجراء في النافذة المنبثقة أو المنبثقة." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." + "message": "بسبب سياسة المؤسسة، يمنع عليك حفظ العناصر في خزانتك الشخصية. غيّر خيار الملكية إلى مؤسسة واختر من المجموعات المتاحة." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { - "message": "Excluded domains" + "message": "النطاقات المستبعدة" }, "excludedDomainsDesc": { - "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + "message": "Bitwarden لن يطلب حفظ تفاصيل تسجيل الدخول لهذه النطاقات. يجب عليك تحديث الصفحة حتى تصبح التغييرات سارية المفعول." + }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." }, "excludedDomainsInvalidDomain": { - "message": "$DOMAIN$ is not a valid domain", + "message": "$DOMAIN$ نطاق غير صالح", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1645,10 +1766,10 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTypeText": { - "message": "Text" + "message": "نص" }, "sendTypeFile": { - "message": "File" + "message": "ملف" }, "allSends": { "message": "All Sends", @@ -1689,10 +1810,10 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disabled": { - "message": "Disabled" + "message": "معطّل" }, "removePasswordConfirmation": { - "message": "Are you sure you want to remove the password?" + "message": "هل أنت متأكد من أنك تريد إزالة كلمة المرور؟" }, "deleteSend": { "message": "Delete Send", @@ -1718,7 +1839,7 @@ "message": "The file you want to send." }, "deletionDate": { - "message": "Deletion date" + "message": "تاريخ الحذف" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", @@ -1812,10 +1933,10 @@ "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." }, "sendFileCalloutHeader": { - "message": "Before you start" + "message": "قبل أن تبدأ" }, "sendFirefoxCustomDatePopoutMessage1": { - "message": "To use a calendar style date picker", + "message": "لاستخدام منتقي التاريخ على نمط التقويم", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" }, "sendFirefoxCustomDatePopoutMessage2": { @@ -1823,14 +1944,14 @@ "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" }, "sendFirefoxCustomDatePopoutMessage3": { - "message": "to pop out your window.", + "message": "أن يخرج من النافذة.", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" }, "expirationDateIsInvalid": { - "message": "The expiration date provided is not valid." + "message": "صلاحية تاريخ الانتهاء المقدّم غير صحيح." }, "deletionDateIsInvalid": { - "message": "The deletion date provided is not valid." + "message": "صلاحية تاريخ الحذف المقدّم غير صحيح." }, "expirationDateAndTimeRequired": { "message": "An expiration date and time are required." @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "من أجل إكمال تسجيل الدخول باستخدام SSO، يرجى تعيين كلمة المرور الرئيسية للوصول لخزنتك وحمايتها." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "التحقق مطلوب", + "description": "Default title for the user verification dialog." }, "hours": { "message": "ساعات" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "جاري تصدير الخزنة الشخصية" }, - "exportingPersonalVaultDescription": { - "message": "سيتم تصدير فقط عناصر الخزنة الشخصية المرتبطة بـ $EMAIL$. لن يتم إدراج عناصر خزنة المؤسسة.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "إصدار الخادم" }, - "selfHosted": { - "message": "استضافة ذاتية" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2117,55 +2251,55 @@ "message": "New around here?" }, "rememberEmail": { - "message": "Remember email" + "message": "تذكر البريد الإلكتروني" }, "loginWithDevice": { - "message": "Log in with device" + "message": "تسجيل الدخول بالجهاز" }, "loginWithDeviceEnabledInfo": { - "message": "Log in with device must be set up in the settings of the Bitwarden app. Need another option?" + "message": "يجب إعداد تسجيل الدخول بالجهاز في إعدادات تطبيق Bitwarden. هل تحتاج إلى خِيار آخر؟" }, "fingerprintPhraseHeader": { - "message": "Fingerprint phrase" + "message": "عبارة بصمة الإصبع" }, "fingerprintMatchInfo": { - "message": "Please make sure your vault is unlocked and the Fingerprint phrase matches on the other device." + "message": "الرجاء التأكد من أن الخزنة الخاصة بك غير مقفلة وأن عبارة بصمة الإصبع تتطابق على الجهاز الآخر." }, "resendNotification": { - "message": "Resend notification" + "message": "إعادة إرسال الإشعار" }, "viewAllLoginOptions": { - "message": "View all log in options" + "message": "عرض جميع خيارات تسجيل الدخول" }, "notificationSentDevice": { - "message": "A notification has been sent to your device." + "message": "تم إرسال إشعار إلى جهازك." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "بَدْء تسجيل الدخول" }, "exposedMasterPassword": { - "message": "Exposed Master Password" + "message": "كلمة المرور الرئيسية مكشوفة" }, "exposedMasterPasswordDesc": { - "message": "Password found in a data breach. Use a unique password to protect your account. Are you sure you want to use an exposed password?" + "message": "كلمة المرور موجودة في تسريبات البيانات. استخدم كلمة مرور فريدة لحماية حسابك. هل أنت متأكد من أنك تريد استخدام كلمة مرور مكشوفة؟" }, "weakAndExposedMasterPassword": { - "message": "Weak and Exposed Master Password" + "message": "كلمة المرور الرئيسية ضعيفة ومكشوفة" }, "weakAndBreachedMasterPasswordDesc": { - "message": "Weak password identified and found in a data breach. Use a strong and unique password to protect your account. Are you sure you want to use this password?" + "message": "تم تحديد كلمة مرور ضعيفة و موجودة في تسريبات البيانات. استخدم كلمة مرور قوية وفريدة لحماية حسابك. هل أنت متأكد من أنك تريد استخدام كلمة المرور هذه؟" }, "checkForBreaches": { - "message": "Check known data breaches for this password" + "message": "تحقق من تسريبات البيانات المعروفة لكلمة المرور هذه" }, "important": { - "message": "Important:" + "message": "مهم:" }, "masterPasswordHint": { - "message": "Your master password cannot be recovered if you forget it!" + "message": "لا يمكن استعادة كلمة المرور الرئيسية إذا نسيتها!" }, "characterMinimum": { - "message": "$LENGTH$ character minimum", + "message": "$LENGTH$ حرف أدنى", "placeholders": { "length": { "content": "$1", @@ -2174,13 +2308,13 @@ } }, "autofillPageLoadPolicyActivated": { - "message": "Your organization policies have turned on auto-fill on page load." + "message": "سياسات مؤسستك شغلت الملء التلقائي في تحميل الصفحة." }, "howToAutofill": { - "message": "How to auto-fill" + "message": "كيفية الملء التلقائي" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "حدد عنصر من هذه الشاشة، واستخدام الاختصار $COMMAND$، أو استكشاف خيارات أخرى في الإعدادات.", "placeholders": { "command": { "content": "$1", @@ -2189,16 +2323,16 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { - "message": "Got it" + "message": "فهمت" }, "autofillSettings": { - "message": "Auto-fill settings" + "message": "إعدادات الملء التلقائي" }, "autofillShortcut": { - "message": "Auto-fill keyboard shortcut" + "message": "ملء تلقائي لاختصار لوحة المفاتيح" }, "autofillShortcutNotSet": { "message": "The auto-fill shortcut is not set. Change this in the browser's settings." @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "جارٍ تسجيل الدخول على" }, "opensInANewWindow": { - "message": "Opens in a new window" + "message": "تُفتح في نافذة جديدة" + }, + "deviceApprovalRequired": { + "message": "موافقة الجهاز مطلوبة. حدّد خيار الموافقة أدناه:" + }, + "rememberThisDevice": { + "message": "تذكر هذا الجهاز" + }, + "uncheckIfPublicDevice": { + "message": "إلغاء تحديد عند استخدام جهاز عام" + }, + "approveFromYourOtherDevice": { + "message": "الموافقة من جهازك الآخر" + }, + "requestAdminApproval": { + "message": "طلب موافقة المدير" + }, + "approveWithMasterPassword": { + "message": "الموافقة بواسطة كلمة المرور الرئيسية" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." }, "eu": { - "message": "EU", + "message": "الاتحاد الأوروبي", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "استيراد بياناتك إلى Bitwarden؟", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "حماية بياناتك الأخيرة واستيرادك إلى Bitwarden؟", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "حفظ كملف غير مشفر", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "استيراد إلى Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "جارِ الاستيراد...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "لقد تم استيراد البيانات بنجاح!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "خطأ في الاستيراد. تحقق من وحدة التحكم للحصول على التفاصيل.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "تم مواجهة خطأ في الشبكة أثناء الاستيراد.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "الاسم البديل للنطاق" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "العناصر مع إعادة طلب كلمة المرور الرئيسية لا يمكن ملئها تلقائيًا عند تحميل الصفحة. التعبئة التلقائية عند تحميل الصفحة.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "ملء تلقائي عند تعيين تحميل الصفحة لاستخدام الإعداد الافتراضي.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "إيقاف تشغيل كلمة المرور الرئيسية مرة أخرى لتحرير هذا الحقل", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "تخطي إلى المحتوى" + }, + "bitwardenOverlayButton": { + "message": "زر قائمة الملء التلقائي Bitwarden", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "تبديل قائمة الملء التلقائي لـ Bitwarden", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "قائمة الملء التلقائي Bitwarden", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "افتح حسابك لعرض تسجيلات الدخول المطابقة", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "فتح الحساب", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "ملء بيانات الاعتماد لـ", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "اسم المستخدم الجزئي", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "لا توجد عناصر لإظهارها", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "عنصر جديد", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "إضافة عنصر مخزن جديد", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "تتوفر قائمة الملء التلقائي لBitwarden. اضغط على مفتاح السهم لأسفل للتحديد.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "فعّل" + }, + "ignore": { + "message": "تجاهل" + }, + "importData": { + "message": "استيراد البيانات", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "خطأ في الاستيراد" + }, + "importErrorDesc": { + "message": "حدثت مشكلة في البيانات التي حاولت استيرادها. الرجاء حل الأخطاء المدرجة أدناه في الملف المصدر الخاص بك وحاول مرة أخرى." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "حِل الأخطاء أدناه ثم حاول مرة أخرى." + }, + "description": { + "message": "الوصف" + }, + "importSuccess": { + "message": "تم استيراد البيانات بنجاح" + }, + "importSuccessNumberOfItems": { + "message": "تم استيراد مجموع العناصر $AMOUNT$.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "حاول مجددًا" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "التحقق مطلوب لهذا الإجراء. عيّن رمز PIN للمتابعة." + }, + "setPin": { + "message": "عيّن PIN" + }, + "verifyWithBiometrics": { + "message": "التحقق بواسطة القياسات الحيوية" + }, + "awaitingConfirmation": { + "message": "في انتظار تأكيد" + }, + "couldNotCompleteBiometrics": { + "message": "لا يمكن إكمال القياسات الحيوية." + }, + "needADifferentMethod": { + "message": "هل تحتاج إلى طريقة مختلفة؟" + }, + "useMasterPassword": { + "message": "استخدام كلمة المرور الرئيسية" + }, + "usePin": { + "message": "استخدم PIN" + }, + "useBiometrics": { + "message": "استخدم السياقات الحيوية" + }, + "enterVerificationCodeSentToEmail": { + "message": "أدخِل رمز التحقق الذي أرسل إلى بريدك الإلكتروني." + }, + "resendCode": { + "message": "أعِد إرسال الرمز" + }, + "total": { + "message": "المجموع" + }, + "importWarning": { + "message": "أنت تستورد البيانات إلى $ORGANIZATION$. قد يتم مشاركة بياناتك مع أعضاء هذه المؤسسة. هل تريد المتابعة؟", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "قم بتشغيل Duo واتبع الخطوات لإنهاء تسجيل الدخول." + }, + "duoRequiredForAccount": { + "message": "تسجيل الدخول لـ Duo من خطوتين مطلوب لحسابك." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "انبثق الامتداد لإكمال تسجيل الدخول." + }, + "popoutExtension": { + "message": "تمديد منبثق" + }, + "launchDuo": { + "message": "تشغيل Duo" + }, + "importFormatError": { + "message": "لم يتم تنسيق البيانات بشكل صحيح. الرجاء التحقق من ملف الاستيراد الخاص بك وحاول مرة أخرى." + }, + "importNothingError": { + "message": "لم يتم استيراد أي شيء." + }, + "importEncKeyError": { + "message": "خطأ في فك تشفير الملف المصدر. مفتاح التشفير الخاص بك لا يتطابق مع مفتاح التشفير المستخدم عند تصدير البيانات." + }, + "invalidFilePassword": { + "message": "كلمة مرور الملف غير صالحة، الرجاء استخدام كلمة المرور التي أدخلتها عند إنشاء ملف التصدير." + }, + "importDestination": { + "message": "وجهة الاستيراد" + }, + "learnAboutImportOptions": { + "message": "تعرف على خيارات الاستيراد الخاصة بك" + }, + "selectImportFolder": { + "message": "اختر مجلدًا" + }, + "selectImportCollection": { + "message": "اختر مجموعة" + }, + "importTargetHint": { + "message": "حدد هذا الخيار إذا كنت تريد نقل محتويات الملف المستورد إلى $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "الملف يحتوي على عناصر غير مسندة." + }, + "selectFormat": { + "message": "حدد تنسيق ملف الاستيراد" + }, + "selectImportFile": { + "message": "حدد ملف الاستيراد" + }, + "chooseFile": { + "message": "اختر ملف" + }, + "noFileChosen": { + "message": "لم يتم اختيار ملف" + }, + "orCopyPasteFileContents": { + "message": "أو انسخ/الصق محتويات ملف الاستيراد" + }, + "instructionsFor": { + "message": "تعليمات $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "تأكيد تصدير الخزنة" + }, + "confirmVaultImportDesc": { + "message": "هذا الملف محمي بكلمة مرور. الرجاء إدخال كلمة مرور الملف لاستيراد البيانات." + }, + "confirmFilePassword": { + "message": "تأكيد كلمة مرور الملف" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "لن يتم نسخ Passkey" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "تأكيد" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "كلمة مرور غير صحيحة" + }, + "incorrectCode": { + "message": "رمز غير صحيح" + }, + "incorrectPin": { + "message": "رمز PIN غير صحيح" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "بريد LastPass الإلكتروني" + }, + "importingYourAccount": { + "message": "جارِ استيراد حسابك..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/az/messages.json b/apps/browser/src/_locales/az/messages.json index cbae4e4909..e12fb0dc88 100644 --- a/apps/browser/src/_locales/az/messages.json +++ b/apps/browser/src/_locales/az/messages.json @@ -38,7 +38,7 @@ "message": "Ana parol" }, "masterPassDesc": { - "message": "Ana parol, anbarınıza müraciət etmək üçün istifadə edəcəyiniz paroldur. Ana parolu yadda saxlamaq çox vacibdir. Unutsanız, parolu bərpa etməyin heç bir yolu yoxdur." + "message": "Ana parol, anbarınıza müraciət etmək üçün istifadə edəcəyiniz paroldur. Ana parolu yadda saxlamaq çox vacibdir. Unutsanız, parolu geri qaytarmağın heç bir yolu yoxdur." }, "masterPassHintDesc": { "message": "Ana parol məsləhəti, unutduğunuz parolunuzu xatırlamağınıza kömək edir." @@ -47,7 +47,7 @@ "message": "Ana parolu yenidən yaz" }, "masterPassHint": { - "message": "Ana parol məsləhəti (ixtiyari)" + "message": "Ana parol ipucu (ixtiyari)" }, "tab": { "message": "Vərəq" @@ -65,7 +65,7 @@ "message": "Alətlər" }, "settings": { - "message": "Tənzimləmələr" + "message": "Ayarlar" }, "currentTab": { "message": "Hazırkı vərəq" @@ -74,7 +74,7 @@ "message": "Parolu kopyala" }, "copyNote": { - "message": "Qeydi kopyala" + "message": "Notu kopyala" }, "copyUri": { "message": "URI-ni kopyala" @@ -91,6 +91,15 @@ "autoFill": { "message": "Avto-doldurma" }, + "autoFillLogin": { + "message": "Girişi avto-doldur" + }, + "autoFillCard": { + "message": "Kartı avto-doldur" + }, + "autoFillIdentity": { + "message": "Kimliyi avto-doldur" + }, "generatePasswordCopied": { "message": "Parol yarat (kopyalandı)" }, @@ -98,10 +107,25 @@ "message": "Özəl sahə adını kopyala" }, "noMatchingLogins": { - "message": "Uyğun gələn hesab yoxdur." + "message": "Uyuşan giriş məlumatları yoxdur" + }, + "noCards": { + "message": "Kart yoxdur" + }, + "noIdentities": { + "message": "Kimlik yoxdur" + }, + "addLoginMenu": { + "message": "Giriş əlavə et" + }, + "addCardMenu": { + "message": "Kart əlavə et" + }, + "addIdentityMenu": { + "message": "Kimlik əlavə et" }, "unlockVaultMenu": { - "message": "Anbarın kilidini açın" + "message": "Anbarınızın kilidini açın" }, "loginToVaultMenu": { "message": "Anbarınıza giriş edin" @@ -116,19 +140,19 @@ "message": "Element əlavə et" }, "passwordHint": { - "message": "Parol məsləhəti" + "message": "Parol ipucu" }, "enterEmailToGetHint": { - "message": "Ana parol məsləhətini alacağınız hesabınızın e-poçt ünvanını daxil edin." + "message": "Ana parol ipucunuzu alacağınız hesabınızın e-poçt ünvanını daxil edin." }, "getMasterPasswordHint": { - "message": "Ana parol üçün məsləhət alın" + "message": "Ana parol üçün ipucu alın" }, "continue": { "message": "Davam" }, "sendVerificationCode": { - "message": "E-poçtunuza bir təsdiqləmə kodu göndərin" + "message": "Doğrulama kodunu e-poçtunuza göndərin" }, "sendCode": { "message": "Kod göndər" @@ -137,7 +161,7 @@ "message": "Kod göndərildi" }, "verificationCode": { - "message": "Təsdiqləmə kodu" + "message": "Doğrulama kodu" }, "confirmIdentity": { "message": "Davam etmək üçün kimliyinizi təsdiqləyin." @@ -157,7 +181,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": "İki mərhələli giriş" + "message": "İki addımlı giriş" }, "logOut": { "message": "Çıxış" @@ -190,28 +214,28 @@ "message": "Qovluqlar" }, "noFolders": { - "message": "Siyahılanacaq heç bir qovluq yoxdur." + "message": "Sadalanacaq heç bir qovluq yoxdur." }, "helpFeedback": { - "message": "Kömək və əks əlaqə" + "message": "Kömək və əks-əlaqə" }, "helpCenter": { - "message": "Bitwarden Kömək mərkəzi" + "message": "Bitwarden Kömək Mərkəzi" }, "communityForums": { "message": "Bitwarden cəmiyyət forumlarını kəşf et" }, "contactSupport": { - "message": "Bitwarden dəstəyi ilə əlaqə saxla" + "message": "Bitwarden dəstəyi ilə əlaqə" }, "sync": { - "message": "Eyniləşdirmə" + "message": "Sinxr" }, "syncVaultNow": { - "message": "Anbarı indi eyniləşdir" + "message": "Anbarı indi sinxronlaşdır" }, "lastSync": { - "message": "Son eyniləşdirmə:" + "message": "Son sinxr:" }, "passGen": { "message": "Parol yaradıcı" @@ -227,7 +251,7 @@ "message": "Bitwarden veb anbarı" }, "importItems": { - "message": "Elementləri idxal et" + "message": "Elementləri daxilə köçür" }, "select": { "message": "Seçin" @@ -244,6 +268,9 @@ "length": { "message": "Uzunluq" }, + "passwordMinLength": { + "message": "Minimal parol uzunluğu" + }, "uppercase": { "message": "Böyük hərf (A-Z)" }, @@ -288,7 +315,7 @@ "message": "Bax" }, "noItemsInList": { - "message": "Siyahılanacaq heç bir element yoxdur." + "message": "Sadalanacaq heç bir element yoxdur." }, "itemInformation": { "message": "Element məlumatları" @@ -299,17 +326,20 @@ "password": { "message": "Parol" }, + "totp": { + "message": "Kimlik doğrulayıcı sirri" + }, "passphrase": { - "message": "Uzun ifadə" + "message": "Parol ifadəsi" }, "favorite": { "message": "Sevimli" }, "notes": { - "message": "Qeydlər" + "message": "Notlar" }, "note": { - "message": "Qeyd" + "message": "Not" }, "editItem": { "message": "Elementə düzəliş et" @@ -338,8 +368,14 @@ "other": { "message": "Digər" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Anbar vaxt bitməsi əməliyyatınızı dəyişdirmək üçün bir kilid açma üsulu qurun." + }, + "unlockMethodNeeded": { + "message": "Ayarlarda bir kilid açma üsulu qurun" + }, "rateExtension": { - "message": "Genişləndirməni qiymətləndir" + "message": "Uzantını qiymətləndir" }, "rateExtensionDesc": { "message": "Gözəl bir rəy ilə bizə dəstək ola bilərsiniz!" @@ -348,10 +384,10 @@ "message": "Veb brauzeriniz lövhəyə kopyalamağı dəstəkləmir. Əvəzində əllə kopyalayın." }, "verifyIdentity": { - "message": "Kimliyi təsdiqləyin" + "message": "Kimliyi doğrula" }, "yourVaultIsLocked": { - "message": "Anbarınız kilidlənib. Davam etmək üçün ana parolunuzu təsdiqləyin." + "message": "Anbarınız kilidlənib. Davam etmək üçün kimliyinizi doğrulayın." }, "unlock": { "message": "Kilidi aç" @@ -378,6 +414,9 @@ "lockNow": { "message": "İndi kilidlə" }, + "lockAll": { + "message": "Hamısını kilidlə" + }, "immediately": { "message": "Dərhal" }, @@ -427,16 +466,16 @@ "message": "Bir xəta baş verdi" }, "emailRequired": { - "message": "E-poçt ünvanı lazımdır." + "message": "E-poçt ünvanı tələb olunur." }, "invalidEmail": { "message": "Yararsız e-poçt ünvanı." }, "masterPasswordRequired": { - "message": "Ana parol lazımdır." + "message": "Ana parol tələb olunur." }, "confirmMasterPasswordRequired": { - "message": "Ana parolun yenidən yazılması lazımdır." + "message": "Ana parolun yenidən yazılması tələb olunur." }, "masterPasswordMinlength": { "message": "Ana parol ən azı $VALUE$ simvol uzunluğunda olmalıdır.", @@ -449,19 +488,25 @@ } }, "masterPassDoesntMatch": { - "message": "Ana parol təsdiqləməsi uyğun gəlmir." + "message": "Ana parolun təsdiqi uyuşmur." }, "newAccountCreated": { "message": "Yeni hesabınız yaradıldı! İndi giriş edə bilərsiniz." }, + "youSuccessfullyLoggedIn": { + "message": "Uğurla giriş etdiniz" + }, + "youMayCloseThisWindow": { + "message": "Bu pəncərəni bağlaya bilərsiniz" + }, "masterPassSent": { - "message": "Ana parol məsləhətini ehtiva edən bir e-poçt göndərdik." + "message": "Sizə ana parol ipucunuz olan bir e-poçt göndərdik." }, "verificationCodeRequired": { - "message": "Təsdiq kodu lazımdır." + "message": "Doğrulama kodu tələb olunur." }, "invalidVerificationCode": { - "message": "Yararsız təsdiqləmə kodu" + "message": "Yararsız doğrulama kodu" }, "valueCopied": { "message": "$VALUE$ kopyalandı", @@ -474,13 +519,25 @@ } }, "autofillError": { - "message": "Bu səhifədə seçilən element avto-doldurulmur. Əvəzində məlumatları kopyalayıb yapışdırın." + "message": "Bu səhifədə seçilmiş element avto-doldurulmur. Əvəzində məlumatları kopyalayıb yapışdırın." + }, + "totpCaptureError": { + "message": "Hazırkı veb səhifədən QR kodu skan edilə bilmir" + }, + "totpCaptureSuccess": { + "message": "Kimlik doğrulayıcı açarı əlavə edildi" + }, + "totpCapture": { + "message": "Hazırkı veb sahifədən kimlik doğrulayıcı QR kodunu skan et" + }, + "copyTOTP": { + "message": "Kimlik doğrulayıcı açarını kopyala (TOTP)" }, "loggedOut": { "message": "Çıxış edildi" }, "loginExpired": { - "message": "Seansın müddəti bitdi." + "message": "Giriş seansınızın müddəti bitdi." }, "logOutConfirmation": { "message": "Çıxış etmək istədiyinizə əminsiniz?" @@ -492,10 +549,10 @@ "message": "Xeyr" }, "unexpectedError": { - "message": "Gözlənilməz bir səhv baş verdi" + "message": "Gözlənilməz bir xəta baş verdi." }, "nameRequired": { - "message": "Ad lazımdır." + "message": "Ad tələb olunur." }, "addedFolder": { "message": "Qovluq əlavə edildi" @@ -507,10 +564,10 @@ "message": "Ana parolunuzu bitwarden.com veb anbarında dəyişdirə bilərsiniz. İndi saytı ziyarət etmək istəyirsiniz?" }, "twoStepLoginConfirmation": { - "message": "İki mərhələli giriş, güvənlik açarı, kimlik təsdiqləyici tətbiq, SMS, telefon zəngi və ya e-poçt kimi digər cihazlarla girişinizi təsdiqləməyinizi tələb edərək hesabınızı daha da güvənli edir. İki mərhələli giriş, bitwarden.com veb anbarında fəallaşdırıla bilər. Veb saytı indi ziyarət etmək istəyirsiniz?" + "message": "İki addımlı giriş, güvənlik açarı, kimlik doğrulayıcı tətbiq, SMS, telefon zəngi və ya e-poçt kimi digər cihazlarla girişinizi doğrulamanızı tələb edərək hesabınızı daha da güvənli edir. İki addımlı giriş, bitwarden.com veb anbarında qurula bilər. Veb saytı indi ziyarət etmək istəyirsiniz?" }, "editedFolder": { - "message": "Qovluğa düzəliş edildi" + "message": "Qovluğ saxlanıldı" }, "deleteFolderConfirmation": { "message": "Bu qovluğu silmək istədiyinizə əminsiniz?" @@ -522,13 +579,13 @@ "message": "Başlanğıc təlimatı" }, "gettingStartedTutorialVideo": { - "message": "Brauzer genişləndirməsindən necə daha yaxşı faydalanmağı öyrənmək üçün başlanğıc təlimatına baxa bilərsiniz." + "message": "Brauzer uzantısından necə daha yaxşı faydalanmağı öyrənmək üçün başlanğıc təlimatına baxa bilərsiniz." }, "syncingComplete": { - "message": "Eyniləşdirmə tamamlandı" + "message": "Sinxr tamamlandı" }, "syncingFailed": { - "message": "Uğursuz eyniləşdirmə" + "message": "Sinxr uğursuz oldu" }, "passwordCopied": { "message": "Parol kopyalandı" @@ -553,7 +610,7 @@ "message": "Element əlavə edildi" }, "editedItem": { - "message": "Elementə düzəliş edildi" + "message": "Element saxlanıldı" }, "deleteItemConfirmation": { "message": "Həqiqətən tullantı qutusuna göndərmək istəyirsiniz?" @@ -590,19 +647,22 @@ "message": "Giriş əlavə etmək üçün soruş" }, "addLoginNotificationDesc": { - "message": "\"Hesab əlavə et bildirişi\", ilk dəfə giriş edəndə yeni giriş məlumatlarını anbarda saxlamaq istəyib-istəmədiyinizi avtomatik olaraq soruşur." + "message": "Anbarınızda tapılmayan bir elementin əlavə edilməsi soruşulsun." + }, + "addLoginNotificationDescAlt": { + "message": "Anbarınızda tapılmayan bir elementin əlavə edilməsi soruşulsun. Giriş etmiş bütün hesablara aiddir." }, "showCardsCurrentTab": { - "message": "Kartları vərəq səhifəsində göstər" + "message": "Kartları Vərəq səhifəsində göstər" }, "showCardsCurrentTabDesc": { - "message": "Asan avto-doldurma üçün Vərəq səhifəsində kart elementlərini siyahılayın." + "message": "Asan avto-doldurma üçün Vərəq səhifəsində kart elementlərini sadalayın." }, "showIdentitiesCurrentTab": { "message": "Vərəq səhifəsində kimlikləri göstər" }, "showIdentitiesCurrentTabDesc": { - "message": "Asan avto-doldurma üçün Vərəq səhifəsində kimlik elementlərini siyahılayın." + "message": "Asan avto-doldurma üçün Vərəq səhifəsində kimlik elementlərini sadalayın." }, "clearClipboard": { "message": "Lövhəni təmizlə", @@ -616,13 +676,22 @@ "message": "Bitwarden sizin üçün bu parolu xatırlasın?" }, "notificationAddSave": { - "message": "Bəli, indi saxla" + "message": "Saxla" }, "enableChangedPasswordNotification": { "message": "Mövcud girişin güncəllənməsini soruş" }, "changedPasswordNotificationDesc": { - "message": "Bir veb saytda dəyişiklik aşkarlananda giriş parolunun güncəllənməsini soruşun." + "message": "Bir veb saytda bir dəyişiklik aşkarlandıqda giriş parolunun güncəllənməsini soruşulsun." + }, + "changedPasswordNotificationDescAlt": { + "message": "Bir veb saytda bir dəyişiklik aşkarlandıqda giriş parolunun güncəllənməsini soruşulsun. Giriş etmiş bütün hesablara aiddir." + }, + "enableUsePasskeys": { + "message": "Keçid açarlarını saxlamağı və istifadə etməyi soruş" + }, + "usePasskeysDesc": { + "message": "Yeni keçid açarlarını saxlamağı və ya anbarınızda saxlanılan keçid açarları ilə giriş etmək soruşulsun. Giriş etmiş bütün hesablara aiddir." }, "notificationChangeDesc": { "message": "Bu parolu \"Bitwarden\"də güncəlləmək istəyirsiniz?" @@ -630,18 +699,27 @@ "notificationChangeSave": { "message": "Güncəllə" }, + "notificationUnlockDesc": { + "message": "Avto-doldurma tələblərini tamamlamaq üçün Bitwarden anbarınızın kilidini açın." + }, + "notificationUnlock": { + "message": "Kilidi aç" + }, "enableContextMenuItem": { "message": "Konteks menyu seçimlərini göstər" }, "contextMenuItemDesc": { - "message": "Veb sayt üçün parol yaratmaq və uyğunlaşan giriş məlumatlarına müraciət etmək üçün ikinci klikləməni istifadə edin. " + "message": "Veb sayt üçün parol yaratmaq və uyuşan giriş məlumatlarına müraciət etmək üçün sağ klikləməni istifadə edin." + }, + "contextMenuItemDescAlt": { + "message": "Veb sayt üçün parol yaratmaq və uyuşan giriş məlumatlarına müraciət etmək üçün sağ klikləməni istifadə edin. Giriş etmiş bütün hesablara aiddir." }, "defaultUriMatchDetection": { - "message": "İlkin URI uyğunluq aşkarlaması", + "message": "İlkin URI uyuşma aşkarlaması", "description": "Default URI match detection for auto-fill." }, "defaultUriMatchDetectionDesc": { - "message": "Avto-doldurma kimi əməliyyatları icra edərkən giriş etmə prosesi üçün URI uyğunluq aşkarlamasının ilkin yolunu seçin." + "message": "Avto-doldurma kimi əməliyyatları icra edərkən giriş etmə prosesi üçün URI uyuşma aşkarlamasının idarə edliəcəyi ilkin yolu seçin." }, "theme": { "message": "Tema" @@ -649,6 +727,9 @@ "themeDesc": { "message": "Tətbiqin rəng temasını dəyişdirin." }, + "themeDescAlt": { + "message": "Tətbiqin rəng temasını dəyişdirin. Giriş etmiş bütün hesablara aiddir." + }, "dark": { "message": "Tünd", "description": "Dark color" @@ -662,7 +743,7 @@ "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." }, "exportVault": { - "message": "Anbarı ixrac et" + "message": "Anbarı xaricə köçür" }, "fileFormat": { "message": "Fayl formatı" @@ -672,19 +753,19 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Anbarın ixracını təsdiqləyin" + "message": "Anbarın xaricə köçürülməsini təsdiqlə" }, "exportWarningDesc": { - "message": "Bu ixrac faylındakı anbar verilənləriniz şifrələnməmiş formatdadır. İxrac edilən faylı, güvənli olmayan kanallar üzərində saxlamamalı və ya göndərməməlisiniz (e-poçt kimi). Bu faylı işiniz bitdikdən sonra dərhal silin." + "message": "Xaricə köçürdüyünüz bu fayldakı datanız şifrələnməmiş formatdadır. Bu faylı güvənli olmayan kanallar (e-poçt kimi) üzərində saxlamamalı və ya göndərməməlisiniz. İşiniz bitdikdən sonra faylı dərhal silin." }, "encExportKeyWarningDesc": { - "message": "Bu ixrac faylı, hesabınızın şifrələmə açarını istifadə edərək verilənlərinizi şifrələyir. Hesabınızın şifrələmə açarını döndərsəniz, bu ixrac faylının şifrəsini aça bilməyəcəyiniz üçün yenidən ixrac etməli olacaqsınız." + "message": "Xaricə köçürdüyünüz bu fayldakı data, hesabınızın şifrələmə açarı istifadə edilərək şifrələnir. Hesabınızın şifrələmə açarını dəyişdirsəniz, bu faylın şifrəsini aça bilməyəcəksiniz və onu yenidən xaricə köçürməli olacaqsınız." }, "encExportAccountWarningDesc": { - "message": "Hesab şifrələmə açarları, hər Bitwarden istifadəçi hesabı üçün unikaldır, buna görə də şifrələnmiş bir ixracı, fərqli bir hesaba idxal edə bilməzsiniz." + "message": "Hesab şifrələmə açarları, hər Bitwarden istifadəçi hesabı üçün unikaldır, buna görə də şifrələnmiş bir xaricə köçürməni, fərqli bir hesaba köçürə bilməzsiniz." }, "exportMasterPassword": { - "message": "Anbar verilənlərinizi ixrac etmək üçün ana parolunuzu daxil edin." + "message": "Anbar datanızı xaricə köçürmək üçün ana parolunuzu daxil edin." }, "shared": { "message": "Paylaşılan" @@ -693,7 +774,7 @@ "message": "Təşkilatlar barədə daha ətraflı" }, "learnOrgConfirmation": { - "message": "Bitwarden, bir təşkilat hesabı istifadə edərək anbar elementlərinizi başqaları ilə paylaşmağınıza icazə verər. Daha ətraflı məlumat üçün bitwarden.com saytını ziyarət etmək istəyirsiniz?" + "message": "Bitwarden, bir təşkilat hesabı istifadə edərək anbar elementlərinizi başqaları ilə paylaşmağınıza icazə verir. Daha ətraflı məlumat üçün bitwarden.com saytını ziyarət etmək istəyirsiniz?" }, "moveToOrganization": { "message": "Təşkilata daşı" @@ -702,7 +783,7 @@ "message": "Paylaş" }, "movedItemToOrg": { - "message": "$ITEMNAME$ $ORGNAME$ şirkətinə daşındı", + "message": "$ITEMNAME$, $ORGNAME$ şirkətinə daşındı", "placeholders": { "itemname": { "content": "$1", @@ -721,13 +802,13 @@ "message": "Daha ətraflı" }, "authenticatorKeyTotp": { - "message": "Kimlik təsdiqləyici açarı (TOTP)" + "message": "Kimlik doğrulayıcı açarı (TOTP)" }, "verificationCodeTotp": { - "message": "Təsdiqləmə kodu (TOTP)" + "message": "Doğrulama kodu (TOTP)" }, "copyVerificationCode": { - "message": "Təsdiqləmə kodunu kopyala" + "message": "Doğrulama kodunu kopyala" }, "attachments": { "message": "Qoşmalar" @@ -754,7 +835,7 @@ "message": "Fayl" }, "selectFile": { - "message": "Fayl seçin." + "message": "Bir fayl seçin" }, "maxFileSize": { "message": "Maksimal fayl həcmi 500 MB-dır" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Özəllik əlçatmazdır" }, - "updateKey": { - "message": "Şifrələmə açarınızı güncəlləyənə qədər bu özəlliyi istifadə edə bilməzsiniz." + "encryptionKeyMigrationRequired": { + "message": "Şifrələmə açarının daşınması tələb olunur. Şifrələmə açarınızı güncəlləmək üçün lütfən veb anbar üzərindən giriş edin." }, "premiumMembership": { "message": "Premium üzvlük" @@ -786,14 +867,14 @@ "ppremiumSignUpStorage": { "message": "Fayl qoşmaları üçün 1 GB şifrələnmiş saxlama sahəsi" }, - "ppremiumSignUpTwoStep": { - "message": "YubiKey, FIDO U2F və Duo kimi iki mərhələli giriş seçimləri" + "premiumSignUpTwoStepOptions": { + "message": "YubiKey və Duo kimi mülkiyyətçi iki addımlı giriş seçimləri." }, "ppremiumSignUpReports": { - "message": "Anbarınızın təhlükəsiyini təmin etmək üçün parol gigiyenası, hesab sağlamlığı və verilənlərin pozulması hesabatları." + "message": "Anbarınızın güvənliyini təmin etmək üçün parol gigiyenası, hesab sağlamlığı və data pozuntusu hesabatları." }, "ppremiumSignUpTotp": { - "message": "Anbarınızdakı hesablar üçün TOTP təsdiqləmə kodu (2FA) yaradıcısı." + "message": "Anbarınızdakı hesablar üçün TOTP doğrulama kodu (2FA) yaradıcısı." }, "ppremiumSignUpSupport": { "message": "Prioritet müştəri dəstəyi." @@ -829,10 +910,10 @@ "message": "TOTP-ni avtomatik kopyala" }, "disableAutoTotpCopyDesc": { - "message": "Hesabınıza əlavə edilən kimlik təsdiqləyici açarı varsa, giriş məlumatları avto-doldurulanda TOTP təsdiqləmə kodu da avtomatik olaraq lövhəyə kopyalanacaq." + "message": "Hesabınıza əlavə edilən kimlik doğrulayıcı açarı varsa, giriş məlumatları avto-doldurulanda TOTP doğrulama kodu da avtomatik olaraq lövhəyə kopyalanacaq." }, "enableAutoBiometricsPrompt": { - "message": "Açılışda biometrik təsdiqləmə soruş" + "message": "Açılışda biometrik soruşulsun" }, "premiumRequired": { "message": "Premium üzvlük lazımdır" @@ -841,10 +922,10 @@ "message": "Bu özəlliyi istifadə etmək üçün premium üzvlük lazımdır." }, "enterVerificationCodeApp": { - "message": "Kimlik təsdiqləyici tətbiqindən 6 rəqəmli təsdiqləmə kodunu daxil edin." + "message": "Kimlik doğrulayıcı tətbiqindən 6 rəqəmli doğrulama kodunu daxil edin." }, "enterVerificationCodeEmail": { - "message": "$EMAIL$ ünvanına göndərilən e-poçtdakı 6 rəqəmli təsdiqləmə kodunu daxil edin.", + "message": "$EMAIL$ ünvanına göndərilən e-poçtdakı 6 rəqəmli doğrulama kodunu daxil edin.", "placeholders": { "email": { "content": "$1", @@ -853,7 +934,7 @@ } }, "verificationCodeEmailSent": { - "message": "Təsdiqləmə poçtu $EMAIL$ ünvanına göndərildi.", + "message": "Doğrulama poçtu $EMAIL$ ünvanına göndərildi.", "placeholders": { "email": { "content": "$1", @@ -865,49 +946,49 @@ "message": "Məni xatırla" }, "sendVerificationCodeEmailAgain": { - "message": "Təsdiqləmə kodu olan e-poçtu yenidən göndər" + "message": "Doğrulama kodu olan e-poçtu yenidən göndər" }, "useAnotherTwoStepMethod": { - "message": "Başqa bir iki mərhələli giriş metodu istifadə edin" + "message": "Başqa bir iki addımlı giriş üsulu istifadə edin" }, "insertYubiKey": { "message": "\"YubiKey\"i kompüterinizin USB portuna taxın, daha sonra düyməsinə toxunun." }, "insertU2f": { - "message": "Güvənlik açarını kompüterinizin USB portun taxın. Düyməsi varsa toxunun." + "message": "Güvənlik açarını kompüterinizin USB portuna taxın. Düyməsi varsa toxunun." }, "webAuthnNewTab": { - "message": "WebAuthn 2FA təsdiqləməsini başladın. Yeni bir vərəq açmaq üçün aşağıdakı düyməyə klikləyin və yeni vərəqdəki təlimatları izləyin." + "message": "WebAuthn 2FA doğrulamasını başladın. Yeni bir vərəq açmaq üçün aşağıdakı düyməyə klikləyin və yeni vərəqdəki təlimatları izləyin." }, "webAuthnNewTabOpen": { "message": "Yeni vərəq aç" }, "webAuthnAuthenticate": { - "message": "WebAuthn təsdiqləmə" + "message": "WebAuthn kimlik doğrulama" }, "loginUnavailable": { "message": "Giriş edilə bilmir" }, "noTwoStepProviders": { - "message": "Bu hesabın iki mərhələli giriş özəlliyi fəaldır, ancaq, konfiqurasiya edilmiş iki mərhələli provayderlərin heç biri bu brauzer tərəfindən dəstəklənmir." + "message": "Bu hesabın iki addımlı giriş özəlliyi qurulub, ancaq, konfiqurasiya edilmiş iki addımlı provayderlərin heç biri bu brauzer tərəfindən dəstəklənmir." }, "noTwoStepProviders2": { - "message": "Zəhmət olmasa (Chrome kimi) dəstəklənən bir veb brauzer istifadə edin və/və ya veb brauzerlərə (kimlik təsdiqləyici tətbiq kimi) daha yaxşı dəstəklənən provayderlər əlavə edin." + "message": "Lütfən (Chrome kimi) dəstəklənən bir veb brauzer istifadə edin və/və ya veb brauzerlərə (kimlik doğrulayıcı tətbiq kimi) daha yaxşı dəstəklənən provayderlər əlavə edin." }, "twoStepOptions": { - "message": "İki mərhələli giriş seçimləri" + "message": "İki addımlı giriş seçimləri" }, "recoveryCodeDesc": { - "message": "İki mərhələli təsdiqləmə provayderlərinə müraciəti itirmisiniz? Bərpa kodunuzu istifadə edərək hesabınızdakı bütün iki mərhələli provayderləri sıradan çıxara bilərsiniz." + "message": "İki faktorlu provayderlərinə müraciəti itirmisiniz? Geri qaytarma kodunuzu istifadə edərək hesabınızdakı bütün iki faktorlu provayderləri sıradan çıxarda bilərsiniz." }, "recoveryCodeTitle": { - "message": "Bərpa kodu" + "message": "Geri qaytarma kodu" }, "authenticatorAppTitle": { - "message": "Kimlik təsdiqləyici tətbiqi" + "message": "Kimlik doğrulayıcı tətbiqi" }, "authenticatorAppDesc": { - "message": "Vaxt əsaslı təsdiqləmə kodları yaratmaq üçün (Authy və ya Google Authenticator kimi) kimlik təsdiqləyici tətbiq istifadə edin.", + "message": "Vaxt əsaslı doğrulama kodları yaratmaq üçün (Authy və ya Google Authenticator kimi) kimlik doğrulayıcı tətbiq istifadə edin.", "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." }, "yubiKeyTitle": { @@ -917,24 +998,24 @@ "message": "Hesabınıza müraciət etmək üçün bir YubiKey istifadə edin. YubiKey 4, 4 Nano, 4C və NEO cihazları ilə işləyir." }, "duoDesc": { - "message": "Duo Security ilə təsdiqləmək üçün Duo Mobile tətbiqi, SMS, telefon zəngi və ya U2F güvənlik açarını istifadə edin.", + "message": "Duo Security ilə doğrulamaq üçün Duo Mobile tətbiqi, SMS, telefon zəngi və ya U2F güvənlik açarını istifadə edin.", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "duoOrganizationDesc": { - "message": "Təşkilatınızını Duo Security ilə təsdiqləmək üçün Duo Mobile tətbiqi, SMS, telefon zəngi və ya U2F güvənlik açarını istifadə edin.", + "message": "Təşkilatınızını Duo Security ilə doğrulamaq üçün Duo Mobile tətbiqi, SMS, telefon zəngi və ya U2F güvənlik açarını istifadə edin.", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "webAuthnTitle": { "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Hesabınıza müraciət etmək üçün istənilən bir WebAuthn fəallaşdırılmış güvənlik açarı istifadə edin." + "message": "Hesabınıza müraciət etmək üçün WebAuthn özəllikli istənilən bir güvənlik açarı istifadə edin." }, "emailTitle": { "message": "E-poçt" }, "emailDesc": { - "message": "Təsdiqləmə kodları e-poçt ünvanınıza göndəriləcək." + "message": "Doğrulama kodları e-poçt ünvanınıza göndəriləcək." }, "selfHostedEnvironment": { "message": "Öz-özünə sahiblik edən mühit" @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Mühit URL-ləri saxlanıldı." }, + "showAutoFillMenuOnFormFields": { + "message": "Form sahələrində avto-doldurma menyusunu göstər", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Giriş etmiş bütün hesablara aiddir." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Ziddiyyətləri önləmək üçün brauzerinizin daxili parol meneceri ayarlarını söndürün." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Brauzer ayarlarına düzəliş et." + }, + "autofillOverlayVisibilityOff": { + "message": "Bağlı", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Sahə seçiləndə (fokusda)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Avto-doldurma nişanı seçiləndə", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Səhifə yüklənəndə avto-doldurmanı fəallaşdır" }, @@ -982,16 +1088,16 @@ "message": "Avto-doldurma haqqında daha ətraflı" }, "defaultAutoFillOnPageLoad": { - "message": "Giriş məlumatları üçün ilkin avto-doldurma tənzimləməsi" + "message": "Giriş elementləri üçün ilkin avto-doldurma ayarı" }, "defaultAutoFillOnPageLoadDesc": { - "message": "\"Səhifə yüklənəndə avto-doldur\"u fəal etdikdən sonra, fərdi giriş elementləri üçün özəlliyi fəallaşdıra və ya sıradan çıxarda bilərsiniz. Bu ayrı-ayrı konfiqurasiya edilməmiş giriş elementləri üçün ilkin tənzimləmədir." + "message": "Fərdi giriş elementləri üçün \"Səhifə yüklənəndə avto-doldur\"u elementin Düzəliş et görünüşündən söndürə bilərsiniz." }, "itemAutoFillOnPageLoad": { "message": "Səhifə yüklənəndə avto-doldur (Seçimlərdə fəallaşdırılıbsa)" }, "autoFillOnPageLoadUseDefault": { - "message": "İlkin tənzimləməni istifadə et" + "message": "İlkin ayarı istifadə et" }, "autoFillOnPageLoadYes": { "message": "Səhifə yüklənəndə avto-doldur" @@ -1000,7 +1106,7 @@ "message": "Səhifə yüklənəndə avto-doldurma" }, "commandOpenPopup": { - "message": "Anbar açılan pəncərədə aç" + "message": "Anbarı açılan pəncərədə aç" }, "commandOpenSidebar": { "message": "Anbar yan sətirdə aç" @@ -1030,7 +1136,7 @@ "message": "Yeni özəl sahə" }, "dragToSort": { - "message": "Sıralamaq üçün sürüşdürün" + "message": "Sıralamaq üçün sürüklə" }, "cfTypeText": { "message": "Mətn" @@ -1042,15 +1148,15 @@ "message": "Boolean" }, "cfTypeLinked": { - "message": "Əlaqə yaradıldı", + "message": "Əlaqələndirildi", "description": "This describes a field that is 'linked' (tied) to another field." }, "linkedValue": { - "message": "Əlaqəli dəyər", + "message": "Əlaqələndirilmiş dəyər", "description": "This describes a value that is 'linked' (tied) to another value." }, "popup2faCloseMessage": { - "message": "Təsdiqləmə kodunu alacağınız e-poçtu yoxlamaq üçün bu pəncərə xaricində bir yerə klikləsəniz bu pəncərə bağlanacaq. Bu pəncərənin bağlanmaması üçün yeni bir pəncərədə açmaq istəyirsiniz?" + "message": "Doğrulama kodunu alacağınız e-poçtu yoxlamaq üçün bu pəncərə xaricində bir yerə klikləsəniz bu pəncərə bağlanacaq. Bu pəncərənin bağlanmaması üçün yeni bir pəncərədə açmaq istəyirsiniz?" }, "popupU2fCloseMessage": { "message": "Bu brauzer bu açılan pəncərədə U2F tələblərini emal edə bilmir. U2F istifadə edərək giriş etmək üçün bu açılan pəncərəni yeni bir pəncərədə açmaq istəyirsiniz?" @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Hər girişin yanında tanına bilən təsvir göstər." }, + "faviconDescAlt": { + "message": "Hər bir giriş elementinin yanında tanına bilən bir təsvir göstər. Giriş etmiş bütün hesablara aiddir." + }, "enableBadgeCounter": { "message": "Nişan sayğacını göstər" }, @@ -1255,7 +1364,7 @@ "description": "To clear something out. example: To clear browser history." }, "checkPassword": { - "message": "Parolunuzun oğurlanıb oğurlanmadığını yoxlayın." + "message": "Parolun ifşalanıb ifşalanmadığını yoxlayın." }, "passwordExposed": { "message": "Bu parol, məlumat pozuntularında $VALUE$ dəfə üzə çıxıb. Dəyişdirməyi məsləhət görürük.", @@ -1292,11 +1401,11 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Uyğunluq aşkarlaması", + "message": "Uyuşmanı aşkarlama", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { - "message": "İlkin uyğunluq aşkarlaması", + "message": "İlkin uyuşma aşkarlaması", "description": "Default URI match detection for auto-fill." }, "toggleOptions": { @@ -1321,7 +1430,7 @@ "message": "Bütün elementlər" }, "noPasswordsInList": { - "message": "Siyahılanacaq heç bir parol yoxdur." + "message": "Sadalanacaq heç bir parol yoxdur." }, "remove": { "message": "Çıxart" @@ -1342,13 +1451,13 @@ "description": "ex. Date this password was updated" }, "neverLockWarning": { - "message": "\"Heç vaxt\" seçimini istifadə etmək istədiyinizə əminsiniz? Kilid seçimini \"Heç vaxt\" olaraq tənzimləsəniz, anbarınızın şifrələmə açarı cihazınızda saxlanılacaq. Bu seçimi istifadə etsəniz, cihazınızı daha yaxşı mühafizə etməlisiniz." + "message": "\"Heç vaxt\" seçimini istifadə etmək istədiyinizə əminsiniz? Kilid seçimini \"Heç vaxt\" olaraq ayarlasanız, anbarınızın şifrələmə açarı cihazınızda saxlanılacaq. Bu seçimi istifadə etsəniz, cihazınızı daha yaxşı mühafizə etməlisiniz." }, "noOrganizationsList": { "message": "Heç bir təşkilata aid deyilsiniz. Təşkilatlar, elementlərinizi digər istifadəçilərlə güvənli şəkildə paylaşmağınızı təmin edir." }, "noCollectionsInList": { - "message": "Siyahılanacaq heç bir kolleksiya yoxdur." + "message": "Sadalanacaq heç bir kolleksiya yoxdur." }, "ownership": { "message": "Sahiblik" @@ -1382,7 +1491,7 @@ "message": "PIN ilə kilidi açın" }, "setYourPinCode": { - "message": "Bitwarden-in kilidini açmaq üçün PIN kod tənzimləyin. Hər tətbiqdən tam çıxış edəndə PIN tənzimləmələriniz sıfırlanacaq." + "message": "Bitwarden-in kilidini açmaq üçün PIN kodunuzu ayarlayın. Tətbiqdən tam çıxış etdikdə PIN ayarlarınız sıfırlanacaq." }, "pinRequired": { "message": "PIN kod lazımdır." @@ -1390,14 +1499,17 @@ "invalidPin": { "message": "Yararsız PIN kod." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Həddən artıq yararsız PIN giriş cəhdi. Çıxış edilir." + }, "unlockWithBiometrics": { - "message": "Biometriklərlə kilidi açın" + "message": "Kilidi biometriklə açın" }, "awaitDesktop": { "message": "Masaüstündən təsdiq gözlənilir" }, "awaitDesktopDesc": { - "message": "Brauzer üçün biometrikləri fəallaşdırmaq üçün zəhmət olmasa Bitwarden masaüstü tətbiqində biometrik istifadəsini təsdiqləyin." + "message": "Brauzer üzrə biometrikləri qurmaq üçün lütfən Bitwarden masaüstü tətbiqində biometrik istifadəsini təsdiqləyin." }, "lockWithMasterPassOnRestart": { "message": "Brauzer yenidən başladılanda ana parolla kilidlə" @@ -1412,10 +1524,10 @@ "message": "Klonla" }, "passwordGeneratorPolicyInEffect": { - "message": "Bir və ya daha çox təşkilat siyasətləri yaradıcı seçimlərinizə təsir edir." + "message": "Bir və ya daha çox təşkilat siyasəti yaradıcı ayarlarınıza təsir edir." }, "vaultTimeoutAction": { - "message": "Anbara müraciət vaxtının bitmə əməliyyatı" + "message": "Anbar vaxtının bitmə əməliyyatı" }, "lock": { "message": "Kilidlə", @@ -1440,14 +1552,11 @@ "restoreItem": { "message": "Elementi bərpa et" }, - "restoreItemConfirmation": { - "message": "Elementi bərpa etmək istədiyinizə əminsiniz?" - }, "restoredItem": { "message": "Element bərpa edildi" }, "vaultTimeoutLogOutConfirmation": { - "message": "Çıxış edəndə, anbarınıza bütün müraciətiniz dayanacaq və vaxt bitməsindən sonra onlayn kimlik təsdiqləməsi tələb olunacaq. Bu tənzimləməni istifadə etmək istədiyinizə əminsiniz?" + "message": "Çıxış etdikdə anbarınıza bütün müraciətiniz dayanacaq və vaxt bitməsindən sonra onlayn kimlik doğrulaması tələb olunacaq. Bu ayarı istifadə etmək istədiyinizə əminsiniz?" }, "vaultTimeoutLogOutConfirmationTitle": { "message": "Vaxt bitmə əməliyyat təsdiqi" @@ -1468,10 +1577,10 @@ "message": "Hələ də bu girişi doldurmaq istəyirsiniz?" }, "autofillIframeWarning": { - "message": "Form sahibliyi, saxlanılmış girişinizin URI-ından fərqli bir domen tərəfindən həyata keçirilir. Yenə də avto-doldurmaq üçün \"Oldu\"ya, dayandırmaq üçün \"İmtina\"ya basın." + "message": "Form sahibliyi, saxlanılmış girişinizin URI-sindən fərqli bir domen tərəfindən edilir. Yenə də avto-doldurmaq üçün \"Oldu\"ya, dayandırmaq üçün \"İmtina\"ya basın." }, "autofillIframeWarningTip": { - "message": "Gələcəkdə bu xəbərdarlığın qarşısını almaq üçün, $HOSTNAME$ URI-nı bu sayt üçün Bitwarden giriş elementinizdə saxlayın.", + "message": "Gələcəkdə bu xəbərdarlığı önləmək üçün, $HOSTNAME$ URI-nı bu sayt üçün Bitwarden giriş elementinizdə saxlayın.", "placeholders": { "hostname": { "content": "$1", @@ -1480,7 +1589,7 @@ } }, "setMasterPassword": { - "message": "Ana parolu tənzimlə" + "message": "Ana parolu ayarla" }, "currentMasterPass": { "message": "Hazırkı ana parol" @@ -1546,52 +1655,52 @@ "message": "Gizlilik Siyasəti" }, "hintEqualsPassword": { - "message": "Parol məsləhəti, parolunuzla eyni ola bilməz." + "message": "Parol ipucusu, parolunuzla eyni ola bilməz." }, "ok": { "message": "Oldu" }, "desktopSyncVerificationTitle": { - "message": "Masaüstü eyniləşdirmə təsdiqləməsi" + "message": "Masaüstü sinxr doğrulaması" }, "desktopIntegrationVerificationText": { - "message": "Zəhmət olmasa masaüstü tətbiqin bu barmaq izini gördüyünü təsdiqləyin:" + "message": "Lütfən masaüstü tətbiqin bu barmaq izini gördüyünü doğrulayın: " }, "desktopIntegrationDisabledTitle": { - "message": "Brauzer inteqrasiyası fəal deyil" + "message": "Brauzer inteqrasiyası qurulmayıb" }, "desktopIntegrationDisabledDesc": { - "message": "Brauzer inteqrasiyası Bitwarden masaüstü tətbiqində fəal deyil. Zəhmət olmasa masaüstü tətbiqinin tənzimləmələrində fəallaşdırın." + "message": "Brauzer inteqrasiyası Bitwarden masaüstü tətbiqində qurulmayıb. Lütfən bunu masaüstü tətbiqinin ayarlarında qurun." }, "startDesktopTitle": { "message": "Bitwarden masaüstü tətbiqini başlat" }, "startDesktopDesc": { - "message": "Bu funksiyanın istifadə edilə bilməsi üçün Bitwarden masaüstü tətbiqi başladılmalıdır." + "message": "Biometriklə kilidi aça bilmək üçün Bitwarden masaüstü tətbiqi başladılmalıdır." }, "errorEnableBiometricTitle": { - "message": "Biometriklər fəallaşdırıla bilmədi" + "message": "Biometriklər qurula bilmir" }, "errorEnableBiometricDesc": { "message": "Əməliyyat, masaüstü tətbiqi tərəfindən ləğv edildi" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Masaüstü tətbiqi, güvənli rabitə kanalını yararsız etdi. Bu əməliyyatı yenidən icra edin" + "message": "Masaüstü tətbiqi, güvənli rabitə kanalını yararsız etdi. Lütfən bu əməliyyatı yenidən icra edin" }, "nativeMessagingInvalidEncryptionTitle": { "message": "Masaüstü rabitə əlaqəsi kəsildi" }, "nativeMessagingWrongUserDesc": { - "message": "Masaüstü tətbiqdə fərqli bir hesabla giriş edilib. Hər iki tətbiqin eyni hesabla giriş etdiyinə əmin olun." + "message": "Masaüstü tətbiqdə fərqli bir hesaba giriş edilib. Lütfən hər iki tətbiqin eyni hesaba giriş etdiyinə əmin olun." }, "nativeMessagingWrongUserTitle": { - "message": "Hesablar uyğunlaşmır" + "message": "Hesablar uyuşmur" }, "biometricsNotEnabledTitle": { - "message": "Biometriklə fəal deyil" + "message": "Biometriklər qurulmayıb" }, "biometricsNotEnabledDesc": { - "message": "Brauzer biometrikləri, əvvəlcə tənzimləmələrdə masaüstü biometriklərinin fəallaşdırılmasını tələb edir." + "message": "Brauzer biometrikləri, əvvəlcə ayarlarda masaüstü biometriklərinin qurulmasını tələb edir." }, "biometricsNotSupportedTitle": { "message": "Biometriklər dəstəklənmir" @@ -1599,17 +1708,23 @@ "biometricsNotSupportedDesc": { "message": "Brauzer biometrikləri bu cihazda dəstəklənmir." }, + "biometricsFailedTitle": { + "message": "Biometrik uğursuzdur" + }, + "biometricsFailedDesc": { + "message": "Biometriklər tamamlana bilmir, ana parol istifadə etməyi düşünün və ya çıxış edin. Bu problem davam edərsə, lütfən Bitwarden dəstəyi ilə əlaqə saxlayın." + }, "nativeMessaginPermissionErrorTitle": { "message": "İcazə verilmədi" }, "nativeMessaginPermissionErrorDesc": { - "message": "Bitwarden masaüstü tətbiqi ilə əlaqə qurma icazəsi olmadan, brauzer genişləndirməsində biometrikləri təmin edə bilmərik. Zəhmət olmasa yenidən sınayın." + "message": "Bitwarden masaüstü tətbiqi ilə əlaqə qurma icazəsi olmadan, brauzer uzantısında biometrikləri təmin edə bilmirik. Lütfən yenidən sınayın." }, "nativeMessaginPermissionSidebarTitle": { "message": "İcazə tələb xətası" }, "nativeMessaginPermissionSidebarDesc": { - "message": "Bu əməliyyatı yan sətirdən edə bilməzsiniz. Zəhmət olmasa açılan pəncərədə yenidən cəhd edin." + "message": "Bu əməliyyatı kənar çubuqda icra edilə bilməz. Lütfən açılan pəncərədə yenidən sınayın." }, "personalOwnershipSubmitError": { "message": "Müəssisə Siyasətinə görə, elementləri şəxsi anbarınızda saxlamağınız məhdudlaşdırılıb. Sahiblik seçimini təşkilat olaraq dəyişdirin və mövcud kolleksiyalar arasından seçim edin." @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Bir təşkilat siyasəti, sahiblik seçimlərinizə təsir edir." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Bir təşkilat siyasəti, elementlərin fərdi anbarınıza köçürülməsini əngəllədi." + }, "excludedDomains": { "message": "İstisna edilən domenlər" }, "excludedDomainsDesc": { - "message": "Bitwarden bu domenlər üçün giriş təfsilatlarını saxlamağı soruşmayacaq. Dəyişikliklərin təsirli olması üçün səhifəni təzələməlisiniz." + "message": "Bitwarden, bu domenlər üçün giriş detallarını saxlamağı soruşmayacaq. Dəyişikliklərin qüvvəyə minməsi üçün səhifəni təzələməlisiniz." + }, + "excludedDomainsDescAlt": { + "message": "Bitwarden, giriş etmiş bütün hesablar üçün bu domenlərin giriş detallarını saxlamağı soruşmayacaq. Dəyişikliklərin qüvvəyə minməsi üçün səhifəni təzələməlisiniz." }, "excludedDomainsInvalidDomain": { - "message": "$DOMAIN$ etibarlı bir domen deyil", + "message": "$DOMAIN$ yararlı bir domen deyil", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1668,11 +1789,11 @@ "message": "Parolla qorunan" }, "copySendLink": { - "message": "\"Send\" bağlantısını kopyala", + "message": "\"Send\" keçidini kopyala", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "removePassword": { - "message": "Parolu çıxart" + "message": "Parolu sil" }, "delete": { "message": "Sil" @@ -1685,14 +1806,14 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { - "message": "\"Send\" bağlantısı", + "message": "\"Send\" keçidi", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disabled": { "message": "Sıradan çıxarıldı" }, "removePasswordConfirmation": { - "message": "Parolu çıxartmaq istədiyinizə əminsiniz?" + "message": "Parolu silmək istədiyinizə əminsiniz?" }, "deleteSend": { "message": "\"Send\"i sil", @@ -1728,7 +1849,7 @@ "message": "Bitmə tarixi" }, "expirationDateDesc": { - "message": "Əgər tənzimlənsə, göstərilən tarix və vaxtda \"Send\"ə müraciət başa çatacaq.", + "message": "Əgər ayarlanıbsa, göstərilən tarix və vaxtda \"Send\"ə müraciət başa çatacaq.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "oneDay": { @@ -1750,7 +1871,7 @@ "message": "Maksimal müraciət sayı" }, "maximumAccessCountDesc": { - "message": "Əgər tənzimlənsə, istifadəçilər maksimal müraciət sayına çatdıqdan sonra bu \"Send\"ə müraciət edə bilməyəcək.", + "message": "Əgər ayarlanıbsa, istifadəçilər maksimal müraciət sayına çatdıqdan sonra bu \"Send\"ə müraciət edə bilməyəcək.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendPasswordDesc": { @@ -1758,15 +1879,15 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNotesDesc": { - "message": "Bu \"Send\" ilə bağlı gizli qeydlər.", + "message": "Bu \"Send\" ilə bağlı gizli notlar.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Heç kimin müraciət edə bilməməsi üçün bu \"Send\"i sıradan çıxart.", + "message": "Heç kimin müraciət edə bilməməsi üçün bu \"Send\"i deaktiv et.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { - "message": "Saxladıqdan sonra \"Send\"in bağlantısını lövhəyə kopyala.", + "message": "Saxladıqdan sonra \"Send\"in keçidini lövhəyə kopyala.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTextDesc": { @@ -1780,14 +1901,14 @@ "message": "Hazırkı müraciət sayı" }, "createSend": { - "message": "Yeni \"Send\" yarat", + "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 parol" }, "sendDisabled": { - "message": "Send sıradan çıxarıldı", + "message": "Send silindi", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1799,17 +1920,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "\"Send\"ə düzəliş edildi", + "message": "\"Send\" saxlanıldı", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { - "message": "Fayl seçmək üçün (mümkünsə) genişləndirməni yan sətirdə açın və ya bu bannerə klikləyərək yeni bir pəncərədə açın." + "message": "Bir fayl seçmək üçün (mümkünsə) kənar çubuqdakı uzantını açın və ya bu bannerə klikləyərək yeni bir pəncərədə açın." }, "sendFirefoxFileWarning": { - "message": "Firefox istifadə edərək fayl seçmək üçün genişləndirməni yan sətirdə açın və ya bu bannerə klikləyərək yeni bir pəncərədə açın." + "message": "Firefox istifadə edərək bir fayl seçmək üçün kənar çubuqdakı uzantını açın və ya bu bannerə klikləyərək yeni bir pəncərədə açın." }, "sendSafariFileWarning": { - "message": "Safari istifadə edərək fayl seçmək üçün bu bannerə klikləyərək yeni bir pəncərədə açın." + "message": "Safari istifadə edərək bir fayl seçmək üçün bu bannerə klikləyərək yeni bir pəncərədə açın." }, "sendFileCalloutHeader": { "message": "Başlamazdan əvvəl" @@ -1827,16 +1948,16 @@ "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" }, "expirationDateIsInvalid": { - "message": "Göstərilən son istifadə tarixi etibarsızdır." + "message": "Göstərilən son istifadə tarixi yararsızdır." }, "deletionDateIsInvalid": { - "message": "Göstərilən silinmə tarixi etibarsızdır." + "message": "Göstərilən silinmə tarixi yararsızdır." }, "expirationDateAndTimeRequired": { - "message": "Son istifadə tarixi və vaxtı lazımdır." + "message": "Son istifadə tarixi və vaxtı tələb olunur." }, "deletionDateAndTimeRequired": { - "message": "Silinmə tarixi və vaxtı lazımdır." + "message": "Silinmə tarixi və vaxtı tələb olunur." }, "dateParsingError": { "message": "Silinmə və son istifadə tarixlərini saxlayarkən xəta baş verdi." @@ -1854,13 +1975,13 @@ "message": "Ana parol təsdiqi" }, "passwordConfirmationDesc": { - "message": "Bu əməliyyat qorumalıdır, davam etmək üçün zəhmət olmasa kimliyinizi təsdiqləmək üçün ana parolunuzu təkrar daxil edin." + "message": "Bu əməliyyat qorumalıdır, davam etmək üçün lütfən kimliyinizi doğrulamaq məqsədilə ana parolunuzu yenidən daxil edin." }, "emailVerificationRequired": { - "message": "E-poçt təsdiqləməsi tələb olunur" + "message": "E-poçt doğrulaması tələb olunur" }, "emailVerificationRequiredDesc": { - "message": "Bu özəlliyi istifadə etmək üçün e-poçtunuzu təsdiqləməlisiniz. E-poçtunuzu veb anbarında təsdiqləyə bilərsiniz." + "message": "Bu özəlliyi istifadə etmək üçün e-poçtunuzu doğrulamalısınız. E-poçtunuzu veb anbarında doğrulaya bilərsiniz." }, "updatedMasterPassword": { "message": "Güncəllənmiş ana parol" @@ -1869,22 +1990,35 @@ "message": "Ana parolu güncəllə" }, "updateMasterPasswordWarning": { - "message": "Ana parolunuz təzəlikcə təşkilatınızdakı bir administrator tərəfindən dəyişdirildi. Anbara müraciət üçün indi güncəlləməlisiniz. Davam etsəniz, hazırkı seansdan çıxış etmiş və təkrar giriş etməli olacaqsınız. Digər cihazlardakı aktiv seanslar bir saata qədər aktiv qalmağa davam edə bilər." + "message": "Ana parolunuz təzəlikcə təşkilatınızdakı bir administrator tərəfindən dəyişdirildi. Anbara müraciət üçün indi güncəlləməlisiniz. Davam etsəniz, hazırkı seansdan çıxış edəcəksiniz və təkrar giriş etməli olacaqsınız. Digər cihazlardakı aktiv seanslar bir saata qədər aktiv qalmağa davam edə bilər." }, "updateWeakMasterPasswordWarning": { - "message": "Ana parolunuz təşkilatınızdakı siyasətlərdən birinə və ya bir neçəsinə uyğun gəlmir. Anbara müraciət üçün ana parolunuzu indi güncəlləməlisiniz. Davam etsəniz, hazırkı seansdan çıxış etmiş və təkrar giriş etməli olacaqsınız. Digər cihazlardakı aktiv seanslar bir saata qədər aktiv qalmağa davam edə bilər." + "message": "Ana parolunuz təşkilatınızdakı siyasətlərdən birinə və ya bir neçəsinə uyğun gəlmir. Anbara müraciət üçün ana parolunuzu indi güncəlləməlisiniz. Davam etsəniz, hazırkı seansdan çıxış edəcəksiniz və təkrar giriş etməli olacaqsınız. Digər cihazlardakı aktiv seanslar bir saata qədər aktiv qalmağa davam edə bilər." }, "resetPasswordPolicyAutoEnroll": { - "message": "Avtomatik qeydiyyat" + "message": "Avtomatik yazılma" }, "resetPasswordAutoEnrollInviteWarning": { - "message": "Bu təşkilat, sizi \"parol sıfırlama\"da avtomatik olaraq qeydiyyata alan müəssisə siyasətinə sahibdir. Qeydiyyat, təşkilat administratorlarına ana parolunuzu dəyişdirmə icazəsi verəcək." + "message": "Bu təşkilatın sizi \"parol sıfırlama\" əməliyyatına avtomatik olaraq yazacaq olan müəssisə siyasəti var. Yazılma, təşkilat administratorlarına ana parolunuzu dəyişdirmə icazəsi verəcək." }, "selectFolder": { "message": "Qovluq seçin..." }, - "ssoCompleteRegistration": { - "message": "SSO ilə giriş prosesini tamamlamaq üçün zəhmət olmasa anbarınıza müraciət etmək və onu qorumaq üçün bir ana parol tənzimləyin." + "noFoldersFound": { + "message": "Heç bir qovluq tapılmadı", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Təşkilatınızın icazələri güncəlləndi və bir ana parol ayarlamağınızı tələb edir.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Təşkilatınız bir ana parol ayarlamağı tələb edir.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Doğrulama tələb olunur", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Saat" @@ -1906,7 +2040,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "Təşkilatınızın siyasətləri, anbarınızın vaxt bitişinə təsir edir. Anbar vaxt bitişi üçün icazə verilən maksimum vaxt $HOURS$ saat $MINUTES$ dəqiqədir. Anbar vaxt bitişi əməliyyatı $ACTION$ olaraq tənzimləndi.", + "message": "Təşkilatınızın siyasətləri, anbarınızın vaxt bitişinə təsir edir. Anbar vaxt bitişi üçün icazə verilən maksimum vaxt $HOURS$ saat $MINUTES$ dəqiqədir. Anbar vaxt bitişi əməliyyatı $ACTION$ olaraq ayarlandı.", "placeholders": { "hours": { "content": "$1", @@ -1923,7 +2057,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "Təşkilatınızın siyasətləri, anbar vaxt bitişi əməliyyatınızı $ACTION$ olaraq tənzimlədi.", + "message": "Təşkilatınızın siyasətləri, anbar vaxt bitişi əməliyyatınızı $ACTION$ olaraq ayarladı.", "placeholders": { "action": { "content": "$1", @@ -1932,16 +2066,16 @@ } }, "vaultTimeoutTooLarge": { - "message": "Anbar vaxt bitişi, təşkilatınız tərəfindən tənzimlənən məhdudiyyətləri aşır." + "message": "Anbar vaxt bitişi, təşkilatınız tərəfindən ayarlanan məhdudiyyətləri aşır." }, "vaultExportDisabled": { - "message": "Anbar ixracı sıradan çıxarıldı" + "message": "Anbarın xaricə köçürülməsi əlçatmazdır" }, "personalVaultExportPolicyInEffect": { - "message": "Bir və ya daha çox təşkilat siyasəti, fərdi anbarınızı ixrac etməyinizin qarşısını alır." + "message": "Bir və ya daha çox təşkilat siyasəti, fərdi anbarınızı xaricə köçürməyinizi əngəlləyir." }, "copyCustomFieldNameInvalidElement": { - "message": "Etibarlı form elementi müəyyənləşdirilə bilmir. Bunun əvəzinə HTML-i nəzərdən keçirməyi sınayın." + "message": "Yararlı bir form elementi müəyyənləşdirilə bilmir. Bunun əvəzinə HTML-i incələməyi sınayın." }, "copyCustomFieldNameNotUnique": { "message": "Unikal identifikator tapılmadı." @@ -1974,13 +2108,13 @@ "message": "Simvol sayını dəyişdir" }, "sessionTimeout": { - "message": "Seansınızın vaxtı bitdi. Zəhmət olmasa geri qayıdıb yenidən giriş etməyə cəhd edin." + "message": "Seansınızın vaxtı bitdi. Lütfən geri qayıdıb yenidən giriş etməyə cəhd edin." }, "exportingPersonalVaultTitle": { - "message": "Şəxsi anbarın ixracı" + "message": "Fərdi anbarın xaricə köçürülməsi" }, - "exportingPersonalVaultDescription": { - "message": "Yalnız $EMAIL$ ilə əlaqəli şəxsi anbar elementləri ixrac ediləcək. Təşkilat anbar elementləri daxil edilmir.", + "exportingIndividualVaultDescription": { + "message": "Yalnız $EMAIL$ ilə əlaqələndirilmiş fərdi anbar elementləri xaricə köçürüləcək. Təşkilat anbar elementləri daxil edilməyəcək. Yalnız anbar element məlumatları xaricə köçürüləcək və əlaqələndirilmiş qoşmalar daxil edilməyəcək.", "placeholders": { "email": { "content": "$1", @@ -2001,17 +2135,17 @@ "message": "İstifadəçi adı növü" }, "plusAddressedEmail": { - "message": "Plyus ünvanlı e-poçt", + "message": "Üstəgəl ünvanlı e-poçt", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { - "message": "E-poçt provayderinizin alt ünvan özəlliklərini istifadə et." + "message": "E-poçt provayderinizin alt ünvanlama imkanlarını istifadə edin." }, "catchallEmail": { - "message": "Catch-all E-poçt" + "message": "Catch-all e-poçt" }, "catchallEmailDesc": { - "message": "Domeninizin konfiqurasiya edilmiş hamısını yaxalama gələn qutusunu istifadə edin." + "message": "Domeninizin konfiqurasiyalı catch-all gələn qutusunu istifadə edin." }, "random": { "message": "Təsadüfi" @@ -2054,10 +2188,10 @@ "message": "Premium abunəlik tələb olunur" }, "organizationIsDisabled": { - "message": "Təşkilat sıradan çıxarıldı." + "message": "Təşkilat dayandırıldı." }, "disabledOrganizationFilterError": { - "message": "Sıradan çıxarılmış Təşkilatlardakı elementlərə müraciət edilə bilmir. Kömək üçün Təşkilatınızın sahibi ilə əlaqə saxlayın." + "message": "Dayandırılmış Təşkilatlardakı elementlərə müraciət edilə bilmir. Kömək üçün Təşkilatınızın sahibi ilə əlaqə saxlayın." }, "loggingInTo": { "message": "$DOMAIN$ domeninə giriş edilir", @@ -2069,25 +2203,25 @@ } }, "settingsEdited": { - "message": "Tənzimləmələrə düzəliş edildi" + "message": "Ayarlara düzəliş edildi" }, "environmentEditedClick": { "message": "Bura klikləyin" }, "environmentEditedReset": { - "message": "ön konfiqurasiyalı tənzimləmələri sıfırlamaq üçün" + "message": "ön konfiqurasiyalı ayarları sıfırlamaq üçün" }, "serverVersion": { - "message": "Server Versiyası" + "message": "Server versiyası" }, - "selfHosted": { - "message": "Öz-özünə sahiblik edən" + "selfHostedServer": { + "message": "öz-özünə sahiblik edən" }, "thirdParty": { "message": "Üçüncü tərəf" }, "thirdPartyServerMessage": { - "message": "Üçüncü tərəf server tətbiqetməsi ilə bağlantı quruldu, $SERVERNAME$. Zəhmət olmasa rəsmi serveri istifadə edərək xətaları təsdiqləyin və ya onları üçüncü tərəf serverə bildirin.", + "message": "$SERVERNAME$ üçüncü tərəf server tətbiqinə bağlandı. Lütfən rəsmi serveri istifadə edərək xətaları doğrulayın və ya onları üçüncü tərəf serverə bildirin.", "placeholders": { "servername": { "content": "$1", @@ -2096,7 +2230,7 @@ } }, "lastSeenOn": { - "message": "son görünmə $DATE$", + "message": "son görünmə: $DATE$", "placeholders": { "date": { "content": "$1", @@ -2123,25 +2257,25 @@ "message": "Cihazla giriş et" }, "loginWithDeviceEnabledInfo": { - "message": "Cihazla giriş etmə, Bitwarden tətbiqinin tənzimləmələrində quraşdırılmalıdır. Başqa bir seçimə ehtiyacınız var?" + "message": "Cihazla giriş, Bitwarden tətbiqinin ayarlarında qurulmalıdır. Başqa bir seçimə ehtiyacınız var?" }, "fingerprintPhraseHeader": { "message": "Barmaq izi ifadəsi" }, "fingerprintMatchInfo": { - "message": "Zəhmət olmasa anbarınızın kilidinin açıq olduğuna və Barmaq izi ifadəsinin digər cihazda uyğun gəldiyinə əmin olun." + "message": "Lütfən anbarınızın kilidinin açıq olduğuna və Barmaq izi ifadəsinin digər cihazla uyuşduğuna əmin olun." }, "resendNotification": { "message": "Bildirişi təkrar göndər" }, "viewAllLoginOptions": { - "message": "Bütün giriş etmə seçimlərinə bax" + "message": "Bütün giriş seçimlərinə bax" }, "notificationSentDevice": { "message": "Cihazınıza bir bildiriş göndərildi." }, - "logInInitiated": { - "message": "Giriş etmə başladıldı" + "loginInitiated": { + "message": "Giriş başladıldı" }, "exposedMasterPassword": { "message": "İfşa olunmuş ana parol" @@ -2162,7 +2296,7 @@ "message": "Vacib:" }, "masterPasswordHint": { - "message": "Unutsanız, ana parolunuz bərpa edilə bilməz!" + "message": "Unutsanız, ana parolunuz geri qaytarıla bilməz!" }, "characterMinimum": { "message": "Minimum $LENGTH$ simvol", @@ -2180,7 +2314,7 @@ "message": "Avto-doldurma necə edilir" }, "autofillSelectInfoWithCommand": { - "message": "Bu səhifədən bir element seçin və ya qısayolu istifadə edin: $COMMAND$", + "message": "Bu ekrandan bir element seçin, $COMMAND$ qısayolunu istifadə edin və ya ayarlardakı digər seçimləri kəşf edin.", "placeholders": { "command": { "content": "$1", @@ -2189,22 +2323,22 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Bu səhifədən bir element seçin və ya tənzimləmələrdə bir qısayol tənzimləyin." + "message": "Bu ekrandan bir element seçin və ya ayarlardakı digər seçimləri kəşf edin." }, "gotIt": { "message": "Anladım" }, "autofillSettings": { - "message": "Avto-doldurma tənzimləmələri" + "message": "Avto-doldurma ayarları" }, "autofillShortcut": { "message": "Avto-doldurma klaviatura qısayolu" }, "autofillShortcutNotSet": { - "message": "Avto-doldurma qısayolu tənzimlənməyib. Bunu brauzerin tənzimləmələrində dəyişdirin." + "message": "Avto-doldurma qısayolu ayarlanmayıb. Bunu brauzerin ayarlarında dəyişdirin." }, "autofillShortcutText": { - "message": "Avto-doldurma qısayolu: $COMMAND$. Bunu brauzerin tənzimləmələrində dəyişdirin.", + "message": "Avto-doldurma qısayolu: $COMMAND$. Bunu brauzerin ayarlarında dəyişdirin.", "placeholders": { "command": { "content": "$1", @@ -2221,27 +2355,658 @@ } } }, - "region": { - "message": "Bölgə" + "loggingInOn": { + "message": "Giriş edilir" }, "opensInANewWindow": { "message": "Yeni bir pəncərədə açılır" }, + "deviceApprovalRequired": { + "message": "Cihaz təsdiqi tələb olunur. Aşağıdan bir təsdiq variantı seçin:" + }, + "rememberThisDevice": { + "message": "Bu cihazı xatırla" + }, + "uncheckIfPublicDevice": { + "message": "Hər kəsə açıq bir cihaz istifadə edirsinizsə işarəni götürün" + }, + "approveFromYourOtherDevice": { + "message": "Digər cihazınızdan təsdiqləyin" + }, + "requestAdminApproval": { + "message": "Admin təsdiqini tələb et" + }, + "approveWithMasterPassword": { + "message": "Ana parolla təsdiqlə" + }, + "ssoIdentifierRequired": { + "message": "Təşkilat SSO identifikatoru tələb olunur." + }, "eu": { "message": "AB", "description": "European Union" }, - "us": { - "message": "ABŞ", - "description": "United States" - }, "accessDenied": { "message": "Müraciət rədd edildi. Bu səhifəyə baxmaq üçün icazəniz yoxdur." }, "general": { - "message": "General" + "message": "Ümumi" }, "display": { - "message": "Display" + "message": "Ekran" + }, + "accountSuccessfullyCreated": { + "message": "Hesab uğurla yaradıldı!" + }, + "adminApprovalRequested": { + "message": "Admin təsdiqi tələb olunur" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Tələbiniz admininizə göndərildi." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Təsdiqləndikdən sonra məlumatlandırılacaqsınız." + }, + "troubleLoggingIn": { + "message": "Girişdə problem var?" + }, + "loginApproved": { + "message": "Giriş təsdiqləndi" + }, + "userEmailMissing": { + "message": "İstifadəçi e-poçtu əskikdir" + }, + "deviceTrusted": { + "message": "Cihaz güvənlidir" + }, + "inputRequired": { + "message": "Giriş lazımdır." + }, + "required": { + "message": "tələb olunur" + }, + "search": { + "message": "Axtar" + }, + "inputMinLength": { + "message": "Giriş, ən azı $COUNT$ simvol uzunluğunda olmalıdır.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Giriş uzunluğu $COUNT$ simvolu aşmamalıdır.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Aşağıdakı simvollara icazə verilmir: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Giriş dəyəri ən azı $MIN$ olmalıdır.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Giriş dəyəri $MAX$ dəyərini aşmamalıdır.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 və ya daha çox e-poçt yararsızdır" + }, + "inputTrimValidator": { + "message": "Giriş, yalnız boşluq ehtiva etməməlidir.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Giriş, bir e-poçt ünvanı deyil." + }, + "fieldsNeedAttention": { + "message": "Yuxarıdakı $COUNT$ sahənin diqqətinizə ehtiyacı var.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Seç --" + }, + "multiSelectPlaceholder": { + "message": "-- Filtrləmək üçün yazın --" + }, + "multiSelectLoading": { + "message": "Seçimlər alınır..." + }, + "multiSelectNotFound": { + "message": "Heç bir element tapılmadı" + }, + "multiSelectClearAll": { + "message": "Hamısını təmizlə" + }, + "plusNMore": { + "message": "daha $QUANTITY$ ədəd", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Alt menyu" + }, + "toggleCollapse": { + "message": "Yığcamlaşdırmanı aç/bağla", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Datanız Bitwarden-ə köçürülsün?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "LastPass datanızı qoruyub Bitwarden-ə köçürürsünüz?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Şifrələnməmiş fayl olaraq saxla", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Bitwarden-ə köçür", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Daxilə köçürülür...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data uğurla daxilə köçürüldü!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Daxilə köçürmə xətası. Detallar üçün konsolu yoxlayın.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Daxilə köçürmə zamanı şəbəkə xətası baş verdi.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Domen ləqəbi" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "\"Ana parolu təkrar soruş\" özəlliyi olan elementlər səhifə yüklənəndə avto-doldurulmur. \"Səhifə yüklənəndə avto-doldurma\" özəlliyi söndürülüb.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "\"Səhifə yüklənəndə avto-doldurma\" özəlliyi ilkin ayarı istifadə etmək üzrə ayarlandı.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Bu sahəyə düzəliş etmək üçün \"Ana parolu təkrar soruş\"u söndürün", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Məzmunu ötür" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden avto-doldurma menyu düyməsi", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Bitwarden avto-doldurma menyusunu aç/bağla", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden avto-doldurma menyusu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Uyuşan giriş məlumatlarına baxmaq üçün hesabınızın kilidini açın", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Hesabın kilidini aç", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Kimlik məlumatlarını doldur", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Qismən istifadəçi adı", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Göstəriləcək heç bir element yoxdur", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Yeni element", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Yeni anbar elementi əlavə et", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden avto-doldurma menyusu mövcuddur. Seçmək üçün aşağı ox düyməsinə basın.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "İşə sal" + }, + "ignore": { + "message": "Yox say" + }, + "importData": { + "message": "Datanı daxilə köçür", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Daxilə köçürmə xətası" + }, + "importErrorDesc": { + "message": "Daxilə köçürməyə çalışdığınız data ilə bağlı bir problem var. Lütfən mənbə faylınızda aşağıda sadalanan xətaları həll edib yenidən sınayın." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Aşağıdakı xətaları həll edin və yenidən sınayın." + }, + "description": { + "message": "Açıqlama" + }, + "importSuccess": { + "message": "Data uğurla daxilə köçürüldü" + }, + "importSuccessNumberOfItems": { + "message": "Cəmi $AMOUNT$ element daxilə köçürüldü.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Yenidən sına" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Bu əməliyyat üçün doğrulama tələb olunur. Davam etmək üçün bir PIN təyin edin." + }, + "setPin": { + "message": "PIN təyin et" + }, + "verifyWithBiometrics": { + "message": "Biometriklə doğrula" + }, + "awaitingConfirmation": { + "message": "Təsdiq gözlənilir" + }, + "couldNotCompleteBiometrics": { + "message": "Biometrik tamamlana bilmədi." + }, + "needADifferentMethod": { + "message": "Fərqli bir üsul lazımdır?" + }, + "useMasterPassword": { + "message": "Ana parolu istifadə et" + }, + "usePin": { + "message": "PIN-i istifadə et" + }, + "useBiometrics": { + "message": "Biometrik istifadə et" + }, + "enterVerificationCodeSentToEmail": { + "message": "E-poçtunuza göndərilmiş doğrulama kodunu daxil edin." + }, + "resendCode": { + "message": "Kodu təkrar göndər" + }, + "total": { + "message": "Cəmi" + }, + "importWarning": { + "message": "Datanı $ORGANIZATION$ təşkilatına köçürürsünüz. Datanızı bu təşkilatın üzvləri ilə paylaşa bilərsiniz. Davam etmək istəyirsiniz?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Duo-nu başladın və giriş prosesini tamamlamaq üçün addımları izləyin." + }, + "duoRequiredForAccount": { + "message": "Hesabınız üçün Duo iki addımlı giriş tələb olunur." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Girişi tamamlamaq üçün uzantını aç." + }, + "popoutExtension": { + "message": "Popout uzantısı" + }, + "launchDuo": { + "message": "Duo-nu başlat" + }, + "importFormatError": { + "message": "Data doğru format edilməyib. Lütfən daxilə köçürmə faylınızı yoxlayıb yenidən sınayın." + }, + "importNothingError": { + "message": "Heç nə daxilə köçürülmədi." + }, + "importEncKeyError": { + "message": "Xaricə köçürülən faylın şifrəsi açılarkən xəta baş verdi. Şifrələmə açarınız, datanı xaricə köçürmək üçün istifadə edilən şifrələmə açarı ilə uyuşmur." + }, + "invalidFilePassword": { + "message": "Yararsız fayl parolu, lütfən xaricə köçürmə faylını yaradarkən daxil etdiyiniz parolu istifadə edin." + }, + "importDestination": { + "message": "Hədəfi daxilə köçür" + }, + "learnAboutImportOptions": { + "message": "Daxilə köçürmə seçimlərinizi öyrənin" + }, + "selectImportFolder": { + "message": "Bir qovluq seçin" + }, + "selectImportCollection": { + "message": "Bir kolleksiya seçin" + }, + "importTargetHint": { + "message": "Daxilə köçürülən fayl məzmununun $DESTINATION$ yerinə daşınmasını istəyirsinizsə bu variantı seçin", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Faylda təyin edilməmiş elementlər var." + }, + "selectFormat": { + "message": "Daxilə köçürmə faylının formatını seçin" + }, + "selectImportFile": { + "message": "Daxilə köçürmə faylını seçin" + }, + "chooseFile": { + "message": "Fayl seç" + }, + "noFileChosen": { + "message": "Heç bir fayl seçilməyib" + }, + "orCopyPasteFileContents": { + "message": "və ya daxilə köçürmə faylının məzmununu kopyalayın/yapışdırın" + }, + "instructionsFor": { + "message": "$NAME$ Təlimatları", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Anbarın daxilə köçürülməsini təsdiqləyin" + }, + "confirmVaultImportDesc": { + "message": "Bu fayl parolla qorunur. Məlumatları daxilə köçürmək üçün fayl parolunu daxil edin." + }, + "confirmFilePassword": { + "message": "Fayl parolunu təsdiqlə" + }, + "typePasskey": { + "message": "Keçid açarı" + }, + "passkeyNotCopied": { + "message": "Keçid açarı kopyalanmır" + }, + "passkeyNotCopiedAlert": { + "message": "Keçid açarı, klonlanmış elementə kopyalanmayacaq. Bu elementi klonlamağa davam etmək istəyirsiniz?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Başladan saytın tələb etdiyi doğrulama. Bu özəllik, hələlik ana parolu olmayan hesablara tətbiq olunmur." + }, + "logInWithPasskey": { + "message": "Keçid açarı ilə giriş edilsin?" + }, + "passkeyAlreadyExists": { + "message": "Bu tətbiq üçün bir keçid açarı artıq mövcuddur." + }, + "noPasskeysFoundForThisApplication": { + "message": "Bu tətbiq üçün heç bir keçid açarı tapılmadı." + }, + "noMatchingPasskeyLogin": { + "message": "Bu sayt üçün uyuşan bir giriş məlumatınız yoxdur." + }, + "confirm": { + "message": "Təsdiqlə" + }, + "savePasskey": { + "message": "Keçid açarını saxla" + }, + "savePasskeyNewLogin": { + "message": "Keçid açarını yeni bir giriş olaraq saxla" + }, + "choosePasskey": { + "message": "Bu keçid açarını saxlayacaq bir giriş seçin" + }, + "passkeyItem": { + "message": "Keçid açarı elementi" + }, + "overwritePasskey": { + "message": "Keçid açarının üzərinə yazılsın?" + }, + "overwritePasskeyAlert": { + "message": "Bu elementdə artıq bir keçid açarı var. Hazırkı keçid açarının üzərinə yazmaq istədiyinizə əminsiniz?" + }, + "featureNotSupported": { + "message": "Özəllik hələ dəstəklənmir" + }, + "yourPasskeyIsLocked": { + "message": "Keçid açarını istifadə etmək üçün kimlik doğrulama tələb olunur. Davam etmək üçün kimliyinizi doğrulayın." + }, + "multifactorAuthenticationCancelled": { + "message": "Çox faktorlu kimlik doğrulama ləğv edildi" + }, + "noLastPassDataFound": { + "message": "LastPass datası tapılmadı" + }, + "incorrectUsernameOrPassword": { + "message": "Yanlış istifadəçi adı və ya parol" + }, + "incorrectPassword": { + "message": "Yanlış parol" + }, + "incorrectCode": { + "message": "Yanlış kod" + }, + "incorrectPin": { + "message": "Yanlış PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Çox faktorlu kimlik doğrulama uğursuz oldu" + }, + "includeSharedFolders": { + "message": "Paylaşılan qovluqları daxil et" + }, + "lastPassEmail": { + "message": "LastPass E-poçtu" + }, + "importingYourAccount": { + "message": "Hesabınız daxilə köçürülür..." + }, + "lastPassMFARequired": { + "message": "LastPass çox faktorlu kimlik doğrulama tələb olunur" + }, + "lastPassMFADesc": { + "message": "Kimlik doğrulama tətbiqinizdəki təkistifadəlik kodu daxil edin" + }, + "lastPassOOBDesc": { + "message": "Kimlik doğrulama tətbiqinizdəki giriş tələbini təsdiqləyin və ya təkistifadəlik kodu daxil edin." + }, + "passcode": { + "message": "Kod" + }, + "lastPassMasterPassword": { + "message": "LastPass ana parolu" + }, + "lastPassAuthRequired": { + "message": "LastPass kimlik doğrulama tələb olunur" + }, + "awaitingSSO": { + "message": "SSO kimlik doğrulaması gözlənilir" + }, + "awaitingSSODesc": { + "message": "Lütfən şirkət kimlik məlumatlarınızı istifadə edərək giriş etməyə davam edin." + }, + "seeDetailedInstructions": { + "message": "Kömək saytımızda detallı təlimatlara baxın", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Birbaşa \"LastPass\"dan daxilə köçür" + }, + "importFromCSV": { + "message": "CSV-dən daxilə köçür" + }, + "lastPassTryAgainCheckEmail": { + "message": "Yenidən snayın və ya siz olduğunuzu doğrulamaq üçün \"LastPass\"dan gələcək e-poçtu yoxlayın." + }, + "collection": { + "message": "Kolleksiya" + }, + "lastPassYubikeyDesc": { + "message": "LastPass hesabınızla əlaqələndirilmiş \"YubiKey\"i kompüterinizin USB yuvasına taxın, daha sonra düyməsinə basın." + }, + "switchAccount": { + "message": "Hesabı dəyişdir" + }, + "switchAccounts": { + "message": "Hesabları dəyişdir" + }, + "switchToAccount": { + "message": "Hesaba keç" + }, + "activeAccount": { + "message": "Aktiv hesab" + }, + "availableAccounts": { + "message": "Mövcud hesablar" + }, + "accountLimitReached": { + "message": "Hesab limiti keçildi. Başqa bir hesab əlavə etmək üçün bir hesabdan çıxış edin." + }, + "active": { + "message": "aktiv" + }, + "locked": { + "message": "kilidli" + }, + "unlocked": { + "message": "kilidi açılmış" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "sahiblik edən" + }, + "useDeviceOrHardwareKey": { + "message": "Cihazınızı və ya avadanlıq açarınızı istifadə edin" + }, + "justOnce": { + "message": "Yalnız bir dəfə" + }, + "alwaysForThisSite": { + "message": "Bu sayt üçün həmişə" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$, istisna domenlərə əlavə edildi.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Ortaq formatlar", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Bitwarden ilkin parol meneceriniz olaraq təyin edilsin?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Bu seçimin yox sayılması, \"Bitwarden\"in və brauzerinizin avto-doldurma menyuları arasında ziddiyyətlərə səbəb ola bilər.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "\"Bitwarden\"i ilkin parol meneceriniz olaraq təyin edin", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Bitwarden ilkin parol meneceri olaraq ayarlana bilmir", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Bitwarden-i ilkin parol meneceri olaraq ayarlamaq üçün ona brauzer gizlilik icazələrini verməlisiniz.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "İlkin olaraq təyin et", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Kimlik məlumatları uğurla saxlanıldı!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Kimlik məlumatları uğurla güncəlləndi!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Kimlik məlumatlarını saxlama xətası. Detallar üçün konsolu yoxlayın.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Parolu sil" + }, + "passkeyRemoved": { + "message": "Parol silindi" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/be/messages.json b/apps/browser/src/_locales/be/messages.json index 8080b7c8de..26ecf49cc7 100644 --- a/apps/browser/src/_locales/be/messages.json +++ b/apps/browser/src/_locales/be/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Аўтазапаўненне" }, + "autoFillLogin": { + "message": "Аўтазапаўненне лагіна" + }, + "autoFillCard": { + "message": "Аўтазапаўненне карткі" + }, + "autoFillIdentity": { + "message": "Аўтазапаўненне асабістых даных" + }, "generatePasswordCopied": { "message": "Генерыраваць пароль (з капіяваннем)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Няма адпаведных лагінаў." }, + "noCards": { + "message": "Няма картак" + }, + "noIdentities": { + "message": "Няма прыватных даных" + }, + "addLoginMenu": { + "message": "Дадаць лагін" + }, + "addCardMenu": { + "message": "Дадаць картку" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Разблакіраваць сховішча" }, @@ -244,6 +268,9 @@ "length": { "message": "Даўжыня" }, + "passwordMinLength": { + "message": "Мінімальная даўжыня пароля" + }, "uppercase": { "message": "Вялікія літары (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Пароль" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Парольная фраза" }, @@ -338,6 +368,12 @@ "other": { "message": "Iншае" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Наладзіць метад разблакіроўкі для змянення дзеяння часу чакання вашага сховішча." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Ацаніць пашырэнне" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Заблакіраваць зараз" }, + "lockAll": { + "message": "Заблакаваць усе" + }, "immediately": { "message": "Адразу" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Ваш уліковы запіс створаны! Цяпер вы можаце ўвайсці ў яго." }, + "youSuccessfullyLoggedIn": { + "message": "Вы паспяхова аўтарызаваны" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "Мы адправілі вам на электронную пошту падказку да асноўнага пароля." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Немагчыма аўтазапоўніць выбраны элемент на гэтай старонцы. Скапіюйце і ўстаўце інфармацыю ўручную." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Вы выйшлі" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Пытацца пра дадаванне элемента, калі ён адсутнічае ў вашым сховішчы." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Паказваць карткі на старонцы з укладкамі" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Пытацца пра абнаўленне пароля ад лагіна пры выяўленні змяненняў на вэб-сайце." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Хочаце абнавіць гэты пароль у Bitwarden?" }, "notificationChangeSave": { "message": "Абнавіць" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Разблакіраваць" + }, "enableContextMenuItem": { "message": "Паказваць параметры кантэкстнага меню" }, "contextMenuItemDesc": { "message": "Выкарыстоўваць падвоены націск для доступу да генератара пароляў і супастаўлення лагінаў для вэб-сайтаў. " }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "Прадвызначанае выяўленне супадзення URI", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Змена каляровай тэмы праграмы." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Цёмная", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Функцыя недаступна" }, - "updateKey": { - "message": "Вы не зможаце выкарыстоўваць гэту функцыю, пакуль не абнавіце свой ключ шыфравання." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Прэміяльны статус" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 ГБ зашыфраванага сховішча для далучаных файлаў." }, - "ppremiumSignUpTwoStep": { - "message": "Дадатковыя варыянты двухэтапнага ўваходу, такія як YubiKey, FIDO U2F і Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Гігіена пароляў, здароўе ўліковага запісу і справаздачы аб уцечках даных для забеспячэння бяспекі вашага сховішча." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "URL-адрас сервера асяроддзя захаваны." }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Аўтазапаўненне пры загрузцы старонкі" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Паказваць распазнавальны відарыс побач з кожным лагінам." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Паказваць лічыльнік на значку" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Памылковы PIN-код." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Разблакіраваць з дапамогай біяметрыі" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Аднавіць элемент" }, - "restoreItemConfirmation": { - "message": "Вы сапраўды хочаце аднавіць гэты элемент?" - }, "restoredItem": { "message": "Элемент адноўлены" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Біяметрыя ў браўзеры не падтрымліваецца на гэтай прыладзе." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Дазволы не прадастаўлены" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Палітыка арганізацыі ўплывае на вашы параметры ўласнасці." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Выключаныя дамены" }, "excludedDomainsDesc": { "message": "Праграма не будзе прапаноўваць захаваць падрабязнасці ўваходу для гэтых даменаў. Вы павінны абнавіць старонку, каб змяненні пачалі дзейнічаць." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ не з'яўляецца правільным даменам", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Выбраць папку..." }, - "ssoCompleteRegistration": { - "message": "Для завяршэння працэсу ўваходу з дапамогай SSO, прызначце асноўны пароль для доступу да вашага сховішча і яго абароны." + "noFoldersFound": { + "message": "Папкі не знойдзены", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Гадзіны" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Экспартаванне асабістага сховішча" }, - "exportingPersonalVaultDescription": { - "message": "Будуць экспартаваны толькі асабістыя элементы сховішча, якія звязаны з $EMAIL$. Элементы сховішча арганізацыі не будуць уключаны.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Версія сервера" }, - "selfHosted": { - "message": "Уласнае размяшчэнне" + "selfHostedServer": { + "message": "уласнае размяшчэнне" }, "thirdParty": { "message": "Іншы пастаўшчык" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Апавяшчэнне было адпраўлена на вашу прыладу." }, - "logInInitiated": { + "loginInitiated": { "message": "Ініцыяваны ўваход" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Як аўтазапоўніць" }, "autofillSelectInfoWithCommand": { - "message": "Выберыце элемент на гэтай старонцы або скарыстайцеся спалучэннем клавіш: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Выберыце элемент на гэтай старонцы або задайце спалучэнне клавіш у наладах." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Зразумела" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Рэгіён" + "loggingInOn": { + "message": "Увайсці на" }, "opensInANewWindow": { "message": "Адкрываць у новым акне" }, + "deviceApprovalRequired": { + "message": "Патрабуецца ўхваленне прылады. Выберыце параметры ўхвалення ніжэй:" + }, + "rememberThisDevice": { + "message": "Запомніць гэту прыладу" + }, + "uncheckIfPublicDevice": { + "message": "Здыміце пазнаку, калі выкарыстоўваеце агульнадаступную прыладу" + }, + "approveFromYourOtherDevice": { + "message": "Ухваліць з іншай вашай прылады" + }, + "requestAdminApproval": { + "message": "Запытаць ухваленне адміністратара" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "ЕС", "description": "European Union" }, - "us": { - "message": "ЗША", - "description": "United States" - }, "accessDenied": { "message": "Доступ забаронены. У вас не дастаткова правоў для прагляду гэтай старонкі." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Адлюстраванне" + }, + "accountSuccessfullyCreated": { + "message": "Уліковы запіс паспяхова створаны!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Праблемы з уваходам?" + }, + "loginApproved": { + "message": "Уваход ухвалены" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 або некалькі адрасоў электроннай пошты з'яўляюцца памылковымі" + }, + "inputTrimValidator": { + "message": "Уведзенае значэнне не павінна змяшчаць толькі прабелы.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Уведзеныя даныя не з'яўляюцца адрасам электроннай пошты." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Выбраць --" + }, + "multiSelectPlaceholder": { + "message": "- Увядзіце для фільтрацыі -" + }, + "multiSelectLoading": { + "message": "Атрыманне параметраў..." + }, + "multiSelectNotFound": { + "message": "Элементаў не знойдзена" + }, + "multiSelectClearAll": { + "message": "Ачысціць усё" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Падменю" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Мянушка дамена" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Апісанне" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Усяго" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Даведацца пра параметры імпартавання" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Выбраць файл" + }, + "noFileChosen": { + "message": "Файл не выбраны" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Пацвердзіць пароль файла" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Пацвердзіць" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/bg/messages.json b/apps/browser/src/_locales/bg/messages.json index a5eda0555c..2ddaf647d8 100644 --- a/apps/browser/src/_locales/bg/messages.json +++ b/apps/browser/src/_locales/bg/messages.json @@ -14,7 +14,7 @@ "message": "Впишете се или създайте нов абонамент, за да достъпите защитен трезор." }, "createAccount": { - "message": "Създаване на абонамент" + "message": "Създаване на акаунт" }, "login": { "message": "Вписване" @@ -83,7 +83,7 @@ "message": "Копиране на потребителското име" }, "copyNumber": { - "message": "Копиране на номера" + "message": "Копиране на но̀мера" }, "copySecurityCode": { "message": "Копиране на кода за сигурност" @@ -91,6 +91,15 @@ "autoFill": { "message": "Автоматично дописване" }, + "autoFillLogin": { + "message": "Авт. попълване на данни за вход" + }, + "autoFillCard": { + "message": "Самопопълваща се карта" + }, + "autoFillIdentity": { + "message": "Самопопълваща се самоличност" + }, "generatePasswordCopied": { "message": "Генериране на парола (копирана)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Няма съвпадащи записи." }, + "noCards": { + "message": "Няма карти" + }, + "noIdentities": { + "message": "Няма самоличности" + }, + "addLoginMenu": { + "message": "Добавяне на запис за вход" + }, + "addCardMenu": { + "message": "Добавяне на карта" + }, + "addIdentityMenu": { + "message": "Добавяне на самоличност" + }, "unlockVaultMenu": { "message": "Отключете трезора си" }, @@ -233,7 +257,7 @@ "message": "Избор" }, "generatePassword": { - "message": "Генериране на парола" + "message": "Нова парола" }, "regeneratePassword": { "message": "Регенериране на паролата" @@ -244,6 +268,9 @@ "length": { "message": "Дължина" }, + "passwordMinLength": { + "message": "Минимална дължина на паролата" + }, "uppercase": { "message": "Главни букви (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Парола" }, + "totp": { + "message": "Тайна за удостоверяване" + }, "passphrase": { "message": "Парола-фраза" }, @@ -338,6 +368,12 @@ "other": { "message": "Други" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Задайте метод за отключване, за да може да промените действието при изтичане на времето за достъп до трезора." + }, + "unlockMethodNeeded": { + "message": "Задайте метод за отключване в Настройките" + }, "rateExtension": { "message": "Оценяване на разширението" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Заключване сега" }, + "lockAll": { + "message": "Заключване на всички" + }, "immediately": { "message": "Незабавно" }, @@ -415,7 +454,7 @@ "message": "При заключване на системата" }, "onRestart": { - "message": "При повторно пускане на четеца" + "message": "При повторно пускане на браузъра" }, "never": { "message": "Никога" @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Абонаментът ви бе създаден. Вече можете да се впишете." }, + "youSuccessfullyLoggedIn": { + "message": "Вписахте се успешно" + }, + "youMayCloseThisWindow": { + "message": "Може да затворите този прозорец" + }, "masterPassSent": { "message": "Изпратихме ви писмо с подсказка за главната ви парола." }, @@ -464,7 +509,7 @@ "message": "Грешен код за потвърждаване" }, "valueCopied": { - "message": "$VALUE$ — копирано", + "message": "Копирано е $VALUE$", "description": "Value has been copied to the clipboard.", "placeholders": { "value": { @@ -476,6 +521,18 @@ "autofillError": { "message": "Неуспешно автоматично попълване. Вместо това копирайте и поставете данните." }, + "totpCaptureError": { + "message": "QR-кодът от текущата страница не може да бъде сканиран" + }, + "totpCaptureSuccess": { + "message": "Удостоверителният ключ е добавен" + }, + "totpCapture": { + "message": "Сканирайте QR-кода за удостоверяване от текущата страница" + }, + "copyTOTP": { + "message": "Копиране на удостоверителния ключ (TOTP)" + }, "loggedOut": { "message": "Бяхте отписани" }, @@ -534,7 +591,7 @@ "message": "Копирана парола" }, "uri": { - "message": "Адрес" + "message": "Унифициран идентификатор на ресурс" }, "uriPosition": { "message": "Адрес $POSITION$", @@ -547,7 +604,7 @@ } }, "newUri": { - "message": "Нов адрес" + "message": "Нов унифициран идентификатор на ресурс" }, "addedItem": { "message": "Елементът е добавен" @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Известията за запазване на регистрации автоматично ви подканят да запазите новите регистрации в трезора при първото ви вписване в тях." }, + "addLoginNotificationDescAlt": { + "message": "Питане за добавяне на елемент, ако такъв не бъде намерен в трезора. Прилага се за всички регистрации, в които сте вписан(а)." + }, "showCardsCurrentTab": { "message": "Показване на карти в страницата с разделите" }, @@ -624,11 +684,26 @@ "changedPasswordNotificationDesc": { "message": "Питане за обновяване на паролата към даден запис, когато бъде засечена промяна в съответния уеб сайт." }, + "changedPasswordNotificationDescAlt": { + "message": "Питане за обновяване на паролата за дадена регистрация, ако бъде засечена промяна в съответния уеб сайт. Прилага се за всички регистрации, в които сте вписан(а)." + }, + "enableUsePasskeys": { + "message": "Питане за запазване и ползване на секретни ключове" + }, + "usePasskeysDesc": { + "message": "Питане за запазване на нови секретни ключове или за вписване чрез секретни ключове, пазени в трезора. Прилага се за всички регистрации, в които сте вписан(а)." + }, "notificationChangeDesc": { "message": "Да се обнови ли паролата в Bitwarden?" }, "notificationChangeSave": { - "message": "Да, нека се обнови сега" + "message": "Осъвременяване" + }, + "notificationUnlockDesc": { + "message": "Отключете трезора си в Битуорден, за да завършите заявката за автоматично попълване." + }, + "notificationUnlock": { + "message": "Отключване" }, "enableContextMenuItem": { "message": "Показване на опции в контекстното меню" @@ -636,6 +711,9 @@ "contextMenuItemDesc": { "message": "Щракване с десния бутон на мишката дава достъп до генератора на пароли и съответстващите за уеб сайта записи. " }, + "contextMenuItemDescAlt": { + "message": "Щракване с десния бутон на мишката дава достъп до генератора на пароли и съответстващите за уеб сайта записи. Прилага се за всички регистрации, в които сте вписан(а)." + }, "defaultUriMatchDetection": { "message": "Стандартно засичане на адреси", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Промяна на цветовия облик на програмата." }, + "themeDescAlt": { + "message": "Промяна на цветовата тема на приложението. Прилага се за всички регистрации, в които сте вписан(а)." + }, "dark": { "message": "Тъмен", "description": "Dark color" @@ -675,7 +756,7 @@ "message": "Потвърждаване на изнасянето на трезора" }, "exportWarningDesc": { - "message": "Данните от трезора ви ще се изнесат в незащитен формат. Не го пращайте по незащитени канали като е-поща. Изтрийте файла незабавно след като свършите работата си с него." + "message": "Този износ съдържа данни на трезора ви в некриптиран формат. Не трябва да съхранявате или изпращате износния файл през незащитени канали (като имейл). Изтрийте файла моментално след като свършите работата си с него." }, "encExportKeyWarningDesc": { "message": "При изнасяне данните се шифрират с ключа ви. Ако го смените, ще трябва наново да ги изнесете, защото няма да може да дешифрирате настоящия файл." @@ -690,10 +771,10 @@ "message": "Споделено" }, "learnOrg": { - "message": "Разберете повече за организациите" + "message": "Научете за организациите" }, "learnOrgConfirmation": { - "message": "Битуорден позволява да споделяте части от трезора си чрез използването на организация. Искате ли да научите повече от сайта bitwarden.com?" + "message": "Битуорден позволява да споделяте елементи от трезора си а други, използвайки организация. Бихте ли посетили сайта bitwarden.com, за да научите повече?" }, "moveToOrganization": { "message": "Преместване в организация" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Функцията е недостъпна" }, - "updateKey": { - "message": "Трябва да обновите шифриращия си ключ, за да използвате тази възможност." + "encryptionKeyMigrationRequired": { + "message": "Необходима е промяна на шифриращия ключ. Впишете се в трезора си по уеб, за да обновите своя шифриращ ключ." }, "premiumMembership": { "message": "Платен абонамент" @@ -772,7 +853,7 @@ "message": "Управление на абонамента" }, "premiumManageAlert": { - "message": "Можете да управлявате абонамента си през сайта bitwarden.com. Искате ли да го посетите сега?" + "message": "Може да управлявате членството си в мрежата на трезора в bitwarden.com. Искате ли да посетите уебсайта сега?" }, "premiumRefresh": { "message": "Опресняване на абонамента" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB пространство за файлове, които се шифрират." }, - "ppremiumSignUpTwoStep": { - "message": "Двустепенно удостоверяване чрез YubiKey, FIDO U2F и Duo." + "premiumSignUpTwoStepOptions": { + "message": "Частно двустепенно удостоверяване чрез YubiKey и Duo." }, "ppremiumSignUpReports": { "message": "Проверки в списъците с публикувани пароли, проверка на регистрациите и доклади за пробивите в сигурността, което спомага трезорът ви да е допълнително защитен." @@ -892,7 +973,7 @@ "message": "Регистрацията е защитена с двустепенно удостоверяване, но никой от настроените доставчици на удостоверяване не се поддържа от този браузър." }, "noTwoStepProviders2": { - "message": "Пробвайте с поддържан уеб браузър (като Chrome или Firefox) и други доставчици на удостоверяване, които се поддържат от браузърите (като специални програми за удостоверяване)." + "message": "Употребявайте поддържан браузър (като Chrome, Firefox) и/или добавете други доставчици на удостоверяване, които се поддържат по-добре от браузърите (като специални програми за удостоверяване)." }, "twoStepOptions": { "message": "Настройки на двустепенното удостоверяване" @@ -911,10 +992,10 @@ "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." }, "yubiKeyTitle": { - "message": "Устройство YubiKey OTP" + "message": "Ключ за сигурност YubiKey OTP" }, "yubiKeyDesc": { - "message": "Използвайте устройство на YubiKey, за да влезете в абонамента си. Поддържат се моделите YubiKey 4, 4 Nano, 4C и NEO." + "message": "Използвайте ключа за сигурност YubiKey, за да влезете в акаунта си. Работи с устройствата YubiKey 4, 4 Nano, 4C и NEO." }, "duoDesc": { "message": "Удостоверяване чрез Duo Security, с ползване на приложението Duo Mobile, SMS, телефонен разговор или устройство U2F.", @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Средата с адресите е запазена." }, + "showAutoFillMenuOnFormFields": { + "message": "Показване на меню за авт. попълване при полетата на формулярите", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Прилага се за всички регистрации, в които сте вписан(а)." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Изключете вграденото управление на пароли на браузъра си, за да избегнете конфликтите." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Редактиране на настройките на браузъра." + }, + "autofillOverlayVisibilityOff": { + "message": "Изключено", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Когато полето бъде избрано (на фокус)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Когато бъде избрана иконката за авт. попълване", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Включване на автоматичното попълване" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Показване на разпознаваемо изображение до всеки запис." }, + "faviconDescAlt": { + "message": "Показване на разпознаваемо изображение до всеки елемент. Прилага се към всички акаунти, в които сте Вписан(а)." + }, "enableBadgeCounter": { "message": "Показване на брояч в значка" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Неправилен ПИН." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Направили сте твърде много опити с неправилен ПИН код. Отписване…" + }, "unlockWithBiometrics": { "message": "Отключване с биометрични данни" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Възстановяване на запис" }, - "restoreItemConfirmation": { - "message": "Сигурни ли сте, че искате да възстановите записа?" - }, "restoredItem": { "message": "Записът е възстановен" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Устройството не поддържа потвърждаване с биометрични данни." }, + "biometricsFailedTitle": { + "message": "Неуспешно удостоверяване чрез биометрични данни" + }, + "biometricsFailedDesc": { + "message": "Удостоверяването чрез биометрични данни не може да бъде завършено. Опитайте да използвате главната си парола или се отпишете. Ако този проблем продължи да се случва, свържете се с поддръжката на Битуорден." + }, "nativeMessaginPermissionErrorTitle": { "message": "Правото не е дадено" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Политика от някоя организация влияе на вариантите за собственост." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Политика на организацията забранява да внасяте елементи в личния си трезор." + }, "excludedDomains": { "message": "Изключени домейни" }, "excludedDomainsDesc": { "message": "Битуорден няма да пита дали да запазва данните за вход в тези сайтове. За да влезе правилото в сила, презаредете страницата." }, + "excludedDomainsDescAlt": { + "message": "Битуорден няма да пита дали да запазва данните за вход в тези сайтове за всички регистрации, в които сте вписан(а). За да влезе правилото в сила, презаредете страницата." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ не е валиден домейн", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Избиране на папка..." }, - "ssoCompleteRegistration": { - "message": "За да завършите настройките за еднократна идентификация, трябва да зададете главна парола за трезора." + "noFoldersFound": { + "message": "Няма намерени папки", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Правата Ви в организацията бяха променени, необходимо е да зададете главна парола.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Организацията Ви изисква да зададете главна парола.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Изисква се потвърждение", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Часа" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Изнасяне на личния трезор" }, - "exportingPersonalVaultDescription": { - "message": "Ще бъдат изнесени само записите от личния трезор свързан с $EMAIL$. Записите в трезора на организацията няма да бъдат включени.", + "exportingIndividualVaultDescription": { + "message": "Ще бъдат изнесени само отделните записи в трезора, които са свързани с $EMAIL$. Записите от трезора на организацията няма да бъдат включени. Ще бъде изнесена само информацията за записите от трезора, а свързаните прикачени елементи няма да бъдат включени.", "placeholders": { "email": { "content": "$1", @@ -2080,14 +2214,14 @@ "serverVersion": { "message": "Версия на сървъра" }, - "selfHosted": { - "message": "Собствен хостинг" + "selfHostedServer": { + "message": "собствен хостинг" }, "thirdParty": { - "message": "Third-party" + "message": "Трета страна" }, "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": "Свързан(а) сте със сървърна имплементация от трета страна — $SERVERNAME$. Ако се сблъскате с проблем, може да проверите официалния сървър, или да го докладвате в сървъра на третата страна.", "placeholders": { "servername": { "content": "$1", @@ -2140,20 +2274,20 @@ "notificationSentDevice": { "message": "Към устройството Ви е изпратено известие." }, - "logInInitiated": { + "loginInitiated": { "message": "Вписването е стартирано" }, "exposedMasterPassword": { - "message": "Exposed Master Password" + "message": "Разобличена главна парола" }, "exposedMasterPasswordDesc": { - "message": "Password found in a data breach. Use a unique password to protect your account. Are you sure you want to use an exposed password?" + "message": "Паролата е намерена в пробив на данни. Използвайте уникална парола, за да защитите вашия акаунт. Наистина ли искате да използвате слаба парола?" }, "weakAndExposedMasterPassword": { - "message": "Weak and Exposed Master Password" + "message": "Слаба и разобличена главна парола" }, "weakAndBreachedMasterPasswordDesc": { - "message": "Weak password identified and found in a data breach. Use a strong and unique password to protect your account. Are you sure you want to use this password?" + "message": "Разпозната е слаба парола, която присъства в известен случай на изтекли данни. Използвайте сложна и уникална парола, за да защитите данните си. Наистина ли искате да използвате тази парола?" }, "checkForBreaches": { "message": "Проверяване в известните случаи на изтекли данни за тази парола" @@ -2180,7 +2314,7 @@ "message": "Как се ползва автоматичното попълване" }, "autofillSelectInfoWithCommand": { - "message": "Изберете елемент от тази страница или използвайте следната комбинация: $COMMAND$", + "message": "Изберете елемент на този екран, използвайте комбинацията $COMMAND$ или разгледайте други опции в настройките.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Изберете елемент от тази страница или задайте клавишна комбинация в настройките." + "message": "Изберете елемент на този екран или разгледайте други опции в настройките." }, "gotIt": { "message": "Разбрано" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Регион" + "loggingInOn": { + "message": "Вписване в" }, "opensInANewWindow": { "message": "Отваря се в нов прозорец" }, + "deviceApprovalRequired": { + "message": "Изисква се одобрение на устройството. Изберете начин за одобрение по-долу:" + }, + "rememberThisDevice": { + "message": "Запомняне на това устройство" + }, + "uncheckIfPublicDevice": { + "message": "Махнете отметката, ако използвате публично устройство" + }, + "approveFromYourOtherDevice": { + "message": "Одобряване с другото Ви устройство" + }, + "requestAdminApproval": { + "message": "Подаване на заявка за одобрение от администратор" + }, + "approveWithMasterPassword": { + "message": "Одобряване с главната парола" + }, + "ssoIdentifierRequired": { + "message": "Идентификаторът за еднократна идентификация на организация е задължителен." + }, "eu": { "message": "ЕС", "description": "European Union" }, - "us": { - "message": "САЩ", - "description": "United States" - }, "accessDenied": { "message": "Отказан достъп. Нямате право за преглед на страницата." }, @@ -2242,6 +2393,620 @@ "message": "Общи" }, "display": { - "message": "Display" + "message": "Външен вид" + }, + "accountSuccessfullyCreated": { + "message": "Регистрацията е създадена успешно!" + }, + "adminApprovalRequested": { + "message": "Заявено е одобрение от администратор" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Вашата заявка беше изпратена до администратора Ви." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Ще получите известие, когато тя бъде одобрена." + }, + "troubleLoggingIn": { + "message": "Имате проблем с вписването?" + }, + "loginApproved": { + "message": "Вписването е одобрено" + }, + "userEmailMissing": { + "message": "Липсва е-поща на потребителя" + }, + "deviceTrusted": { + "message": "Устройството е доверено" + }, + "inputRequired": { + "message": "Полето е задължително да бъде попълнено." + }, + "required": { + "message": "задължително" + }, + "search": { + "message": "Търсене" + }, + "inputMinLength": { + "message": "Въведеният в полето текст трябва да бъде с дължина поне $COUNT$ знака.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Полето не може да съдържа повече от $COUNT$ знака.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Следните знаци не са позволени: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Въведената стойност трябва да бъде поне $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Въведената стойност не трябва да бъде по-голяма от $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 или повече е-пощи са неправилни" + }, + "inputTrimValidator": { + "message": "Въведеното не може да съдържа само интервали.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Въведеният в полето текст не е адрес на е-поща." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ поле(та) по-горе се нуждае/ят от вниманието Ви.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Изберете --" + }, + "multiSelectPlaceholder": { + "message": "-- Пишете тук за филтриране --" + }, + "multiSelectLoading": { + "message": "Зареждане на опциите…" + }, + "multiSelectNotFound": { + "message": "Няма намерени елементи" + }, + "multiSelectClearAll": { + "message": "Изчистване на всичко" + }, + "plusNMore": { + "message": "+ още $QUANTITY$", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Подменю" + }, + "toggleCollapse": { + "message": "Превключване на свиването", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Внасяне на данните Ви в Битуорден?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Защитаване на данните Ви от LastPass и внасяне в Битуорден?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Запазване като нешифрован файл", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Внасяне в Битуорден", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Внасяне…", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Данните бяха внесени успешно!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Грешка при внасянето. Вижте конзолата за подробности.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "По време на внасянето възникна мрежова грешка.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Псевдонимен домейн" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Записите с включено изискване за повторно въвеждане на главната парола не могат да бъдат попълвани автоматично при зареждане на страницата. Автоматичното попълване при зареждане на страницата е изключено.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Автоматичното попълване при зареждане на страницата използва настройката си по подразбиране.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Изключете повторното въвеждане на главната парола, за да редактирате това поле", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Прескачане към съдържанието" + }, + "bitwardenOverlayButton": { + "message": "Бутон на менюто за авт. попълване на Битуорден", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Превключване на менюто за авт. попълване на Битуорден", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Меню за авт. попълване на Битуорден", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Отключете регистрацията си, за да видите съвпадащите записи за вписване", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Отключване на регистрацията", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Попълване на данните за", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Частично потребителско име", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Няма елементи за показване", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Нов елемент", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Добавяне на нов елемент в трезора", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Има налично меню за авт. попълване на Битуорден. Натиснете стрелката надолу, за да го изберете.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Включване" + }, + "ignore": { + "message": "Пренебрегване" + }, + "importData": { + "message": "Внасяне на данни", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Грешка при внасянето" + }, + "importErrorDesc": { + "message": "Има проблем с данните, които внасяте. Поправете грешките посочени по-долу и пробвайте отново." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Оправете грешките по-долу и опитайте отново." + }, + "description": { + "message": "Описание" + }, + "importSuccess": { + "message": "Данните са внесени успешно" + }, + "importSuccessNumberOfItems": { + "message": "Общо внесени елементи: $AMOUNT$.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Нов опит" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Това действие изисква потвърждаване. Задайте ПИН, за да продължите." + }, + "setPin": { + "message": "Задаване на ПИН" + }, + "verifyWithBiometrics": { + "message": "Потвърждаване с биометрични данни" + }, + "awaitingConfirmation": { + "message": "Изчаква се потвърждение" + }, + "couldNotCompleteBiometrics": { + "message": "Действието с биометрични данни не може да бъде завършено." + }, + "needADifferentMethod": { + "message": "Искате ли да опитате друг метод?" + }, + "useMasterPassword": { + "message": "Използване на главната парола" + }, + "usePin": { + "message": "Използване на ПИН" + }, + "useBiometrics": { + "message": "Използване на биометрични данни" + }, + "enterVerificationCodeSentToEmail": { + "message": "Въведете кода за потвърждаване, който беше изпратен на Вашата е-поща." + }, + "resendCode": { + "message": "Повторно изпращане на кода" + }, + "total": { + "message": "Общо" + }, + "importWarning": { + "message": "Внасяте данни към организацията „$ORGANIZATION$“. Данните могат да бъдат споделени с членовете ѝ. Сигурни ли сте, че искате да продължите?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Стартирайте DUO и следвайте инструкциите, за да завършите вписването." + }, + "duoRequiredForAccount": { + "message": "Вашата регистрация изисква двустепенно удостоверяване чрез Duo." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Отворете разширението в изскачащ прозорец, за да завършите вписването." + }, + "popoutExtension": { + "message": "Отваряне на разширението в нов прозорец" + }, + "launchDuo": { + "message": "Стартиране на DUO" + }, + "importFormatError": { + "message": "Данните са в неправилен формат. Проверете файла за внасяне и пробвайте отново." + }, + "importNothingError": { + "message": "Нищо не бе внесено." + }, + "importEncKeyError": { + "message": "Грешка при дешифрирането на изнесения файл. Ключът за шифриране не отговаря на този, който е използван за изнасянето на данните." + }, + "invalidFilePassword": { + "message": "Неправилна парола за файла. Използвайте паролата, която сте въвели при създаването на изнесения файл." + }, + "importDestination": { + "message": "Място на внасяне" + }, + "learnAboutImportOptions": { + "message": "Научете повече относно възможностите за внасяне" + }, + "selectImportFolder": { + "message": "Изберете папка" + }, + "selectImportCollection": { + "message": "Изберете колекция" + }, + "importTargetHint": { + "message": "Изберете тази опция, ако искате съдържанието на внесения файл да бъде преместено в $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Файлът съдържа невъзложени елементи." + }, + "selectFormat": { + "message": "Избор на форма̀та на файла за внасяне" + }, + "selectImportFile": { + "message": "Изберете файла за внасяне" + }, + "chooseFile": { + "message": "Изберете файл" + }, + "noFileChosen": { + "message": "Не е избран файл" + }, + "orCopyPasteFileContents": { + "message": "или поставете съдържанието му" + }, + "instructionsFor": { + "message": "Инструкции за $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Потвърждаване на внасянето на трезора" + }, + "confirmVaultImportDesc": { + "message": "Този файл е защитен с парола. Трябва да въведете паролата, за да могат данните да бъдат внесени." + }, + "confirmFilePassword": { + "message": "Потвърждаване на паролата на файла" + }, + "typePasskey": { + "message": "Секретен ключ" + }, + "passkeyNotCopied": { + "message": "Секретният ключ няма да бъде копиран" + }, + "passkeyNotCopiedAlert": { + "message": "Секретният ключ няма да бъде копиран в клонирания елемент. Искате ли да продължите с клонирането на елемента?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Изисква се проверка от иницииращия сайт. Тази функция все още не е внедрена за акаунти без главна парола." + }, + "logInWithPasskey": { + "message": "Вписване със секретен ключ?" + }, + "passkeyAlreadyExists": { + "message": "За това приложение вече съществува секретен ключ." + }, + "noPasskeysFoundForThisApplication": { + "message": "Няма намерени секретни ключове за това приложение." + }, + "noMatchingPasskeyLogin": { + "message": "Нямате елемент за вписване, подходящ за този уеб сайт." + }, + "confirm": { + "message": "Потвърждаване" + }, + "savePasskey": { + "message": "Запазване на секретния ключ" + }, + "savePasskeyNewLogin": { + "message": "Запазване на секретния ключ като нов елемент за вписване" + }, + "choosePasskey": { + "message": "Изберете елемент, в който да запазите този секретен ключ" + }, + "passkeyItem": { + "message": "Секретен ключ" + }, + "overwritePasskey": { + "message": "Да се замени ли секретният ключ?" + }, + "overwritePasskeyAlert": { + "message": "Този елемент вече съдържа секретен ключ. Наистина ли искате да замените текущия секретен ключ?" + }, + "featureNotSupported": { + "message": "Тази функционалност все още не се поддържа" + }, + "yourPasskeyIsLocked": { + "message": "За да се ползва секретният ключ, е необходимо удостоверяване. Потвърдете самоличността си, за да продължите." + }, + "multifactorAuthenticationCancelled": { + "message": "Многостъпковото удостоверяване е отменено" + }, + "noLastPassDataFound": { + "message": "Няма намерени данни от LastPass" + }, + "incorrectUsernameOrPassword": { + "message": "Неправилно потребителско име или парола" + }, + "incorrectPassword": { + "message": "Неправилна парола" + }, + "incorrectCode": { + "message": "Неправилен код" + }, + "incorrectPin": { + "message": "Неправилен ПИН" + }, + "multifactorAuthenticationFailed": { + "message": "Многостъпковото удостоверяване беше неуспешно" + }, + "includeSharedFolders": { + "message": "Да се включат и споделените папки" + }, + "lastPassEmail": { + "message": "Е-поща от LastPass" + }, + "importingYourAccount": { + "message": "Внасяне на данните Ви…" + }, + "lastPassMFARequired": { + "message": "Изисква се многостъпково удостоверяване за LastPass" + }, + "lastPassMFADesc": { + "message": "Въведете еднократния код за достъп от приложението си за удостоверяване" + }, + "lastPassOOBDesc": { + "message": "Одобрете заявката за вписване в приложението си за удостоверяване, или въведете еднократен код за достъп." + }, + "passcode": { + "message": "Код за достъп" + }, + "lastPassMasterPassword": { + "message": "Главна парола на LastPass" + }, + "lastPassAuthRequired": { + "message": "Изисква се удостоверяване в LastPass" + }, + "awaitingSSO": { + "message": "Изчакване на еднократното удостоверяване" + }, + "awaitingSSODesc": { + "message": "Моля, продължете вписването с данните за удостоверяване на Вашата компания." + }, + "seeDetailedInstructions": { + "message": "Може да намерите подробни инструкции в помощния ни уеб сайт на адрес", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Внасяне директно от LastPass" + }, + "importFromCSV": { + "message": "Внасяне от CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Опитайте отново или вижте дали имате е-писмо от LastPass за потвърждаване на самоличността си." + }, + "collection": { + "message": "Колекция" + }, + "lastPassYubikeyDesc": { + "message": "Поставете устройството на YubiKey, което е свързано с регистрацията Ви в LastPass, в USB порт и натиснете бутона на устройството." + }, + "switchAccount": { + "message": "Превключване на регистрацията" + }, + "switchAccounts": { + "message": "Превключване на регистрациите" + }, + "switchToAccount": { + "message": "Превключване към регистрацията" + }, + "activeAccount": { + "message": "Активиране на регистрацията" + }, + "availableAccounts": { + "message": "Налични регистрации" + }, + "accountLimitReached": { + "message": "Достигнато е ограничението на броя регистрации. Излезте от някоя, за да добавите друга." + }, + "active": { + "message": "активно" + }, + "locked": { + "message": "заключено" + }, + "unlocked": { + "message": "отключено" + }, + "server": { + "message": "сървър" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Използвайте своето устройство или хардуерен ключ" + }, + "justOnce": { + "message": "Само веднъж" + }, + "alwaysForThisSite": { + "message": "Винаги за този уеб сайт" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ беше добавено към изключените домейни.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Често използвани формати", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Искате ли да направите Битуорден своя управител на пароли по подразбиране?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ако пренебрегнете тази настройка, може да има конфликт между менюто за автоматично попълване на Битуорден и това на браузъра.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Направете Битуорден своя управител на пароли по подразбиране", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Битуорден не може да бъде зададен като управител на пароли по подразбиране", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Трябва да дадете на Битуорден разрешение за ползване в поверителни прозорци, ако искате да го зададете като управител на пароли по подразбиране.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Задаване по подразбиране", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Идентификационните данни са запазени успешно!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Идентификационните данни са променени успешно!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Грешка при запазването на идентификационните данни. Вижте конзолата за подробности.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Премахване на секретния ключ" + }, + "passkeyRemoved": { + "message": "Секретният ключ е премахнат" + }, + "unassignedItemsBanner": { + "message": "Забележка: неразпределените елементи на организацията вече не се виждат в изгледа с „Всички трезори“, а са достъпни само през Административната конзола. Добавете тези елементи към някоя колекция в Административната конзола, за да станат видими." } } diff --git a/apps/browser/src/_locales/bn/messages.json b/apps/browser/src/_locales/bn/messages.json index d5f735eae5..4bdf811b3b 100644 --- a/apps/browser/src/_locales/bn/messages.json +++ b/apps/browser/src/_locales/bn/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "স্বতঃপূরণ" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "পাসওয়ার্ড তৈরি করুন (অনুলিপিকৃত)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "কোনও মিলত লগইন নেই।" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "দৈর্ঘ্য" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "পাসওয়ার্ড" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "পাসফ্রেজ" }, @@ -338,6 +368,12 @@ "other": { "message": "অন্যান্য" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "এক্সটেনশনটি মূল্যায়ন করুন" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "এখনই লক করুন" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "সঙ্গে সঙ্গে" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "আপনার নতুন অ্যাকাউন্ট তৈরি করা হয়েছে! আপনি এখন প্রবেশ করতে পারেন।" }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "আমরা আপনাকে আপনার মূল পাসওয়ার্ডের ইঙ্গিত সহ একটি ইমেল প্রেরণ করেছি।" }, @@ -476,6 +521,18 @@ "autofillError": { "message": "এই পৃষ্ঠায় নির্বাচিত বস্তুটি স্বতঃপূর্ণে অক্ষম। পরিবর্তে তথ্যটি অনুলিপিত করুন এবং আটকান।" }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "প্রস্থানকৃত" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "\"লগইন যোগ করুন বিজ্ঞপ্তি\" স্বয়ংক্রিয়ভাবে আপনই যখনই প্রথমবারের জন্য লগ ইন করেন তখন আপনার ভল্টে নতুন লগইনগুলি সংরক্ষণ করতে অনুরোধ জানায়।" }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "আপনি কি এই পাসওয়ার্ডটি Bitwarden এ হালনাগাদ করতে চান?" }, "notificationChangeSave": { "message": "হ্যাঁ, এখনই হালনাগাদ করুন" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "পূর্ব-নির্ধারিত URI মিল সনাক্তকরণ", @@ -649,6 +727,9 @@ "themeDesc": { "message": "অ্যাপ্লিকেশনটির রং থিম পরিবর্তন।" }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "অন্ধকার", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "বৈশিষ্ট্য অনুপলব্ধ" }, - "updateKey": { - "message": "আপনি আপনার এনক্রিপশন কী হালনাগাদ না করা পর্যন্ত এই বৈশিষ্ট্যটি ব্যবহার করতে পারবেন না।" + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "প্রিমিয়াম সদস্য" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "ফাইল সংযুক্তির জন্য ১ জিবি এনক্রিপ্টেড স্থান।" }, - "ppremiumSignUpTwoStep": { - "message": "YubiKey, FIDO U2F, ও Duo এর মতো অতিরিক্ত দ্বি-পদক্ষেপ লগইন বিকল্পগুলি।" + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "আপনার ভল্টটি সুরক্ষিত রাখতে পাসওয়ার্ড স্বাস্থ্যকরন, অ্যাকাউন্ট স্বাস্থ্য এবং ডেটা লঙ্ঘনের প্রতিবেদন।" @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "পরিবেশের URL গুলি সংরক্ষণ করা হয়েছে।" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "পৃষ্ঠা লোডে স্বতঃপূরণ সক্ষম করুন" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "অবৈধ পিন কোড।" }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "বায়োমেট্রিক্স দিয়ে আনলক করুন" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "বস্তু পুনরুদ্ধার" }, - "restoreItemConfirmation": { - "message": "আপনি কি নিশ্চিত যে আপনি এই বস্তুটি পুনরুদ্ধার করতে চান?" - }, "restoredItem": { "message": "বস্তু পুনরুদ্ধারকৃত" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "ব্রাউজার বায়োমেট্রিক্স এই ডিভাইসে সমর্থিত নয়।" }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "অনুমতি দেওয়া হয়নি" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "একটি প্রতিষ্ঠানের নীতি আপনার মালিকানা বিকল্পগুলিকে প্রভাবিত করছে।" }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/bs/messages.json b/apps/browser/src/_locales/bs/messages.json index f96678dd6f..a7f157011e 100644 --- a/apps/browser/src/_locales/bs/messages.json +++ b/apps/browser/src/_locales/bs/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-fill" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "Length" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Password" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Passphrase" }, @@ -338,6 +368,12 @@ "other": { "message": "Other" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Immediately" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Your new account has been created! You may now log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We've sent you an email with your master password hint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Ask to add an item if one isn't found in your vault." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, "notificationChangeSave": { "message": "Update" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "Default URI match detection", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Dark", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Invalid PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restore item" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Item restored" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/ca/messages.json b/apps/browser/src/_locales/ca/messages.json index 2ea5e07202..147a64233c 100644 --- a/apps/browser/src/_locales/ca/messages.json +++ b/apps/browser/src/_locales/ca/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Emplenament automàtic" }, + "autoFillLogin": { + "message": "Emplena automàticament l'inici de sessió" + }, + "autoFillCard": { + "message": "Emplena automàticament la targeta" + }, + "autoFillIdentity": { + "message": "Emplena automàticament l'identitat" + }, "generatePasswordCopied": { "message": "Genera contrasenya (copiada)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No hi ha inicis de sessió coincidents." }, + "noCards": { + "message": "Sense targetes" + }, + "noIdentities": { + "message": "Sense identitats" + }, + "addLoginMenu": { + "message": "Afig inici de sessió" + }, + "addCardMenu": { + "message": "Afig una targeta" + }, + "addIdentityMenu": { + "message": "Afig identitat" + }, "unlockVaultMenu": { "message": "1. Desbloquegeu la caixa forta." }, @@ -244,6 +268,9 @@ "length": { "message": "Longitud" }, + "passwordMinLength": { + "message": "Longitud mínima de la contrasenya" + }, "uppercase": { "message": "Majúscula (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Contrasenya" }, + "totp": { + "message": "Secret de l'autenticador" + }, "passphrase": { "message": "Frase de pas" }, @@ -338,6 +368,12 @@ "other": { "message": "Altres" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Configura un mètode de desbloqueig per canviar l'acció del temps d'espera de la caixa forta." + }, + "unlockMethodNeeded": { + "message": "Configura un mètode de desbloqueig a Configuració" + }, "rateExtension": { "message": "Valora aquesta extensió" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Bloqueja ara" }, + "lockAll": { + "message": "Bloqueja-ho tot" + }, "immediately": { "message": "Immediatament" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "El vostre compte s'ha creat correctament. Ara ja podeu iniciar sessió." }, + "youSuccessfullyLoggedIn": { + "message": "Heu iniciat sessió correctament" + }, + "youMayCloseThisWindow": { + "message": "Podeu tancar aquesta finestra" + }, "masterPassSent": { "message": "Hem enviat un correu electrònic amb la vostra contrasenya mestra." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "No es pot omplir automàticament l'element seleccionat en aquesta pàgina. Com a alternativa, copieu i enganxeu la informació." }, + "totpCaptureError": { + "message": "No es pot escanejar el codi QR des de la pàgina web actual" + }, + "totpCaptureSuccess": { + "message": "S'ha afegit la clau de l'autenticador" + }, + "totpCapture": { + "message": "Escaneja el codi QR de l'autenticador des de la pàgina web actual" + }, + "copyTOTP": { + "message": "Copia la clau de l'autenticador (TOTP)" + }, "loggedOut": { "message": "Sessió tancada" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "La \"Notificació per afegir inicis de sessió\" demana automàticament que guardeu els nous inicis de sessió a la vostra caixa forta quan inicieu la sessió per primera vegada." }, + "addLoginNotificationDescAlt": { + "message": "Demana afegir un element si no se'n troba cap a la caixa forta. S'aplica a tots els comptes connectats." + }, "showCardsCurrentTab": { "message": "Mostra les targetes a la pàgina de pestanya" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Demana actualitzar la contrasenya d'inici de sessió quan es detecte un canvi en un lloc web." }, + "changedPasswordNotificationDescAlt": { + "message": "Demana actualitzar la contrasenya d'inici de sessió quan es detecte un canvi en un lloc web. S'aplica a tots els comptes connectats." + }, + "enableUsePasskeys": { + "message": "Demana guardar i utilitzar claus de pas" + }, + "usePasskeysDesc": { + "message": "Demana que guardeu les contrasenyes noves o inicieu sessió amb les claus emmagatzemades a la vostra caixa forta. S'aplica a tots els comptes connectats." + }, "notificationChangeDesc": { "message": "Voleu actualitzar aquesta contrasenya a Bitwarden?" }, "notificationChangeSave": { "message": "Actualitza" }, + "notificationUnlockDesc": { + "message": "Desbloquegeu la vostra caixa forta de Bitwarden per completar la sol·licitud d'emplenament automàtic." + }, + "notificationUnlock": { + "message": "Desbloqueja" + }, "enableContextMenuItem": { "message": "Mostra les opcions del menú contextual" }, "contextMenuItemDesc": { "message": "Utilitza un clic secundari per accedir a la generació de contrasenyes i als inicis de sessió coincidents per al lloc web. " }, + "contextMenuItemDescAlt": { + "message": "Fa servir un clic secundari per accedir a la generació de contrasenyes i als inicis de sessió coincidents per al lloc web. S'aplica a tots els comptes connectats." + }, "defaultUriMatchDetection": { "message": "Detecció de coincidències URI per defecte", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Canvia el color del tema de l'aplicació." }, + "themeDescAlt": { + "message": "Canvia el tema de color de l'aplicació. S'aplica a tots els comptes connectats." + }, "dark": { "message": "Fosc", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Característica no disponible" }, - "updateKey": { - "message": "No podeu utilitzar aquesta característica fins que actualitzeu la vostra clau de xifratge." + "encryptionKeyMigrationRequired": { + "message": "Cal migrar la clau de xifratge. Inicieu la sessió a la caixa forta web per actualitzar la clau de xifratge." }, "premiumMembership": { "message": "Subscripció Premium" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB d'emmagatzematge xifrat per als fitxers adjunts." }, - "ppremiumSignUpTwoStep": { - "message": "Opcions addicionals d'inici de sessió en dues passes com ara YubiKey, FIDO U2F i Duo." + "premiumSignUpTwoStepOptions": { + "message": "Opcions propietàries de doble factor com ara YubiKey i Duo." }, "ppremiumSignUpReports": { "message": "Requisits d'higiene de la contrasenya, salut del compte i informe d'infraccions de dades per mantenir la seguretat de la vostra caixa forta." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "S'han guardat les URL de l'entorn" }, + "showAutoFillMenuOnFormFields": { + "message": "Mostra el menú d'emplenament automàtic als camps del formulari", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "S'aplica a tots els comptes connectats." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Desactiveu la configuració integrada del gestor de contrasenyes del vostre navegador per evitar conflictes." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edita la configuració del navegador." + }, + "autofillOverlayVisibilityOff": { + "message": "Desactivat", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Quan el camp està seleccionat (en el focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Quan la icona d'emplenament automàtic està seleccionada", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Habilita l'emplenament automàtic en carregar la pàgina" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Mostra una imatge reconeixible al costat de cada inici de sessió." }, + "faviconDescAlt": { + "message": "Mostra una imatge reconeixible al costat de cada sessió. S'aplica a tots els comptes connectats." + }, "enableBadgeCounter": { "message": "Mostra el comptador insígnia" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "El codi PIN no és vàlid." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Hi ha massa intents d'introducció de PIN no vàlids. S'està tancant sessió." + }, "unlockWithBiometrics": { "message": "Desbloqueja amb biomètrica" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restaura l'element" }, - "restoreItemConfirmation": { - "message": "Esteu segur que voleu restaurar aquest element?" - }, "restoredItem": { "message": "Element restaurat" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "La biometria del navegador no és compatible amb aquest dispositiu." }, + "biometricsFailedTitle": { + "message": "La biometria ha fallat" + }, + "biometricsFailedDesc": { + "message": "La biometria no es pot completar, considereu utilitzar una contrasenya mestra o tancar la sessió. Si això continua, poseu-vos en contacte amb el servei d'assistència de Bitwarden." + }, "nativeMessaginPermissionErrorTitle": { "message": "No s'ha proporcionat el permís" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Una política d’organització afecta les vostres opcions de propietat." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Una política d'organització ha bloquejat la importació d'elements a la vostra caixa forta individual." + }, "excludedDomains": { "message": "Dominis exclosos" }, "excludedDomainsDesc": { "message": "Bitwarden no demanarà que es guarden les dades d’inici de sessió d’aquests dominis. Heu d'actualitzar la pàgina perquè els canvis tinguen efecte." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden no demanarà que es guarden les dades d'inici de sessió d'aquests dominis per a tots els comptes iniciats. Heu d'actualitzar la pàgina perquè els canvis tinguen efecte." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ no és un domini vàlid", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Seleccioneu la carpeta..." }, - "ssoCompleteRegistration": { - "message": "Per completar la sessió amb SSO, configureu una contrasenya mestra per accedir i protegir la vostra caixa forta." + "noFoldersFound": { + "message": "No s'ha trobat cap carpeta", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Els permisos de la vostra organització s'han actualitzat, cal que establiu una contrasenya mestra.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "La vostra organització requereix que establiu una contrasenya mestra.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Es requereix verificació", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hores" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "S'està exportant la caixa forta personal" }, - "exportingPersonalVaultDescription": { - "message": "Només s'exportaran els elements personals de la caixa forta associats a $EMAIL$. Els elements de la caixa forta de l'organització no s'inclouran.", + "exportingIndividualVaultDescription": { + "message": "Només s'exportaran els elements de la caixa forta individuals associats a $EMAIL$. Els elements de la caixa de l'organització no s'inclouran. Només s'exportarà la informació de l'element de la caixa forta i no inclourà els fitxers adjunts associats.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Versió del servidor" }, - "selfHosted": { - "message": "Autoallotjat" + "selfHostedServer": { + "message": "autoallotjat" }, "thirdParty": { "message": "Tercers" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "S'ha enviat una notificació al vostre dispositiu." }, - "logInInitiated": { + "loginInitiated": { "message": "S'ha iniciat la sessió" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Com emplenar automàticament" }, "autofillSelectInfoWithCommand": { - "message": "Seleccioneu un element d'aquesta pàgina o utilitzeu la drecera: $COMMAND$", + "message": "Seleccioneu un element d'aquesta pantalla, utilitzeu la drecera $COMMAND$ o exploreu altres opcions a la configuració.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Seleccioneu un element d'aquesta pàgina o definiu una drecera a la configuració." + "message": "Seleccioneu un element d'aquesta pantalla, o exploreu altres opcions a la configuració." }, "gotIt": { "message": "D'acord" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Regió" + "loggingInOn": { + "message": "Inici de sessió en" }, "opensInANewWindow": { "message": "S'obri en una finestra nova" }, + "deviceApprovalRequired": { + "message": "Cal l'aprovació del dispositiu. Seleccioneu una opció d'aprovació a continuació:" + }, + "rememberThisDevice": { + "message": "Recorda aquest dispositiu" + }, + "uncheckIfPublicDevice": { + "message": "Desmarqueu si utilitzeu un dispositiu públic" + }, + "approveFromYourOtherDevice": { + "message": "Aproveu des d'un altre dispositiu vostre" + }, + "requestAdminApproval": { + "message": "Sol·liciteu l'aprovació de l'administrador" + }, + "approveWithMasterPassword": { + "message": "Aprova amb contrasenya mestra" + }, + "ssoIdentifierRequired": { + "message": "Es requereix un identificador SSO de l'organització." + }, "eu": { "message": "UE", "description": "European Union" }, - "us": { - "message": "EUA", - "description": "United States" - }, "accessDenied": { "message": "Accés denegat. No teniu permís per veure aquesta pàgina." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Mostra" + }, + "accountSuccessfullyCreated": { + "message": "Compte creat correctament!" + }, + "adminApprovalRequested": { + "message": "S'ha sol·licitat l'aprovació de l'administrador" + }, + "adminApprovalRequestSentToAdmins": { + "message": "La vostra sol·licitud s'ha enviat a l'administrador." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Se us notificarà una vegada aprovat." + }, + "troubleLoggingIn": { + "message": "Teniu problemes per iniciar la sessió?" + }, + "loginApproved": { + "message": "S'ha aprovat l'inici de sessió" + }, + "userEmailMissing": { + "message": "Falta el correu electrònic de l'usuari" + }, + "deviceTrusted": { + "message": "Dispositiu de confiança" + }, + "inputRequired": { + "message": "L'entrada és obligatòria." + }, + "required": { + "message": "obligatori" + }, + "search": { + "message": "Cerca" + }, + "inputMinLength": { + "message": "L'entrada ha de tenir com a mínim $COUNT$ caràcters.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "L'entrada no ha de superar $COUNT$ caràcters de longitud.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Els següents caràcters no estan permesos:\n$CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "El valor d'entrada ha de ser com a mínim $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "El valor d'entrada no ha de ser superior a $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 o més correus no són vàlids" + }, + "inputTrimValidator": { + "message": "L'entrada no ha de contenir només espais en blanc.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "L'entrada no és una adreça de correu electrònic." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ camp(s) de dalt necessiten la vostra atenció.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Selecciona --" + }, + "multiSelectPlaceholder": { + "message": "-- Escriviu per filtrar --" + }, + "multiSelectLoading": { + "message": "Obtenint opcions..." + }, + "multiSelectNotFound": { + "message": "No s'ha trobat cap element" + }, + "multiSelectClearAll": { + "message": "Esborra-ho tot" + }, + "plusNMore": { + "message": "+ $QUANTITY$ més", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenú" + }, + "toggleCollapse": { + "message": "Redueix/Amplia", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Voleu importar les vostres dades a Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protegiu les vostres dades de LastPass i importeu-les a Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Guarda com a fitxer sense xifrar", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importa a Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "S'està important...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Les dades s'han importat correctament!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "S'ha produït un error en importar. Consulteu la consola per obtenir més informació.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "S'ha trobat un error de xarxa durant la importació.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alies de domini" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Els elements amb una nova sol·licitud de contrasenya mestra no es poden omplir automàticament en carregar la pàgina. L'emplenament automàtic en carregar de la pàgina està desactivat.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "S'ha configurat l'emplenament automàtic en carregar la pàgina per que utilitze la configuració predeterminada.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Desactiveu la sol·licitud de nova contrasenya mestra per editar aquest camp", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Vés al contingut" + }, + "bitwardenOverlayButton": { + "message": "Botó de menú d'emplenament automàtic de Bitwarden", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Commuta el menú d'emplenament automàtic de Bitwarden", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Menú d'emplenament automàtic de Bitwarden", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Desbloqueja el compte per veure els inicis de sessió coincidents", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Desbloqueja el compte", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Ompliu les credencials per a", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Nom d'usuari parcial", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No hi ha cap element per mostrar", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Element nou", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Afegeix un nou element a la caixa forta", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "El menú d'emplenament automàtic de Bitwarden està disponible. Premeu la tecla de fletxa avall per seleccionar-lo.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Activa" + }, + "ignore": { + "message": "Ignora" + }, + "importData": { + "message": "Importa dades", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Error d'importació" + }, + "importErrorDesc": { + "message": "Hi ha hagut un problema amb les dades que heu intentat importar. Resoleu els errors que es mostren a continuació al fitxer font i torneu-ho a provar." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resoleu els errors següents i torneu-ho a provar." + }, + "description": { + "message": "Descripció" + }, + "importSuccess": { + "message": "Les dades s'han importat correctament" + }, + "importSuccessNumberOfItems": { + "message": "S'han importat un total de $AMOUNT$ elements.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Torneu-ho a provar" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Es requereix verificació per a aquesta acció. Estableix un PIN per continuar." + }, + "setPin": { + "message": "Estableix el PIN" + }, + "verifyWithBiometrics": { + "message": "Verifica amb biomètrica" + }, + "awaitingConfirmation": { + "message": "S'està esperant la confirmació" + }, + "couldNotCompleteBiometrics": { + "message": "No s'ha pogut completar la biomètrica." + }, + "needADifferentMethod": { + "message": "Necessita un mètode diferent?" + }, + "useMasterPassword": { + "message": "Utilitza contrasenya mestra" + }, + "usePin": { + "message": "Utilitza el PIN" + }, + "useBiometrics": { + "message": "Utilitza la biometria" + }, + "enterVerificationCodeSentToEmail": { + "message": "Introduïu el codi de verificació que s’ha enviat al vostre correu electrònic." + }, + "resendCode": { + "message": "Reenvia el codi" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "Esteu important dades a $ORGANIZATION$. Les vostres dades es poden compartir amb membres d'aquesta organització. Voleu continuar?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Inicieu DUO i seguiu els passos per finalitzar la sessió." + }, + "duoRequiredForAccount": { + "message": "Es requereix l'inici de sessió en dos passos de DUO al vostre compte." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Desplega l'extensió per completar l'inici de sessió." + }, + "popoutExtension": { + "message": "Extensió emergent" + }, + "launchDuo": { + "message": "Inicia DUO" + }, + "importFormatError": { + "message": "Les dades no estan formatades correctament. Comproveu el fitxer d'importació i torneu-ho a provar." + }, + "importNothingError": { + "message": "No s'ha importat res." + }, + "importEncKeyError": { + "message": "Error en desxifrar el fitxer exportat. La vostra clau de xifratge no coincideix amb la clau de xifratge utilitzada per exportar les dades." + }, + "invalidFilePassword": { + "message": "La contrasenya del fitxer no és vàlida. Utilitzeu la contrasenya que vau introduir quan vau crear el fitxer d'exportació." + }, + "importDestination": { + "message": "Destinació de la importació" + }, + "learnAboutImportOptions": { + "message": "Obteniu informació sobre les opcions d'importació" + }, + "selectImportFolder": { + "message": "Selecciona una carpeta" + }, + "selectImportCollection": { + "message": "Selecciona una col·lecció" + }, + "importTargetHint": { + "message": "Seleccioneu aquesta opció si voleu que el contingut del fitxer importat es desplace a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "El fitxer conté elements no assignats." + }, + "selectFormat": { + "message": "Seleccioneu el format del fitxer d'importació" + }, + "selectImportFile": { + "message": "Seleccioneu el fitxer d'importació" + }, + "chooseFile": { + "message": "Trieu fitxer" + }, + "noFileChosen": { + "message": "No s'ha triat cap fitxer" + }, + "orCopyPasteFileContents": { + "message": "o copieu/enganxeu el contingut dels fitxers d'importació" + }, + "instructionsFor": { + "message": "Instruccions de $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirma la importació de la Caixa forta" + }, + "confirmVaultImportDesc": { + "message": "Aquest fitxer està protegit amb contrasenya. Introduïu-la per importar dades." + }, + "confirmFilePassword": { + "message": "Confirma la contrasenya del fitxer" + }, + "typePasskey": { + "message": "Clau de pas" + }, + "passkeyNotCopied": { + "message": "La clau de pas no es copiarà" + }, + "passkeyNotCopiedAlert": { + "message": "La clau de pas no es copiarà a l'element clonat. Voleu continuar clonant aquest element?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verificació requerida pel lloc iniciador. Aquesta funció encara no s'ha implementat per als comptes sense contrasenya mestra." + }, + "logInWithPasskey": { + "message": "Inici de sessió amb clau de pas?" + }, + "passkeyAlreadyExists": { + "message": "Ja hi ha una clau de pas per a aquesta aplicació." + }, + "noPasskeysFoundForThisApplication": { + "message": "No s'han trobat claus de pas per a aquesta aplicació." + }, + "noMatchingPasskeyLogin": { + "message": "No teniu cap inici de sessió que coincidisca amb el d'aquest lloc." + }, + "confirm": { + "message": "Confirma-ho" + }, + "savePasskey": { + "message": "Guarda la clau de pas" + }, + "savePasskeyNewLogin": { + "message": "Guarda la clau de pas com a nou inici de sessió" + }, + "choosePasskey": { + "message": "Trieu un inici de sessió per guardar aquesta clau de pas" + }, + "passkeyItem": { + "message": "Element de clau de pas" + }, + "overwritePasskey": { + "message": "Sobreescriure la clau de pas?" + }, + "overwritePasskeyAlert": { + "message": "Aquest element ja conté una clau de pas. Esteu segur que voleu sobreescriure la actual?" + }, + "featureNotSupported": { + "message": "La característica encara no és compatible" + }, + "yourPasskeyIsLocked": { + "message": "Es requereix autenticació per utilitzar la clau de pas. Verifiqueu la vostra identitat per continuar." + }, + "multifactorAuthenticationCancelled": { + "message": "S'ha cancel·lat l'autenticació multifactor" + }, + "noLastPassDataFound": { + "message": "No s'han trobat dades de LastPass" + }, + "incorrectUsernameOrPassword": { + "message": "Nom d'usuari o contrasenya incorrectes" + }, + "incorrectPassword": { + "message": "Contrasenya incorrecta" + }, + "incorrectCode": { + "message": "Codi incorrecte" + }, + "incorrectPin": { + "message": "PIN incorrecte" + }, + "multifactorAuthenticationFailed": { + "message": "L'autenticació multifactor ha fallat" + }, + "includeSharedFolders": { + "message": "Inclou les carpetes compartides" + }, + "lastPassEmail": { + "message": "Adreça electrònica de LastPass" + }, + "importingYourAccount": { + "message": "S'està important el compte..." + }, + "lastPassMFARequired": { + "message": "L'autenticació multifactor de LastPass és obligatòria" + }, + "lastPassMFADesc": { + "message": "Introduïu la vostra contrasenya única des de l'aplicació d'autenticació" + }, + "lastPassOOBDesc": { + "message": "Aproveu la sol·licitud d'inici de sessió a l'aplicació d'autenticació o introduïu una contrasenya única." + }, + "passcode": { + "message": "Clau d'accés" + }, + "lastPassMasterPassword": { + "message": "Contrasenya mestra de LastPass" + }, + "lastPassAuthRequired": { + "message": "L'autenticació de LastPass és obligatòria" + }, + "awaitingSSO": { + "message": "S'està esperant l'autenticació SSO" + }, + "awaitingSSODesc": { + "message": "Continueu iniciant la sessió amb les credencials de la vostra empresa." + }, + "seeDetailedInstructions": { + "message": "Consulteu les instruccions detallades al nostre lloc d'ajuda a", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Importa directament des de LastPass" + }, + "importFromCSV": { + "message": "Importa des de CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Torneu a provar-ho o cerqueu un correu electrònic de LastPass per verificar la vostra identitat." + }, + "collection": { + "message": "Col·lecció" + }, + "lastPassYubikeyDesc": { + "message": "Inseriu la YubiKey associada al compte del LastPass al port USB de l'ordinador i, després, toqueu-ne el botó." + }, + "switchAccount": { + "message": "Canvia de compte" + }, + "switchAccounts": { + "message": "Canvia de comptes" + }, + "switchToAccount": { + "message": "Canvia al compte" + }, + "activeAccount": { + "message": "Activa el compte" + }, + "availableAccounts": { + "message": "Comptes disponibles" + }, + "accountLimitReached": { + "message": "S'ha arribat al límit del compte. Tanqueu la sessió d'un compte per afegir-ne un altre." + }, + "active": { + "message": "activa" + }, + "locked": { + "message": "bloquejat" + }, + "unlocked": { + "message": "desbloquejat" + }, + "server": { + "message": "servidor" + }, + "hostedAt": { + "message": "allotjat a" + }, + "useDeviceOrHardwareKey": { + "message": "Utilitzeu el vostre dispositiu o la clau de maquinari" + }, + "justOnce": { + "message": "Només una vegada" + }, + "alwaysForThisSite": { + "message": "Sempre per aquest lloc" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ afegit als dominis exclosos.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Formats comuns", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Fer que Bitwarden siga el gestor de contrasenyes predeterminat?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Si ignoreu aquesta opció pot provocar conflictes entre el menú d'emplenament automàtic de Bitwarden i el del navegador.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Feu que Bitwarden siga el vostre gestor de contrasenyes predeterminat", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "No es pot establir Bitwarden com a gestor de contrasenyes predeterminat", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Heu de concedir permisos de privadesa del navegador a Bitwarden per establir-lo com a gestor de contrasenyes predeterminat.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Estableix per defecte", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Les credencials s'han guardat correctament!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Les credencials s'han actualitzat correctament!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "S'ha produït un error en guardar les credencials. Consulteu la consola per obtenir més informació.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Suprimeix la clau de pas" + }, + "passkeyRemoved": { + "message": "Clau de pas suprimida" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/cs/messages.json b/apps/browser/src/_locales/cs/messages.json index 859a8f49a1..2b6a8d4f0b 100644 --- a/apps/browser/src/_locales/cs/messages.json +++ b/apps/browser/src/_locales/cs/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Automatické vyplňování" }, + "autoFillLogin": { + "message": "Automaticky vyplnit přihlášení" + }, + "autoFillCard": { + "message": "Automaticky vyplnit kartu" + }, + "autoFillIdentity": { + "message": "Automaticky vyplnit identitu" + }, "generatePasswordCopied": { "message": "Vygenerovat heslo a zkopírovat do schránky" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Žádné odpovídající přihlašovací údaje" }, + "noCards": { + "message": "Žádné karty" + }, + "noIdentities": { + "message": "Žádné identity" + }, + "addLoginMenu": { + "message": "Přidat přihlašovací údaje" + }, + "addCardMenu": { + "message": "Přidat kartu" + }, + "addIdentityMenu": { + "message": "Přidat identitu" + }, "unlockVaultMenu": { "message": "Odemknout Váš trezor" }, @@ -244,6 +268,9 @@ "length": { "message": "Délka" }, + "passwordMinLength": { + "message": "Minimální délka hesla" + }, "uppercase": { "message": "Velká písmena (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Heslo" }, + "totp": { + "message": "Tajný klíč autentizace" + }, "passphrase": { "message": "Heslová fráze" }, @@ -338,6 +368,12 @@ "other": { "message": "Ostatní" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Nastavte metodu odemknutí, abyste změnili časový limit Vašeho trezoru." + }, + "unlockMethodNeeded": { + "message": "Nastavit metodu odemknutí v Nastavení" + }, "rateExtension": { "message": "Ohodnotit rozšíření" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Zamknout nyní" }, + "lockAll": { + "message": "Zamknout vše" + }, "immediately": { "message": "Okamžitě" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Váš účet byl vytvořen! Můžete se přihlásit." }, + "youSuccessfullyLoggedIn": { + "message": "Byli jste úspěšně přihlášeni" + }, + "youMayCloseThisWindow": { + "message": "Nyní můžete toto okno zavřít" + }, "masterPassSent": { "message": "Poslali jsme Vám e-mail s nápovědou k hlavnímu heslu." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Vybrané přihlašovací údaje nelze na této stránce automaticky vyplnit. Zkopírujte a vložte své přihlašovací údaje ručně." }, + "totpCaptureError": { + "message": "Nelze naskenovat QR kód z aktuální webové stránky" + }, + "totpCaptureSuccess": { + "message": "Byl přidán autentizační klíč" + }, + "totpCapture": { + "message": "Naskenovat QR kód z aktuální webové stránky" + }, + "copyTOTP": { + "message": "Kopírovat autentizační klíč (TOTP)" + }, "loggedOut": { "message": "Odhlášení" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Zeptá se na uložení údajů, pokud nebyly v trezoru nalezeny." }, + "addLoginNotificationDescAlt": { + "message": "Požádá o přidání položky, pokud nebyla nalezena v trezoru. Platí pro všechny přihlášené účty." + }, "showCardsCurrentTab": { "message": "Zobrazit platební karty na obrazovce Karta" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Zeptat se na aktualizaci hesla pro přihlášení, pokud je na webové stránce zjištěno použití jiného hesla." }, + "changedPasswordNotificationDescAlt": { + "message": "Vyžádá aktualizaci hesla k přihlášení, pokud je na webu zjištěna změna. Platí pro všechny přihlášené účty." + }, + "enableUsePasskeys": { + "message": "Zeptat se na uložení a použití přístupových hesel" + }, + "usePasskeysDesc": { + "message": "Zeptá se na uložení nového hesla nebo se přihlásí pomocí přístupových hesel uložených ve Vašem trezoru. Platí pro všechny přihlášené účty." + }, "notificationChangeDesc": { "message": "Chcete aktualizovat toto heslo v Bitwardenu?" }, "notificationChangeSave": { "message": "Aktualizovat" }, + "notificationUnlockDesc": { + "message": "Pro dokončení požadavku na automatické vyplnění odemkněte Váš trezor na Bitwardenu." + }, + "notificationUnlock": { + "message": "Odemknout" + }, "enableContextMenuItem": { "message": "Zobrazit volby v kontextovém menu" }, "contextMenuItemDesc": { - "message": "Použijte pravé tlačítko pro přístup k vytvoření hesla a odpovídajícímu přihlášení pro tuto stránku. " + "message": "Použijte pravé tlačítko pro přístup k vytvoření hesla a odpovídajícímu přihlášení pro tuto stránku." + }, + "contextMenuItemDescAlt": { + "message": "Použije pravé tlačítko pro přístup k vytvoření hesla a odpovídajícímu přihlášení pro tuto stránku. Platí pro všechny přihlášené účty." }, "defaultUriMatchDetection": { "message": "Výchozí zjišťování shody URI", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Změní barevný motiv aplikace." }, + "themeDescAlt": { + "message": "Změní barevný motiv aplikace. Platí pro všechny přihlášené účty." + }, "dark": { "message": "Tmavý", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Funkce je nedostupná" }, - "updateKey": { - "message": "Dokud neaktualizujete svůj šifrovací klíč, nemůžete tuto funkci použít." + "encryptionKeyMigrationRequired": { + "message": "Vyžaduje se migrace šifrovacího klíče. Pro aktualizaci šifrovacího klíče se přihlaste přes webový trezor." }, "premiumMembership": { "message": "Prémiové členství" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB šifrovaného úložiště pro přílohy." }, - "ppremiumSignUpTwoStep": { - "message": "Další možnosti dvoufázového přihlášení, jako je například YubiKey, FIDO U2F a Duo." + "premiumSignUpTwoStepOptions": { + "message": "Volby proprietálních dvoufázových přihlášení jako je YubiKey a Duo." }, "ppremiumSignUpReports": { "message": "Reporty o hygieně Vašich hesel, zdraví účtu a narušeních bezpečnosti." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "URL adresy vlastního prostředí byly uloženy" }, + "showAutoFillMenuOnFormFields": { + "message": "Zobrazit menu automatického vyplňování v polích formuláře", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Použije se na všechny přihlášené účty." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Abyste se vyhnuli konfliktům, vypněte v nastavení Vašeho prohlížeče zabudovaný správce hesel." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Upravit nastavení prohlížeče" + }, + "autofillOverlayVisibilityOff": { + "message": "VYP.", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Když je vybráno pole (zaměřeno)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Když je vybrána ikona automatického vyplňování", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Automaticky vyplnit údaje při načtení stránky" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Zobrazí rozeznatelný obrázek vedle každého přihlášení." }, + "faviconDescAlt": { + "message": "Zobrazí rozeznatelný obrázek vedle každého přihlášení. Platí pro všechny přihlášené účty." + }, "enableBadgeCounter": { "message": "Zobrazovat počet uložených přihlašovacích údajů na stránce" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Neplatný PIN kód." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Příliš mnoho neplatných pokusů o zadání PINu. Odhlášeno." + }, "unlockWithBiometrics": { "message": "Odemknout pomocí biometrie" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Obnovit položku" }, - "restoreItemConfirmation": { - "message": "Opravdu chcete tuto položku obnovit?" - }, "restoredItem": { "message": "Položka byla obnovena" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Biometrie v prohlížeči není na tomto zařízení podporována." }, + "biometricsFailedTitle": { + "message": "Biometrika selhala" + }, + "biometricsFailedDesc": { + "message": "Biometriku nelze dokončit, zvažte použití hlavního hesla nebo odhlášení. Pokud to přetrvává, kontaktujte podporu Bitwardenu." + }, "nativeMessaginPermissionErrorTitle": { "message": "Oprávnění nebylo uděleno" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Zásady organizace ovlivňují možnosti vlastnictví." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Zásady organizace zablokovaly importování položek do Vašeho osobního trezoru." + }, "excludedDomains": { "message": "Vyloučené domény" }, "excludedDomainsDesc": { "message": "Bitwarden nebude žádat o uložení přihlašovacích údajů pro tyto domény. Aby se změny projevily, musíte stránku obnovit." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden nebude žádat o uložení přihlašovacích údajů pro tyto domény pro všechny přihlášené účty. Aby se změny projevily, musíte stránku obnovit." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ není platná doména", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Vyberte složku..." }, - "ssoCompleteRegistration": { - "message": "Chcete-li dokončit přihlášení pomocí SSO, nastavte hlavní přístupové heslo k Vašemu trezoru." + "noFoldersFound": { + "message": "Nebyly nalezeny žádné složky", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Oprávnění Vaší organizace byla aktualizována. To vyžaduje nastavení hlavního hesla.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Vaše organizace vyžaduje nastavení hlavního hesla.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Je vyžadováno ověření", + "description": "Default title for the user verification dialog." }, "hours": { "message": "hodin" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exportování osobního trezoru" }, - "exportingPersonalVaultDescription": { - "message": "Budou exportovány jen osobní položky trezoru spojené s účtem $EMAIL$. Nebudou zahrnuty položky trezoru v organizaci.", + "exportingIndividualVaultDescription": { + "message": "Budou exportovány jen osobní položky trezoru spojené s $EMAIL$. Položky trezoru organizace nebudou zahrnuty. Budou exportovány jen informace o položkách trezoru a nebudou zahrnuty související přílohy.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Verze serveru" }, - "selfHosted": { - "message": "Vlastní hosting" + "selfHostedServer": { + "message": "vlastní hosting" }, "thirdParty": { "message": "Tretí strana" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Na Vaše zařízení bylo odesláno oznámení." }, - "logInInitiated": { + "loginInitiated": { "message": "Bylo zahájeno přihlášení" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Jak na automatické vyplňování" }, "autofillSelectInfoWithCommand": { - "message": "Vyberte položku z této stránky nebo použijte zkratku: $COMMAND$", + "message": "Vyberte položku z této obrazovky, použijte zkratku $COMMAND$ nebo prozkoumejte další volby v nastavení.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Vyberte položku z této stránky nebo nastavte zkratku v nastavení." + "message": "Vyberte položku z této obrazovky nebo prozkoumejte další volby v nastavení." }, "gotIt": { "message": "Rozumím" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Přihlašování na" }, "opensInANewWindow": { "message": "Otevře se v novém okně" }, + "deviceApprovalRequired": { + "message": "Vyžaduje se schválení zařízení. Vyberte možnost schválení níže:" + }, + "rememberThisDevice": { + "message": "Zapamatovat toto zařízení" + }, + "uncheckIfPublicDevice": { + "message": "Odškrtněte, pokud používáte veřejné zařízení" + }, + "approveFromYourOtherDevice": { + "message": "Schválit s mým dalším zařízením" + }, + "requestAdminApproval": { + "message": "Žádost o schválení správcem" + }, + "approveWithMasterPassword": { + "message": "Schválit hlavním heslem" + }, + "ssoIdentifierRequired": { + "message": "Je vyžadován SSO identifikátor organizace." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Přístup byl odepřen. Nemáte oprávnění k zobrazení této stránky." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Zobrazení" + }, + "accountSuccessfullyCreated": { + "message": "Účet byl úspěšně vytvořen!" + }, + "adminApprovalRequested": { + "message": "Bylo vyžádáno schválení správcem" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Váš požadavek byl odeslán Vašemu správci." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Po schválení budete upozorněni." + }, + "troubleLoggingIn": { + "message": "Potíže s přihlášením?" + }, + "loginApproved": { + "message": "Přihlášení bylo schváleno" + }, + "userEmailMissing": { + "message": "Chybí e-mail uživatele" + }, + "deviceTrusted": { + "message": "Zařízení zařazeno mezi důvěryhodné" + }, + "inputRequired": { + "message": "Je vyžadován vstup." + }, + "required": { + "message": "vyžadováno" + }, + "search": { + "message": "Hledat" + }, + "inputMinLength": { + "message": "Vstup musí mít alespoň $COUNT$ znaků.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Vstup nesmí být delší než $COUNT$ znaků.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Následující znaky nejsou povoleny: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Vstupní hodnota musí být alespoň $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Vstupní hodnota nesmí přesáhnout $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 nebo více e-mailů jsou neplatné" + }, + "inputTrimValidator": { + "message": "Vstup nesmí obsahovat jen mezery.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Vstup není e-mailová adresa." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ polí výše vyžaduje Vaši pozornost.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Vybrat --" + }, + "multiSelectPlaceholder": { + "message": "-- Pište pro filtrování --" + }, + "multiSelectLoading": { + "message": "Načítání voleb..." + }, + "multiSelectNotFound": { + "message": "Nebyly nalezeny žádné položky" + }, + "multiSelectClearAll": { + "message": "Vymazat vše" + }, + "plusNMore": { + "message": "+ $QUANTITY$ dalších", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Podmenu" + }, + "toggleCollapse": { + "message": "Přepnout sbalení", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Importovat data do Bitwardenu?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Chránit Vaše data LastPass a importovat do Bitwardenu?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Uložit jako nešifrovaný soubor", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importovat do Bitwardenu", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importování...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data byla úspěšně importována!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Chyba při importu. Podrobnosti naleznete v konzoli.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Při importu došlo k chybě sítě.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Doména aliasu" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Položky se žádostí o změnu hlavního hesla nemohou být automaticky vyplněny při načítání stránky. Automatické vyplnění při načítání stránky je vypnuto.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Automatické vyplnění při načítání stránky bylo nastaveno na výchozí nastavení.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Pro úpravu tohoto pole vypněte požadavek na hlavní heslo", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Přeskočit na obsah" + }, + "bitwardenOverlayButton": { + "message": "Tlačítko nabídky automatického vyplňování Bitwardenu", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Přepnout nabídku automatického vyplňování Bitwardenu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Nabídka automatického vyplňování Bitwardenu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Odemkněte Váš účet pro zobrazení odpovídajících přihlašovacích údajů", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Odemknout účet", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Vyplnit přihlašovací údaje pro", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Částečné uživatelské jméno", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Žádné položky k zobrazení", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Nová položka", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Přidat novou položku trezoru", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Nabídka automatického vyplňování Bitwardenu. Pro výběr stiskněte šipku dolů.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Zapnout" + }, + "ignore": { + "message": "Ignorovat" + }, + "importData": { + "message": "Importovat data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Chyba importu" + }, + "importErrorDesc": { + "message": "Vyskytl se problém s daty, které jste se pokusili importovat. Vyřešte níže uvedené chyby ve zdrojovém souboru a zkuste to znovu." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Vyřešte chyby níže a zkuste to znovu." + }, + "description": { + "message": "Popis" + }, + "importSuccess": { + "message": "Data byla úspěšně importována" + }, + "importSuccessNumberOfItems": { + "message": "Bylo importováno celkem $AMOUNT$ položek.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Zkusit znovu" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Pro tuto akci je vyžadováno ověření. Nastavte PIN kód pro pokračování." + }, + "setPin": { + "message": "Nastavit PIN" + }, + "verifyWithBiometrics": { + "message": "Ověřit pomocí biometrie" + }, + "awaitingConfirmation": { + "message": "Čeká na potvrzení" + }, + "couldNotCompleteBiometrics": { + "message": "Nelze dokončit biometrii." + }, + "needADifferentMethod": { + "message": "Potřebujete jinou metodu?" + }, + "useMasterPassword": { + "message": "Použít hlavní heslo" + }, + "usePin": { + "message": "Použít PIN" + }, + "useBiometrics": { + "message": "Použít biometrii" + }, + "enterVerificationCodeSentToEmail": { + "message": "Zadejte ověřovací kód, který byl odeslán do Vašeho e-mailu." + }, + "resendCode": { + "message": "Znovu odeslat kód" + }, + "total": { + "message": "Celkem" + }, + "importWarning": { + "message": "Importujete data do organizace $ORGANIZATION$. Vaše data mohou být sdílena s členy této organizace. Chcete pokračovat?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Spusťte DUO a pro dokončení přihlášení postupujte podle kroků." + }, + "duoRequiredForAccount": { + "message": "Pro Váš účet je vyžadováno dvoufázové přihlášení DUO." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Pro dokončení přihlášení použijte vyskakovací okno rozšíření." + }, + "popoutExtension": { + "message": "Zobrazit okno s doplňkem" + }, + "launchDuo": { + "message": "Spustit DUO" + }, + "importFormatError": { + "message": "Data nemají správný formát. Zkontrolujte importovaný soubor a zkuste to znovu." + }, + "importNothingError": { + "message": "Nebylo nic importováno." + }, + "importEncKeyError": { + "message": "Chyba při dešifrování exportovaného souboru. Váš šifrovací klíč se neshoduje s klíčem použitým během exportu dat." + }, + "invalidFilePassword": { + "message": "Neplatné heslo souboru, použijte heslo zadané při vytvoření souboru exportu." + }, + "importDestination": { + "message": "Cíl importu" + }, + "learnAboutImportOptions": { + "message": "Více o volbách importu" + }, + "selectImportFolder": { + "message": "Zvolte složku" + }, + "selectImportCollection": { + "message": "Zvolte kolekci" + }, + "importTargetHint": { + "message": "Pokud chcete obsah importovaného souboru přesunout do složky $DESTINATION$, vyberte tuto volbu", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Soubor obsahuje nepřiřazené položky." + }, + "selectFormat": { + "message": "Vyberte formát importovaného souboru" + }, + "selectImportFile": { + "message": "Vyberte soubor pro import" + }, + "chooseFile": { + "message": "Vybrat soubor" + }, + "noFileChosen": { + "message": "Není vybrán žádný soubor" + }, + "orCopyPasteFileContents": { + "message": "nebo zkopírujte a vložte obsah souboru" + }, + "instructionsFor": { + "message": "Instrukce pro $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Potvrdit import trezoru" + }, + "confirmVaultImportDesc": { + "message": "Tento soubor je chráněn heslem. Zadejte heslo souboru pro import dat." + }, + "confirmFilePassword": { + "message": "Potvrzení hesla souboru" + }, + "typePasskey": { + "message": "Přístupový klíč" + }, + "passkeyNotCopied": { + "message": "Přístupový klíč nebude zkopírován" + }, + "passkeyNotCopiedAlert": { + "message": "Přístupový klíč nebude zkopírován do duplikované položky. Chete pokračovat v duplikování této položky?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Ověření vyžadované iniciátorem webu. Tato funkce ještě není implementována pro účty bez hlavního hesla." + }, + "logInWithPasskey": { + "message": "Přihlásit se pomocí přístupového klíče?" + }, + "passkeyAlreadyExists": { + "message": "Přístupový klíč pro tuto aplikaci již existuje." + }, + "noPasskeysFoundForThisApplication": { + "message": "Pro tuto aplikaci nebyly nalezeny žádné přístupové klíče." + }, + "noMatchingPasskeyLogin": { + "message": "Pro tuto stránku nemáte žádné přihlašovací údaje." + }, + "confirm": { + "message": "Potvrdit" + }, + "savePasskey": { + "message": "Uložit přístupový klíč" + }, + "savePasskeyNewLogin": { + "message": "Uložit přístupový klíč jako nové přihlášení" + }, + "choosePasskey": { + "message": "Vyberte přihlášení pro uložení tohoto přístupového klíče" + }, + "passkeyItem": { + "message": "Položka přístupového klíče" + }, + "overwritePasskey": { + "message": "Přepsat přístupový klíč?" + }, + "overwritePasskeyAlert": { + "message": "Tato položka již obsahuje přístupový klíč. Jste si jisti, že chcete přepsat aktuální přístupový klíč?" + }, + "featureNotSupported": { + "message": "Funkce nyní není podporována" + }, + "yourPasskeyIsLocked": { + "message": "Pro použití přístupového klíče je vyžadováno ověření. Chcete-li pokračovat, ověřte svou identitu." + }, + "multifactorAuthenticationCancelled": { + "message": "Vícefázové ověření zrušeno" + }, + "noLastPassDataFound": { + "message": "Nebyla nalezena žádná data LastPass" + }, + "incorrectUsernameOrPassword": { + "message": "Nesprávné uživatelské jméno nebo heslo" + }, + "incorrectPassword": { + "message": "Nesprávné heslo" + }, + "incorrectCode": { + "message": "Nesprávný kód" + }, + "incorrectPin": { + "message": "Nesprávný PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Vícefaktorové ověření se nezdařilo" + }, + "includeSharedFolders": { + "message": "Zahrnout sdílené složky" + }, + "lastPassEmail": { + "message": "E-mail LastPass" + }, + "importingYourAccount": { + "message": "Importování Vašeho účtu..." + }, + "lastPassMFARequired": { + "message": "Je vyžadováno vícefaktorové ověření LastPass" + }, + "lastPassMFADesc": { + "message": "Zadejte jednorázový kód z Vaší ověřovací aplikace" + }, + "lastPassOOBDesc": { + "message": "Schvalte žádost o přihlášení ve Vaší ověřovací aplikaci nebo zadejte jednorázové heslo." + }, + "passcode": { + "message": "Heslo" + }, + "lastPassMasterPassword": { + "message": "Hlavní heslo LastPass" + }, + "lastPassAuthRequired": { + "message": "Je vyžadováno ověření LastPass" + }, + "awaitingSSO": { + "message": "Čeká se na ověření SSO" + }, + "awaitingSSODesc": { + "message": "Pokračujte v přihlášení pomocí přihlašovacích údajů Vaší společnosti." + }, + "seeDetailedInstructions": { + "message": "Podívejte se na podrobné pokyny na našem webu s nápovědou na", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Importovat přímo z LastPass" + }, + "importFromCSV": { + "message": "Importovat z CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Zkuste to znovu nebo vyhledejte e-mail od LastPass pro ověření, že jste to Vy." + }, + "collection": { + "message": "Kolekce" + }, + "lastPassYubikeyDesc": { + "message": "Vložte YubiKey spojený s Vaším účtem LastPass do USB portu Vašeho počítače a stiskněte jeho tlačítko." + }, + "switchAccount": { + "message": "Přepnout účet" + }, + "switchAccounts": { + "message": "Přepnout účty" + }, + "switchToAccount": { + "message": "Přepnout na účet" + }, + "activeAccount": { + "message": "Aktivní účet" + }, + "availableAccounts": { + "message": "Dostupné účty" + }, + "accountLimitReached": { + "message": "Byl dosažen limit účtu. Pro přidání dalšího účtu se odhlaste." + }, + "active": { + "message": "aktivní" + }, + "locked": { + "message": "uzamčeno" + }, + "unlocked": { + "message": "odemčeno" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hostováno na" + }, + "useDeviceOrHardwareKey": { + "message": "Použijte Vaše zařízení nebo hardwarový klíč" + }, + "justOnce": { + "message": "Jen jednou" + }, + "alwaysForThisSite": { + "message": "Vždy pro tuto stránku" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ přidán do vyloučených domén.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Společné formáty", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Nastavit Bitwarden jako výchozí správce hesel?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignorování této volby může způsobit konflikty mezi nabídkou automatického vyplňování Bitwardenu a Vaším prohlížečem.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Nastavit Bitwarden jako výchozí správce hesel", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Bitwarden nelze nastavit jako výchozí správce hesel", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Pro nastavení jako výchozí správce hesel musíte Bitwardenu udělit oprávnění zabezpečení v prohlížeči.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Nastavit jako výchozí", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Pověření byla úspěšně uložena!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Pověření byla úspěšně aktualizována!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Chyba při ukládání přihlašovacích údajů. Podrobnosti naleznete v konzoli.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Odebrat přístupový klíč" + }, + "passkeyRemoved": { + "message": "Přístupový klíč byl odebrán" + }, + "unassignedItemsBanner": { + "message": "Upozornění: Nepřiřazené položky organizace již nejsou viditelné ve Vašem zobrazení všech trezorů a jsou nyní přístupné jen v konzoli správce. Přiřaďte tyto položky do kolekce z konzole pro správce, aby byly viditelné." } } diff --git a/apps/browser/src/_locales/cy/messages.json b/apps/browser/src/_locales/cy/messages.json index 6a651cad43..79867bf7bf 100644 --- a/apps/browser/src/_locales/cy/messages.json +++ b/apps/browser/src/_locales/cy/messages.json @@ -7,7 +7,7 @@ "description": "Extension name, MUST be less than 40 characters (Safari restriction)" }, "extDesc": { - "message": "A secure and free password manager for all of your devices.", + "message": "Rheolydd cyfrineiriau diogel a rhad ac am ddim ar gyfer eich holl ddyfeisiau.", "description": "Extension description" }, "loginOrCreateNewAccount": { @@ -29,7 +29,7 @@ "message": "Cau" }, "submit": { - "message": "Submit" + "message": "Cyflwyno" }, "emailAddress": { "message": "Cyfeiriad ebost" @@ -74,7 +74,7 @@ "message": "Copïo cyfrinair" }, "copyNote": { - "message": "Copy note" + "message": "Copïo'r nodyn" }, "copyUri": { "message": "Copïo URI" @@ -91,6 +91,15 @@ "autoFill": { "message": "Llenwi'n awtomatig" }, + "autoFillLogin": { + "message": "Llenwi manylion mewngofnodi" + }, + "autoFillCard": { + "message": "Llenwi manylion cerdyn" + }, + "autoFillIdentity": { + "message": "Llenwi hunaniaeth" + }, "generatePasswordCopied": { "message": "Cynhyrchu cyfrinair (wedi'i gopïo)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins" }, + "noCards": { + "message": "Dim cardiau" + }, + "noIdentities": { + "message": "Dim eitemau hunaniaeth" + }, + "addLoginMenu": { + "message": "Ychwanegu manylion mewngofnodi" + }, + "addCardMenu": { + "message": "Ychwanegu cerdyn" + }, + "addIdentityMenu": { + "message": "Ychwanegu eitem hunaniaeth" + }, "unlockVaultMenu": { "message": "Datgloi'ch cell" }, @@ -122,13 +146,13 @@ "message": "Enter your account email address to receive your master password hint." }, "getMasterPasswordHint": { - "message": "Get master password hint" + "message": "Anfon awgrym o'ch prif gyfrinair" }, "continue": { "message": "Parhau" }, "sendVerificationCode": { - "message": "Send a verification code to your email" + "message": "Anfon cod dilysu i'ch cyfeiriad ebost" }, "sendCode": { "message": "Anfod cod" @@ -146,18 +170,18 @@ "message": "Cyfrif" }, "changeMasterPassword": { - "message": "Change master password" + "message": "Newid y prif gyfrinair" }, "fingerprintPhrase": { - "message": "Fingerprint phrase", + "message": "Ymadrodd unigryw", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "yourAccountsFingerprint": { - "message": "Your account's fingerprint phrase", + "message": "Ymadrodd unigryw eich cyfrif", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "twoStepLogin": { - "message": "Two-step login" + "message": "Mewngofnodi dau agm" }, "logOut": { "message": "Allgofnodi" @@ -227,10 +251,10 @@ "message": "Cell we Bitwarden" }, "importItems": { - "message": "Import items" + "message": "Mewnforio eitemau" }, "select": { - "message": "Select" + "message": "Dewis" }, "generatePassword": { "message": "Cynhyrchu cyfrinair" @@ -244,6 +268,9 @@ "length": { "message": "Hyd" }, + "passwordMinLength": { + "message": "Hyd lleiaf cyfrineiriau" + }, "uppercase": { "message": "Priflythrennau (A-Z)" }, @@ -270,13 +297,13 @@ "message": "Cynnwys rhif" }, "minNumbers": { - "message": "Minimum numbers" + "message": "Isafswm rhifau" }, "minSpecial": { - "message": "Minimum special" + "message": "Isafswm nodau arbennig" }, "avoidAmbChar": { - "message": "Avoid ambiguous characters" + "message": "Osgoi nodau amwys" }, "searchVault": { "message": "Chwilio'r gell" @@ -291,7 +318,7 @@ "message": "Does dim eitemau i'w rhestru." }, "itemInformation": { - "message": "Item information" + "message": "Gwybodaeth am yr eitem" }, "username": { "message": "Enw defnyddiwr" @@ -299,6 +326,9 @@ "password": { "message": "Cyfrinair" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Cyfrinymadrodd" }, @@ -312,16 +342,16 @@ "message": "Nodyn" }, "editItem": { - "message": "Edit item" + "message": "Golygu'r eitem" }, "folder": { "message": "Ffolder" }, "deleteItem": { - "message": "Delete item" + "message": "Dileu'r eitem" }, "viewItem": { - "message": "View item" + "message": "Gweld yr eitem" }, "launch": { "message": "Lansio" @@ -330,34 +360,40 @@ "message": "Gwefan" }, "toggleVisibility": { - "message": "Toggle visibility" + "message": "Toglo gwelededd" }, "manage": { "message": "Rheoli" }, "other": { - "message": "Other" + "message": "Gosodiadau eraill" + }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" }, "rateExtension": { - "message": "Rate the extension" + "message": "Rhoi eich barn ar yr estyniad" }, "rateExtensionDesc": { - "message": "Please consider helping us out with a good review!" + "message": "Ystyriwch ein helpu ni gydag adolygiad da!" }, "browserNotSupportClipboard": { - "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." + "message": "Dyw eich porwr gwe ddim yn cefnogi copïo drwy'r clipfwrdd yn hawdd. Copïwch â llaw yn lle." }, "verifyIdentity": { "message": "Gwirio'ch hunaniaeth" }, "yourVaultIsLocked": { - "message": "Mae eich cell dan glo. Gwiriwch eich hunaniaeth i barhau." + "message": "Mae eich cell ar glo. Gwiriwch eich hunaniaeth i barhau." }, "unlock": { "message": "Datgloi" }, "loggedInAsOn": { - "message": "Logged in as $EMAIL$ on $HOSTNAME$.", + "message": "Wedi mewngofnodi gyda $EMAIL$ ar $HOSTNAME$.", "placeholders": { "email": { "content": "$1", @@ -376,7 +412,10 @@ "message": "Cloi'r gell" }, "lockNow": { - "message": "Lock now" + "message": "Cloi nawr" + }, + "lockAll": { + "message": "Cloi'r cwbl" }, "immediately": { "message": "ar unwaith" @@ -415,16 +454,16 @@ "message": "On system lock" }, "onRestart": { - "message": "On browser restart" + "message": "wrth ailgychwyn y porwr" }, "never": { - "message": "byth" + "message": "Byth" }, "security": { "message": "Diogelwch" }, "errorOccurred": { - "message": "An error has occurred" + "message": "Bu gwall" }, "emailRequired": { "message": "Mae angen cyfeiriad ebost." @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Mae eich cyfrif newydd wedi cael ei greu! Gallwch bellach fewngofnodi." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "Rydym ni wedi anfon ebost atoch gydag awgrym ar gyfer eich prif gyfrinair." }, @@ -464,7 +509,7 @@ "message": "Cod dilysu annilys" }, "valueCopied": { - "message": "$VALUE$ copied", + "message": "$VALUE$ wedi'i gopïo", "description": "Value has been copied to the clipboard.", "placeholders": { "value": { @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -498,7 +555,7 @@ "message": "Mae angen enw." }, "addedFolder": { - "message": "Folder added" + "message": "Ffolder wedi'i hychwanegu" }, "changeMasterPass": { "message": "Change master password" @@ -510,13 +567,13 @@ "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be set up on the bitwarden.com web vault. Do you want to visit the website now?" }, "editedFolder": { - "message": "Folder saved" + "message": "Ffolder wedi'i chadw" }, "deleteFolderConfirmation": { "message": "Are you sure you want to delete this folder?" }, "deletedFolder": { - "message": "Folder deleted" + "message": "Ffolder wedi'i dileu" }, "gettingStartedTutorial": { "message": "Getting started tutorial" @@ -525,13 +582,13 @@ "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." }, "syncingComplete": { - "message": "Syncing complete" + "message": "Cysoni wedi'i gwblhau" }, "syncingFailed": { - "message": "Syncing failed" + "message": "Methwyd â chysoni" }, "passwordCopied": { - "message": "Password copied" + "message": "Cyfrinair wedi'i gopïo" }, "uri": { "message": "URI" @@ -550,10 +607,10 @@ "message": "URI newydd" }, "addedItem": { - "message": "Item added" + "message": "Eitem wedi'i hychwanegu" }, "editedItem": { - "message": "Item saved" + "message": "Eitem wedi'i chadw" }, "deleteItemConfirmation": { "message": "Ydych chi wir eisiau anfon i'r sbwriel?" @@ -562,25 +619,25 @@ "message": "Anfonwyd yr eitem i'r sbwriel" }, "overwritePassword": { - "message": "Overwrite password" + "message": "Trosysgrifo'r cyfrinair" }, "overwritePasswordConfirmation": { "message": "Are you sure you want to overwrite the current password?" }, "overwriteUsername": { - "message": "Overwrite username" + "message": "Trosysgrifo'r enw defnyddiwr" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" }, "searchFolder": { - "message": "Search folder" + "message": "Chwilio drwy'r ffolder" }, "searchCollection": { - "message": "Search collection" + "message": "Chwilio drwy'r casgliad" }, "searchType": { - "message": "Search type" + "message": "Chwilio drwy'r math hwn" }, "noneFolder": { "message": "Dim ffolder", @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Ask to add an item if one isn't found in your vault." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -605,7 +665,7 @@ "message": "List identity items on the Tab page for easy auto-fill." }, "clearClipboard": { - "message": "Clear clipboard", + "message": "Clirio'r clipfwrdd", "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "clearClipboardDesc": { @@ -613,7 +673,7 @@ "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "notificationAddDesc": { - "message": "Should Bitwarden remember this password for you?" + "message": "A ddylai Bitwarden gofio'r cyfrinair hwn i chi?" }, "notificationAddSave": { "message": "Cadw" @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, "notificationChangeSave": { "message": "Diweddaru" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Datgloi" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "Default URI match detection", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Tywyll", "description": "Dark color" @@ -690,7 +771,7 @@ "message": "Shared" }, "learnOrg": { - "message": "Learn about organizations" + "message": "Dysgu am sefydliadau" }, "learnOrgConfirmation": { "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" @@ -702,7 +783,7 @@ "message": "Rhannu" }, "movedItemToOrg": { - "message": "$ITEMNAME$ moved to $ORGNAME$", + "message": "Symudwyd $ITEMNAME$ i $ORGNAME$", "placeholders": { "itemname": { "content": "$1", @@ -742,10 +823,10 @@ "message": "Attachment deleted" }, "newAttachment": { - "message": "Add new attachment" + "message": "Ychwanegu atodiad newydd" }, "noAttachments": { - "message": "No attachments." + "message": "Dim atodiadau." }, "attachmentSaved": { "message": "Attachment saved" @@ -754,7 +835,7 @@ "message": "Ffeil" }, "selectFile": { - "message": "Select a file" + "message": "Dewis ffeil" }, "maxFileSize": { "message": "Maximum file size is 500 MB." @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Aelodaeth uwch" @@ -778,40 +859,40 @@ "message": "Adnewyddu'ch aelodaeth" }, "premiumNotCurrentMember": { - "message": "You are not currently a Premium member." + "message": "Does gennych chi ddim aeloaeth uwch ar hyn o bryd." }, "premiumSignUpAndGet": { - "message": "Sign up for a Premium membership and get:" + "message": "Cofrestrwch ar gyfer aelodaeth uwch i gael:" }, "ppremiumSignUpStorage": { - "message": "1 GB encrypted storage for file attachments." + "message": "Storfa 1GB wedi'i hamgryptio ar gyfer atodiadau ffeiliau." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Dewisiadau mewngofnodi dau gam perchenogol megis YubiKey a Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." }, "ppremiumSignUpTotp": { - "message": "TOTP verification code (2FA) generator for logins in your vault." + "message": "Cynhyrchydd codau dilysu TOTP (2FA) ar gyfer manylion mewngofnodi yn eich cell." }, "ppremiumSignUpSupport": { - "message": "Priority customer support." + "message": "Cymorth wedi'i flaenoriaethu." }, "ppremiumSignUpFuture": { "message": "All future Premium features. More coming soon!" }, "premiumPurchase": { - "message": "Purchase Premium" + "message": "Prynu aelodaeth uwch" }, "premiumPurchaseAlert": { "message": "You can purchase Premium membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumCurrentMember": { - "message": "You are a Premium member!" + "message": "Mae gennych aelodaeth uwch!" }, "premiumCurrentMemberThanks": { - "message": "Thank you for supporting Bitwarden." + "message": "Diolch am gefnogi Bitwarden." }, "premiumPrice": { "message": "Hyn oll am $PRICE$ y flwyddyn!", @@ -835,10 +916,10 @@ "message": "Ask for biometrics on launch" }, "premiumRequired": { - "message": "Premium required" + "message": "Mae angen aelodaeth uwch" }, "premiumRequiredDesc": { - "message": "A Premium membership is required to use this feature." + "message": "Mae angen aelodaeth uwch i ddefnyddio'r nodwedd hon." }, "enterVerificationCodeApp": { "message": "Enter the 6 digit verification code from your authenticator app." @@ -853,7 +934,7 @@ } }, "verificationCodeEmailSent": { - "message": "Verification email sent to $EMAIL$.", + "message": "Anfonwyd ebost dilysu i $EMAIL$.", "placeholders": { "email": { "content": "$1", @@ -865,13 +946,13 @@ "message": "Fy nghofio i" }, "sendVerificationCodeEmailAgain": { - "message": "Send verification code email again" + "message": "Anfon ebost â chod dilysu eto" }, "useAnotherTwoStepMethod": { "message": "Use another two-step login method" }, "insertYubiKey": { - "message": "Insert your YubiKey into your computer's USB port, then touch its button." + "message": "Rhowch eich YubiKey i mewn i borth USB eich cyfrifiadur, yna gwasgwch y botwm." }, "insertU2f": { "message": "Insert your security key into your computer's USB port. If it has a button, touch it." @@ -895,7 +976,7 @@ "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." }, "twoStepOptions": { - "message": "Two-step login options" + "message": "Dewisiadau mewngofnodi dau gam" }, "recoveryCodeDesc": { "message": "Lost access to all of your two-factor providers? Use your recovery code to turn off all two-factor providers from your account." @@ -904,7 +985,7 @@ "message": "Cod adfer" }, "authenticatorAppTitle": { - "message": "Authenticator app" + "message": "Ap dilysu" }, "authenticatorAppDesc": { "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Diffoddwch osodiadau rheolydd cyfrineiriau eich porwr er mwyn osgoi gwrthdaro." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" }, @@ -1024,7 +1130,7 @@ "message": "Copy value" }, "value": { - "message": "Value" + "message": "Gwerth" }, "newCustomField": { "message": "Maes addasedig newydd" @@ -1039,7 +1145,7 @@ "message": "Hidden" }, "cfTypeBoolean": { - "message": "Boolean" + "message": "Gwerth Boole" }, "cfTypeLinked": { "message": "Linked", @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Dangos delwedd adnabyddadwy wrth ymyl pob eitem." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1125,7 +1234,7 @@ "message": "Cod diogelwch" }, "ex": { - "message": "ex." + "message": "engh." }, "title": { "message": "Teitl" @@ -1221,7 +1330,7 @@ "message": "Hunaniaeth" }, "passwordHistory": { - "message": "Password history" + "message": "Hanes cyfrineiriau" }, "back": { "message": "Yn ôl" @@ -1236,7 +1345,7 @@ "message": "Syumd i ffenestr newydd" }, "refresh": { - "message": "Refresh" + "message": "Adnewyddu" }, "cards": { "message": "Cardiau" @@ -1282,17 +1391,17 @@ "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." }, "exact": { - "message": "Exact" + "message": "Union gywir" }, "startsWith": { - "message": "Starts with" + "message": "Yn dechrau â" }, "regEx": { - "message": "Regular expression", + "message": "Mynegiant rheolaidd", "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Match detection", + "message": "Cymharu URIs", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { @@ -1315,7 +1424,7 @@ "description": "An entity of multiple related people (ex. a team or business organization)." }, "types": { - "message": "Types" + "message": "Mathau" }, "allItems": { "message": "Pob eitem" @@ -1338,7 +1447,7 @@ "description": "ex. Date this item was created" }, "datePasswordUpdated": { - "message": "Password updated", + "message": "Cyfrinair wedi'i ddiweddaru", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1390,8 +1499,11 @@ "invalidPin": { "message": "Cod PIN annilys." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { - "message": "Unlock with biometrics" + "message": "Datgloi â biometreg" }, "awaitDesktop": { "message": "Awaiting confirmation from desktop" @@ -1418,7 +1530,7 @@ "message": "Vault timeout action" }, "lock": { - "message": "Lock", + "message": "Cloi", "description": "Verb form: to make secure or inaccesible by" }, "trash": { @@ -1429,20 +1541,17 @@ "message": "Chwilio drwy'r sbwriel" }, "permanentlyDeleteItem": { - "message": "Permanently delete item" + "message": "Dileu'r eitem yn barhaol" }, "permanentlyDeleteItemConfirmation": { "message": "Are you sure you want to permanently delete this item?" }, "permanentlyDeletedItem": { - "message": "Item permanently deleted" + "message": "Eitem wedi'i dileu'n barhaol" }, "restoreItem": { "message": "Adfer yr eitem" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Item restored" }, @@ -1453,7 +1562,7 @@ "message": "Timeout action confirmation" }, "autoFillAndSave": { - "message": "Auto-fill and save" + "message": "Llenwi'n awtomatig a chadw" }, "autoFillSuccessAndSavedUri": { "message": "Item auto-filled and URI saved" @@ -1540,7 +1649,7 @@ "message": "Terms of Service and Privacy Policy have not been acknowledged." }, "termsOfService": { - "message": "Terms of Service" + "message": "Telerau gwasanaeth" }, "privacyPolicy": { "message": "Polisi preifatrwydd" @@ -1555,7 +1664,7 @@ "message": "Desktop sync verification" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Gwiriwch fod y rhaglen bwrdd gwaith yn dangos yr ymadrodd hwn: " }, "desktopIntegrationDisabledTitle": { "message": "Browser integration is not set up" @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Parthau wedi'u heithrio" }, "excludedDomainsDesc": { "message": "Fydd Bitwarden ddim yn gofyn i gadw manylion mewngofnodi'r parthau hyn. Rhaid i chi ail-lwytho'r dudalen i newidiadau ddod i rym." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "Dyw $DOMAIN$ ddim yn barth dilys", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1659,7 +1780,7 @@ "description": "This text will be displayed after a Send has been accessed the maximum amount of times." }, "expired": { - "message": "Expired" + "message": "Wedi dod i ben" }, "pendingDeletion": { "message": "Pending deletion" @@ -1732,10 +1853,10 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "oneDay": { - "message": "1 day" + "message": "1 diwrnod" }, "days": { - "message": "$DAYS$ days", + "message": "$DAYS$ o ddyddiau", "placeholders": { "days": { "content": "$1", @@ -1784,7 +1905,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New password" + "message": "Cyfrinair newydd" }, "sendDisabled": { "message": "Send removed", @@ -1819,7 +1940,7 @@ "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" }, "sendFirefoxCustomDatePopoutMessage2": { - "message": "click here", + "message": "cliciwch yma", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" }, "sendFirefoxCustomDatePopoutMessage3": { @@ -1842,13 +1963,13 @@ "message": "There was an error saving your deletion and expiration dates." }, "hideEmail": { - "message": "Hide my email address from recipients." + "message": "Cuddio fy nghyfeiriad ebost rhag derbynwyr." }, "sendOptionsPolicyInEffect": { "message": "One or more organization policies are affecting your Send options." }, "passwordPrompt": { - "message": "Master password re-prompt" + "message": "Ailofyn am y prif gyfrinair" }, "passwordConfirmation": { "message": "Master password confirmation" @@ -1863,10 +1984,10 @@ "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, "updatedMasterPassword": { - "message": "Updated master password" + "message": "Diweddarwyd y prif gyfrinair" }, "updateMasterPassword": { - "message": "Update master password" + "message": "Diweddaru'r prif gyfrinair" }, "updateMasterPasswordWarning": { "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Dewis ffolder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -1995,10 +2129,10 @@ "message": "Regenerate username" }, "generateUsername": { - "message": "Generate username" + "message": "Cynhyrchu enw defnyddiwr" }, "usernameType": { - "message": "Username type" + "message": "Math o enw defnyddiwr" }, "plusAddressedEmail": { "message": "Plus addressed email", @@ -2014,10 +2148,10 @@ "message": "Use your domain's configured catch-all inbox." }, "random": { - "message": "Random" + "message": "Hap" }, "randomWord": { - "message": "Random word" + "message": "Gair ar hap" }, "websiteName": { "message": "Website name" @@ -2060,7 +2194,7 @@ "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "loggingInTo": { - "message": "Logging in to $DOMAIN$", + "message": "Yn mewngofnodi i $DOMAIN$", "placeholders": { "domain": { "content": "$1", @@ -2072,16 +2206,16 @@ "message": "Settings have been edited" }, "environmentEditedClick": { - "message": "Click here" + "message": "Cliciwch yma" }, "environmentEditedReset": { "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server version" + "message": "Fersiwn y gweinydd" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2096,7 +2230,7 @@ } }, "lastSeenOn": { - "message": "last seen on: $DATE$", + "message": "gwelwyd ddiwethaf: $DATE$", "placeholders": { "date": { "content": "$1", @@ -2105,19 +2239,19 @@ } }, "loginWithMasterPassword": { - "message": "Log in with master password" + "message": "Mewngofnodi â'ch prif gyfrinair" }, "loggingInAs": { - "message": "Logging in as" + "message": "Yn mewngofnodi fel" }, "notYou": { - "message": "Not you?" + "message": "Nid chi?" }, "newAroundHere": { - "message": "New around here?" + "message": "Ydych chi'n newydd?" }, "rememberEmail": { - "message": "Remember email" + "message": "Cofio'r ebost" }, "loginWithDevice": { "message": "Mewngofnodi â dyfais" @@ -2126,10 +2260,10 @@ "message": "Log in with device must be set up in the settings of the Bitwarden app. Need another option?" }, "fingerprintPhraseHeader": { - "message": "Fingerprint phrase" + "message": "Ymadrodd unigryw" }, "fingerprintMatchInfo": { - "message": "Please make sure your vault is unlocked and the Fingerprint phrase matches on the other device." + "message": "Sicrhewch fod eich cell wedi'i datgloi a bod yr ymadrodd unigryw yn cyfateb i'r un ar y ddyfais arall." }, "resendNotification": { "message": "Resend notification" @@ -2140,32 +2274,32 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" }, "exposedMasterPasswordDesc": { - "message": "Password found in a data breach. Use a unique password to protect your account. Are you sure you want to use an exposed password?" + "message": "Cafodd y cyfrinair ei ganfod mewn achos o ddatgelu data. Defnyddiwch gyfrinair unigryw i ddiogelu eich cyfrif. Ydych chi wir eisiau defnyddio cyfrinair sydd wedi'i ddatgelu?" }, "weakAndExposedMasterPassword": { - "message": "Weak and Exposed Master Password" + "message": "Prif gyfrinair gwan ac wedi'i ddatgelu" }, "weakAndBreachedMasterPasswordDesc": { - "message": "Weak password identified and found in a data breach. Use a strong and unique password to protect your account. Are you sure you want to use this password?" + "message": "Cyfrinair gwan a gafodd ei ganfod mewn achos o ddatgelu data. Defnyddiwch gyfrinair cryf ac unigryw i ddiogelu eich cyfrif. Ydych chi wir eisiau defnyddio cyfrinair sydd wedi'i ddatgelu?" }, "checkForBreaches": { - "message": "Check known data breaches for this password" + "message": "Chwilio am achosion o ddatgelu data sy'n cynnwys y cyfrinair hwn" }, "important": { "message": "Pwysig:" }, "masterPasswordHint": { - "message": "Your master password cannot be recovered if you forget it!" + "message": "Allwch chi ddim adfer eich prif gyfrinair os caiff ei anghofio!" }, "characterMinimum": { - "message": "$LENGTH$ character minimum", + "message": "Isafswm o $LENGTH$ nod", "placeholders": { "length": { "content": "$1", @@ -2180,7 +2314,7 @@ "message": "Sut i lenwi'n awtomatig" }, "autofillSelectInfoWithCommand": { - "message": "Dewiswch eitem o'r dudalen hon neu ddefnyddio'r llwybr byr: $COMMAND$", + "message": "Dewiswch eitem o'r sgrin hon, defnyddiwch y llwybr byr $COMMAND$, neu darganfyddwch ddewisiadau eraill yn y gosodiadau.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Iawn" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Mewngofnodi ar" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Cofio'r ddyfais hon" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "UE", "description": "European Union" }, - "us": { - "message": "UDA", - "description": "United States" - }, "accessDenied": { "message": "Mynediad wedi ei wrthod. Does gennych chi ddim caniatâd i weld y dudalen hon." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trafferth mewngofnodi?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Chwilio" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Dyw'r mewnbwn ddim yn gyfeiriad ebost." + }, + "fieldsNeedAttention": { + "message": "Mae $COUNT$ o feysydd uchod angen sylw.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Dewis --" + }, + "multiSelectPlaceholder": { + "message": "-- Teipiwch i hidlo --" + }, + "multiSelectLoading": { + "message": "Yn nôl dewisiadau..." + }, + "multiSelectNotFound": { + "message": "Heb ganfod eitemau" + }, + "multiSelectClearAll": { + "message": "Clirio'r cyfan" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Is-ddewislen" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Hoffech chi fewnforio'ch data i Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Yn mewnforio...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Cafodd y data ei fewnforio'n llwyddiannus!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Neidio i'r cynnwys" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Dim eitemau i'w dangos", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Eitem newydd", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Ychwanegu eitem newydd i'r gell", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Anwybyddu" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Disgrifiad" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "Cafodd cyfanswm o $AMOUNT$ eitem eu mewnforio.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Cyfanswm" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Chafodd dim ei fewnforio." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Cadarnhau" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Enw defnyddiwr neu gyfrinair anghywir" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "Ebost LastPass" + }, + "importingYourAccount": { + "message": "Yn mewnforio eich cyfrif..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "Prif gyfrinair LastPass" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Mewnforio'n uniongyrchol o LastPass" + }, + "importFromCSV": { + "message": "Mewnforio o CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Casgliad" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Newid cyfrif" + }, + "switchAccounts": { + "message": "Newid cyfrif" + }, + "switchToAccount": { + "message": "Newid i gyfrif" + }, + "activeAccount": { + "message": "Cyfrif gweithredol" + }, + "availableAccounts": { + "message": "Cyfrifon ar gael" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "gweinydd" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Unwaith yn unig" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "Ychwanegwyd $DOMAIN$ i'r parthau wedi'u heithrio.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Fformatau cyffredin", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Hoffech chi wneud Bitwarden yn rheolydd cyfrineiriau rhagosodedig?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json index 8c3a4c6856..26e08741b2 100644 --- a/apps/browser/src/_locales/da/messages.json +++ b/apps/browser/src/_locales/da/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-udfyld" }, + "autoFillLogin": { + "message": "Autoudfyld login" + }, + "autoFillCard": { + "message": "Autoudfyld kort" + }, + "autoFillIdentity": { + "message": "Autoudfyld identitet" + }, "generatePasswordCopied": { "message": "Generér adgangskode (kopieret)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Ingen matchende logins" }, + "noCards": { + "message": "Ingen kort" + }, + "noIdentities": { + "message": "Ingen identiteter" + }, + "addLoginMenu": { + "message": "Tilføj login" + }, + "addCardMenu": { + "message": "Tilføj kort" + }, + "addIdentityMenu": { + "message": "Tilføj identitet" + }, "unlockVaultMenu": { "message": "Lås din boks op" }, @@ -244,6 +268,9 @@ "length": { "message": "Længde" }, + "passwordMinLength": { + "message": "Minimumslængde på adgangskode" + }, "uppercase": { "message": "Store bogstaver (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Adgangskode" }, + "totp": { + "message": "Godkendelseshemmelighed" + }, "passphrase": { "message": "Adgangssætning" }, @@ -338,6 +368,12 @@ "other": { "message": "Andre" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Opsæt en oplåsningsmetode til at ændre bokstimeouthandlingen." + }, + "unlockMethodNeeded": { + "message": "Opsæt en oplåsningsmetode i Indstillinger" + }, "rateExtension": { "message": "Bedøm udvidelsen" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lås nu" }, + "lockAll": { + "message": "Lås alle" + }, "immediately": { "message": "Straks" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Din nye konto er oprettet! Du kan nu logge ind." }, + "youSuccessfullyLoggedIn": { + "message": "Du er nu logget ind" + }, + "youMayCloseThisWindow": { + "message": "Dette vindue kan nu lukkes" + }, "masterPassSent": { "message": "Vi har sendt dig en e-mail med dit hovedadgangskodetip." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Ikke i stand til at auto-udfylde det valgte element på denne side. Kopiér og indsæt dataene i stedet for." }, + "totpCaptureError": { + "message": "Kan ikke skanne QR-koden fra den aktuelle webside" + }, + "totpCaptureSuccess": { + "message": "Godkendelsesnøgle tilføjet" + }, + "totpCapture": { + "message": "Skan godkendelses QR-kode fra den aktuelle webside" + }, + "copyTOTP": { + "message": "Kopiér godkendelsesnøgle (TOTP)" + }, "loggedOut": { "message": "Logget ud" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Spørg om at tilføje et element, hvis et ikke findes i din boks." }, + "addLoginNotificationDescAlt": { + "message": "Anmod om at tilføje et emne, hvis intet ikke findes i boksen. Gælder alle indloggede konti." + }, "showCardsCurrentTab": { "message": "Vis kort på fanebladet" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Bed om at opdatere et logins adgangskode, når der registreres en ændring på en hjemmeside." }, + "changedPasswordNotificationDescAlt": { + "message": "Anmod om at opdatere en login-adgangskode ved registreret ændring på et websted. Gælder alle indloggede konti." + }, + "enableUsePasskeys": { + "message": "Spørg om at gemme og bruge adgangsnøgler" + }, + "usePasskeysDesc": { + "message": "Spørg om at gemme nye adgangsnøgler eller logge ind med adgangsnøgler gemt i Boksen. Gælder for alle indloggede konti." + }, "notificationChangeDesc": { "message": "Vil du opdatere denne adgangskode i Bitwarden?" }, "notificationChangeSave": { "message": "Opdatér" }, + "notificationUnlockDesc": { + "message": "Oplås din Bitwarden boks for at færdiggøre autoudfyldanmodningen." + }, + "notificationUnlock": { + "message": "Oplås" + }, "enableContextMenuItem": { "message": "Vis indstillinger i kontekstmenuen" }, "contextMenuItemDesc": { - "message": "Brug et sekundært klik for at få adgang til adgangskodegenerering og matchende logins til hjemmesiden." + "message": "Brug et sekundært klik for at tilgå adgangskodegenerering og matchende logins til webstedet." + }, + "contextMenuItemDescAlt": { + "message": "Brug et sekundært klik for at få adgang til adgangskodegenerering og matchende logins til webstedet. Gælder alle indloggede konti." }, "defaultUriMatchDetection": { "message": "Standard URI matchmetode", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Skift applikationens farvetema." }, + "themeDescAlt": { + "message": "Skift applikationens farvetema. Gælder for alle indloggede konti." + }, "dark": { "message": "Mørk", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Funktion ikke tilgængelig" }, - "updateKey": { - "message": "Du kan ikke bruge denne funktion, før du opdaterer din krypteringsnøgle." + "encryptionKeyMigrationRequired": { + "message": "Krypteringsnøglemigrering nødvendig. Log ind gennem web-boksen for at opdatere krypteringsnøglen." }, "premiumMembership": { "message": "Premium-medlemskab" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB krypteret lager til vedhæftede filer." }, - "ppremiumSignUpTwoStep": { - "message": "Yderligere to-trins login muligheder såsom YubiKey, FIDO U2F og Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietære totrins-login muligheder, såsom YubiKey og Duo." }, "ppremiumSignUpReports": { "message": "Adgangskodehygiejne, kontosundhed og rapporter om datalæk til at holde din boks sikker." @@ -952,7 +1033,7 @@ "message": "Server URL" }, "apiUrl": { - "message": "API server URL" + "message": "API-server URL" }, "webVaultUrl": { "message": "Web-boks server URL" @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Miljøets URLs er blevet gemt." }, + "showAutoFillMenuOnFormFields": { + "message": "Vis autoudfyld-menu i formularfelter", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Gælder for alle indloggede konti." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Slå indstillingerne til webbrowsers indbyggede adgangskodehåndtering fra for at undgå konflikter." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Redigér webbrowserindstillinger." + }, + "autofillOverlayVisibilityOff": { + "message": "Fra", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Når felt er valgt (i fokus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Når autoudfyld-ikon vælges", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-udfyld ved sideindlæsning" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Vis et genkendeligt billede ud for hvert login." }, + "faviconDescAlt": { + "message": "Vis et genkendeligt billede ved siden af hvert login. Gælder for alle indloggede konti." + }, "enableBadgeCounter": { "message": "Vis badge-tæller" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Ugyldig pinkode." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "For mange ugyldige PIN-koder indtastet. Logger ud." + }, "unlockWithBiometrics": { "message": "Lås op med biometri" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Gendan element" }, - "restoreItemConfirmation": { - "message": "Er du sikker på, at du vil gendanne dette element?" - }, "restoredItem": { "message": "Element gendannet" }, @@ -1465,7 +1574,7 @@ "message": "Advarsel: Dette er en ikke-sikret HTTP side, og alle indsendte oplysninger kan potentielt ses og ændres af andre. Dette login blev oprindeligt gemt på en sikker (HTTPS) side." }, "insecurePageWarningFillPrompt": { - "message": "Do you still wish to fill this login?" + "message": "Ønsker dette login stadig udfyldt?" }, "autofillIframeWarning": { "message": "Formularen hostes af et andet domæne end URI'en for det gemte login. Vælg OK for at autoudfylde alligevel, eller Afbryd for at stoppe." @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browserbiometri understøttes ikke på denne enhed." }, + "biometricsFailedTitle": { + "message": "Biometri mislykkedes" + }, + "biometricsFailedDesc": { + "message": "Biometri kan ikke gennemføres. Overvej at bruge en hovedadgangskode eller at logge ud. Fortsætter problemet, kontakt Bitwarden-supporten." + }, "nativeMessaginPermissionErrorTitle": { "message": "Tilladelse ikke givet" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "En organisationspolitik påvirker dine ejerskabsmuligheder." }, + "personalOwnershipPolicyInEffectImports": { + "message": "En organisationspolitik hindrer import af emner til den individuelle boks." + }, "excludedDomains": { "message": "Ekskluderede domæner" }, "excludedDomainsDesc": { "message": "Bitwarden vil ikke bede om at gemme login-detaljer for disse domæner. Du skal opdatere siden for at ændringerne kan træde i kraft." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden vil ikke anmode om at gemme login-detaljer for disse domæner for alle indloggede konti. Siden skal opfriskes for at effektuere ændringerne." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ er ikke et gyldigt domæne", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Vælg mappe..." }, - "ssoCompleteRegistration": { - "message": "For at fuldføre indlogning med SSO skal du opsætte en hovedadgangskode for at få adgang til samt beskytte din boks." + "noFoldersFound": { + "message": "Ingen mapper fundet", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Organisationstilladelserne er blevet opdateret, og der kræves nu oprettelse af en hovedadgangskode.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Organisationen kræver, at der oprettes en hovedadgangskode.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Bekræftelse kræves", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Timer" @@ -1893,7 +2027,7 @@ "message": "Minutter" }, "vaultTimeoutPolicyInEffect": { - "message": "Organisationspolitikker har sat maks. tilladt boks-timeout. til $HOURS$ time(r) og $MINUTES$ minut(ter).", + "message": "Organisationspolitikkerne har fastsat den maksimalt tilladte boks-timeout til $HOURS$ time(r) og $MINUTES$ minut(ter).", "placeholders": { "hours": { "content": "$1", @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Eksporterer personlig boks" }, - "exportingPersonalVaultDescription": { - "message": "Kun de personlige bokselementer tilknyttet $EMAIL$ vil blive eksporteret. Organisationsbokseelementer vil ikke være inkluderet.", + "exportingIndividualVaultDescription": { + "message": "Kun individuelle Boksemner tilknyttet $EMAIL$ eksporteres. Organisationsboksemner medtages ikke. Kun Boksemneinformation uden tilhørende vedhæftninger eksporteres.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Selv-hostet" + "selfHostedServer": { + "message": "selv-hostet" }, "thirdParty": { "message": "Tredjepart" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "En notifikation er sendt til din enhed." }, - "logInInitiated": { + "loginInitiated": { "message": "Indlogning påbegyndt" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Sådan autoudfyldes" }, "autofillSelectInfoWithCommand": { - "message": "Vælg et element fra denne side eller brug genvejen: $COMMAND$", + "message": "Vælg et emne fra denne skærm, brug genvejen $COMMAND$ eller udforsk andre valgmuligheder i Indstillinger.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Vælg et element fra denne side eller opret en genvej i Indstillinger." + "message": "Vælg et emne fra denne skærm eller udforsk andre valgmuligheder i Indstillinger." }, "gotIt": { "message": "Forstået" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logger ind på" }, "opensInANewWindow": { "message": "Åbnes i et nyt vindue" }, + "deviceApprovalRequired": { + "message": "Enhedsgodkendelse kræves. Vælg en godkendelsesmulighed nedenfor:" + }, + "rememberThisDevice": { + "message": "Husk denne enhed" + }, + "uncheckIfPublicDevice": { + "message": "Slå fra, hvis en offentlig enhed benyttes" + }, + "approveFromYourOtherDevice": { + "message": "Godkend med min anden enhed" + }, + "requestAdminApproval": { + "message": "Anmod om admin-godkendelse" + }, + "approveWithMasterPassword": { + "message": "Godkend med hovedadgangskode" + }, + "ssoIdentifierRequired": { + "message": "Organisations SSO-identifikator kræves." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "USA", - "description": "United States" - }, "accessDenied": { "message": "Adgang nægtet. Nødvendig tilladelse til at se siden mangler." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Konto oprettet!" + }, + "adminApprovalRequested": { + "message": "Admin-godkendelse udbedt" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Anmodningen er sendt til din admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Du underrettes, når godkendelse foreligger." + }, + "troubleLoggingIn": { + "message": "Problemer med at logge ind?" + }, + "loginApproved": { + "message": "Indlogning godkendt" + }, + "userEmailMissing": { + "message": "Brugers e-mail mangler" + }, + "deviceTrusted": { + "message": "Enhed betroet" + }, + "inputRequired": { + "message": "Input obligatorisk." + }, + "required": { + "message": "obligatorisk" + }, + "search": { + "message": "Søg" + }, + "inputMinLength": { + "message": "Input skal udgøre minimum $COUNT$ tegn.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input må maksimalt udgøre $COUNT$ tegn.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Flg. tegn er ikke tilladt: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Inputværdi skal være mindst $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Inputværdi må ikke overstige $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 eller flere e-mails er ugyldige" + }, + "inputTrimValidator": { + "message": "Input må ikke indeholde kun mellemrum.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input er ikke en e-mailadresse." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ felt(er) ovenfor kræver opmærksomhed.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Vælg --" + }, + "multiSelectPlaceholder": { + "message": "-- Skriv for at filtrere --" + }, + "multiSelectLoading": { + "message": "Henter indstillinger…" + }, + "multiSelectNotFound": { + "message": "Ingen emner fundet" + }, + "multiSelectClearAll": { + "message": "Ryd alt" + }, + "plusNMore": { + "message": "+ $QUANTITY$ flere", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Undermenu" + }, + "toggleCollapse": { + "message": "Fold sammen/ud", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Importér data til Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Beskyt LastPass-data og importér dem til Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Gem som ukrypteret fil", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importér til Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importerer...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data er nu importeret!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Fejl under import. Tjek konsollen for detaljer.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Netværksfejl opstod under import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Aliasdomæne" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Emner, hvor der anmodes om hovedadgangskode igen, kan ikke autoudfyldes ved sideindlæsning. Autoudfyldning ved sideindlæsning er slået fra.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Autoudfyldning ved sideindlæsning sat til standardindstillingen.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Slå anmodning om hovedadgangskode igen fra for at redigere dette felt", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Spring til indhold" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden autoudfyld-menuknap", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Slå Bitwarden autoudfyld--menu til/fra", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden autoudfyld-menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Oplås kontoen for at se matchende logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Oplås konto", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Angiv legitimationsoplysninger for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Delvis brugernavn", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Ingen emner at vise", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Nyt emne", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Tilføj nyt Boks-emne", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden autoudfyld-menu tilgængelig. Tryk på pil ned-tasten for at vælge.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Slå til" + }, + "ignore": { + "message": "Ignorér" + }, + "importData": { + "message": "Importér data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Importfejl" + }, + "importErrorDesc": { + "message": "Der var et problem med de data, som blev forsøgt importeret. Ret nedenstående fejl i kildefilen, og forsøg igen." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Ret fejlene nedenfor og forsøg igen." + }, + "description": { + "message": "Beskriveslse" + }, + "importSuccess": { + "message": "Data er hermed importeret" + }, + "importSuccessNumberOfItems": { + "message": "I alt $AMOUNT$ emner blev importeret.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Forsøg igen" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Bekræftelse kræves for denne handling. Opsæt en PIN-kode for at fortsætte." + }, + "setPin": { + "message": "Opsæt PIN-kode" + }, + "verifyWithBiometrics": { + "message": "Bekræft med biometri" + }, + "awaitingConfirmation": { + "message": "Afventer bekræftelse" + }, + "couldNotCompleteBiometrics": { + "message": "Kunne ikke færdiggøre biometri." + }, + "needADifferentMethod": { + "message": "Brug for en anden metode?" + }, + "useMasterPassword": { + "message": "Brug hovedadgangskode" + }, + "usePin": { + "message": "Brug PIN-kode" + }, + "useBiometrics": { + "message": "Brug biometri" + }, + "enterVerificationCodeSentToEmail": { + "message": "Angiv bekræftelseskoden tilsendt pr. e-mail." + }, + "resendCode": { + "message": "Send kode igen" + }, + "total": { + "message": "I alt" + }, + "importWarning": { + "message": "Data, som kan blive delt med organisationsmedlemmerne, er ved at blive importeret til $ORGANIZATION$. Fortsæt?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Start Duo og følg trinnene for at fuldføre indlogningen." + }, + "duoRequiredForAccount": { + "message": "Duo-totrinsindlogning kræves for kontoen." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Pop udvidelsen ud for at fuldføre indlogning." + }, + "popoutExtension": { + "message": "Pop ud-udvidelse" + }, + "launchDuo": { + "message": "Start Duo" + }, + "importFormatError": { + "message": "Data er ikke korrekt formateret. Tjek importfilen og forsøg igen." + }, + "importNothingError": { + "message": "Intet blev importeret." + }, + "importEncKeyError": { + "message": "Fejl under dekryptering af eksporteret fil. Krypteringsnøglen matcher ikke den til dataeksporten anvendte krypteringsnøgle." + }, + "invalidFilePassword": { + "message": "Ugyldig filadgangskode. Brug samme adgangskode som under oprettelsen af eksportfilen." + }, + "importDestination": { + "message": "Importdestination" + }, + "learnAboutImportOptions": { + "message": "Læs om importmuligheder" + }, + "selectImportFolder": { + "message": "Vælg en mappe" + }, + "selectImportCollection": { + "message": "Vælg en samling" + }, + "importTargetHint": { + "message": "Vælg denne indstilling, hvis importeret filindhold skal flyttet til en $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Fil indeholder ikke-tildelte emner." + }, + "selectFormat": { + "message": "Vælg formatet for importfilen" + }, + "selectImportFile": { + "message": "Vælg importfil" + }, + "chooseFile": { + "message": "Vælg fil" + }, + "noFileChosen": { + "message": "Ingen fil valgt" + }, + "orCopyPasteFileContents": { + "message": "eller kopiér/indsæt importfilens indhold" + }, + "instructionsFor": { + "message": "$NAME$-vejledning", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Bekræft Boks-import" + }, + "confirmVaultImportDesc": { + "message": "Denne fil er adgangskodebeskyttet. Angiv filadgangskoden for at importere data." + }, + "confirmFilePassword": { + "message": "Bekræft filadgangskode" + }, + "typePasskey": { + "message": "Adgangsnøgle" + }, + "passkeyNotCopied": { + "message": "Adgangsnøglen kopieres ikke" + }, + "passkeyNotCopiedAlert": { + "message": "Adgangsnøglen kopieres ikke til det klonede emne. Fortsæt kloningen af emnet alligevel?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Bekræftelse krævet af startwebstedet. Denne funktion er endnu ikke implementeret for konti uden hovedadgangskode." + }, + "logInWithPasskey": { + "message": "Log ind med adgangsnøgle?" + }, + "passkeyAlreadyExists": { + "message": "En adgangsnøgle findes allerede til denne applikation." + }, + "noPasskeysFoundForThisApplication": { + "message": "Ingen adgangsnøgler fundet til denne applikation." + }, + "noMatchingPasskeyLogin": { + "message": "Der er intet matchende login til dette websted." + }, + "confirm": { + "message": "Bekræft" + }, + "savePasskey": { + "message": "Gem adgangsnøgle" + }, + "savePasskeyNewLogin": { + "message": "Gem adgangsnøgle som nyt login" + }, + "choosePasskey": { + "message": "Vælg et login at gemme denne adgangsnøgle til" + }, + "passkeyItem": { + "message": "Adgangsnøgleemne" + }, + "overwritePasskey": { + "message": "Overskriv adgangsnøgle?" + }, + "overwritePasskeyAlert": { + "message": "Emnet indeholder allerede en adgangsnøgle. Sikker på, at den aktuelle adgangsnøgle skal overskrives?" + }, + "featureNotSupported": { + "message": "Funktionen understøttes ikke endnu" + }, + "yourPasskeyIsLocked": { + "message": "Godkendelse kræves for brug af adgangsnøgle. Bekræft din identitet for at fortsætte." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifaktorgodkendelse afbrudt" + }, + "noLastPassDataFound": { + "message": "Ingen LastPass-data fundet" + }, + "incorrectUsernameOrPassword": { + "message": "Forkert brugernavn eller adgangskode" + }, + "incorrectPassword": { + "message": "Forkert adgangskode" + }, + "incorrectCode": { + "message": "Forkert kode" + }, + "incorrectPin": { + "message": "Forkert PIN-kode" + }, + "multifactorAuthenticationFailed": { + "message": "Multifaktorgodkendelse mislykkedes" + }, + "includeSharedFolders": { + "message": "Medtag delte mapper" + }, + "lastPassEmail": { + "message": "LastPass e-mail" + }, + "importingYourAccount": { + "message": "Importerer kontoen..." + }, + "lastPassMFARequired": { + "message": "LastPass-multifaktorgodkendelse kræves" + }, + "lastPassMFADesc": { + "message": "Angiv engangskoden fra godkendelses-appen" + }, + "lastPassOOBDesc": { + "message": "Godkend loginanmodningen i godkendelses-appen eller angiv en engangskode." + }, + "passcode": { + "message": "Adgangskode" + }, + "lastPassMasterPassword": { + "message": "LastPass-hovedadgangskode" + }, + "lastPassAuthRequired": { + "message": "LastPass-godkendelse kræves" + }, + "awaitingSSO": { + "message": "Afventer SSO-godkendelse" + }, + "awaitingSSODesc": { + "message": "Fortsæt indlogningen med virksomhedslegitimationsoplysningerne." + }, + "seeDetailedInstructions": { + "message": "Se detaljeret vejledning på vores hjælpeside på", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import direkte fra LastPass" + }, + "importFromCSV": { + "message": "Import fra CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Forsøg igen eller kig efter en e-mail fra LastPass for at bekræfte, at det er dig." + }, + "collection": { + "message": "Samling" + }, + "lastPassYubikeyDesc": { + "message": "Indsæt den til LastPass-kontoen tilknyttede YubiKey i computers USB-port, og tryk dernæst på dens knap." + }, + "switchAccount": { + "message": "Skift konto" + }, + "switchAccounts": { + "message": "Skift konti" + }, + "switchToAccount": { + "message": "Skift til konto" + }, + "activeAccount": { + "message": "Aktiv konto" + }, + "availableAccounts": { + "message": "Tilgængelige konti" + }, + "accountLimitReached": { + "message": "Kontokvote nået. Log ud af en konto for at tilføje en anden." + }, + "active": { + "message": "aktiv" + }, + "locked": { + "message": "låst" + }, + "unlocked": { + "message": "oplåst" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hostet hos" + }, + "useDeviceOrHardwareKey": { + "message": "Brug din enhed eller hardwarenøgle" + }, + "justOnce": { + "message": "Kun én gang" + }, + "alwaysForThisSite": { + "message": "Altid for dette websted" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ føjet til undtagne domæner.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Almindelige formater", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Lad Bitwarden håndtere adgangskoder som standard?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoreres denne indstilling, kan det forårsage konflikter mellem Bitwardens autoudfyld-menu og webbrowsere.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Lad Bitwarden håndtere adgangskoder som standard", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Kan ikke indstille Bitwarden som standard adgangskodehåndtering", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Der skal tildeles webbrowser fortrolighedstilladelser til Bitwarden for at indstille den til at håndtere adgangskoder som standard.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Gør til standard", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Legitimationsoplysninger er gemt!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Legitimationsoplysninger er opdateret!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Fejl under import. Tjek konsollen for detaljer.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Fjern adgangsnøgle" + }, + "passkeyRemoved": { + "message": "Adgangsnøgle fjernet" + }, + "unassignedItemsBanner": { + "message": "Bemærk: Utildelte organisationsemner er ikke længere synlige i Alle Bokse-visningen og er kun tilgængelige via Adminkonsollen. Føj disse emner til en samling fra Adminkonsollen for at gøre dem synlige." } } diff --git a/apps/browser/src/_locales/de/messages.json b/apps/browser/src/_locales/de/messages.json index 374130ffbc..b542fbfad7 100644 --- a/apps/browser/src/_locales/de/messages.json +++ b/apps/browser/src/_locales/de/messages.json @@ -11,7 +11,7 @@ "description": "Extension description" }, "loginOrCreateNewAccount": { - "message": "Du musst dich anmelden oder einen neuen Account erstellen, um auf den Tresor zugreifen zu können." + "message": "Melde dich an oder erstelle ein neues Konto, um auf deinen Tresor zuzugreifen." }, "createAccount": { "message": "Konto erstellen" @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-Ausfüllen" }, + "autoFillLogin": { + "message": "Zugangsdaten automatisch ausfüllen" + }, + "autoFillCard": { + "message": "Karte automatisch ausfüllen" + }, + "autoFillIdentity": { + "message": "Identität automatisch ausfüllen" + }, "generatePasswordCopied": { "message": "Passwort generieren (kopiert)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Keine passenden Zugangsdaten" }, + "noCards": { + "message": "Keine Karten" + }, + "noIdentities": { + "message": "Keine Identitäten" + }, + "addLoginMenu": { + "message": "Zugangsdaten hinzufügen" + }, + "addCardMenu": { + "message": "Karte hinzufügen" + }, + "addIdentityMenu": { + "message": "Identität hinzufügen" + }, "unlockVaultMenu": { "message": "Entsperre deinen Tresor" }, @@ -244,6 +268,9 @@ "length": { "message": "Länge" }, + "passwordMinLength": { + "message": "Minimale Passwortlänge" + }, "uppercase": { "message": "Großbuchstaben (A-Z)" }, @@ -294,11 +321,14 @@ "message": "Eintragsinformationen" }, "username": { - "message": "Nutzername" + "message": "Benutzername" }, "password": { "message": "Passwort" }, + "totp": { + "message": "Authentifikator-Geheimnis" + }, "passphrase": { "message": "Passphrase" }, @@ -338,6 +368,12 @@ "other": { "message": "Sonstige" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Richte eine Entsperrmethode ein, um deine Aktion bei Timeout-Timeout zu ändern." + }, + "unlockMethodNeeded": { + "message": "Lege eine Entsperrmethode in den Einstellungen fest" + }, "rateExtension": { "message": "Erweiterung bewerten" }, @@ -357,7 +393,7 @@ "message": "Entsperren" }, "loggedInAsOn": { - "message": "Eingeloggt als $EMAIL$ auf $HOSTNAME$.", + "message": "Angemeldet als $EMAIL$ auf $HOSTNAME$.", "placeholders": { "email": { "content": "$1", @@ -378,6 +414,9 @@ "lockNow": { "message": "Jetzt sperren" }, + "lockAll": { + "message": "Alles sperren" + }, "immediately": { "message": "Sofort" }, @@ -409,7 +448,7 @@ "message": "1 Stunde" }, "fourHours": { - "message": "4 Stunde" + "message": "4 Stunden" }, "onLocked": { "message": "Wenn System gesperrt" @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Dein neues Konto wurde erstellt! Du kannst dich jetzt anmelden." }, + "youSuccessfullyLoggedIn": { + "message": "Du hast dich erfolgreich angemeldet." + }, + "youMayCloseThisWindow": { + "message": "Du kannst dieses Fenster schließen." + }, "masterPassSent": { "message": "Wir haben dir eine E-Mail mit dem Master-Passwort-Hinweis geschickt." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Die Felder dieser Seite konnten nicht automatisch ausgefüllt werden. Bitte Nutzernamen und/oder Passwort manuell kopieren." }, + "totpCaptureError": { + "message": "QR-Code kann nicht von der aktuellen Webseite gescannt werden" + }, + "totpCaptureSuccess": { + "message": "Authentifizierungsschlüssel hinzugefügt" + }, + "totpCapture": { + "message": "Den Authentifizierungs-QR-Code von der aktuellen Webseite scannen" + }, + "copyTOTP": { + "message": "Authentifizierungsschlüssel kopieren (TOTP)" + }, "loggedOut": { "message": "Ausgeloggt" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Nach dem Hinzufügen eines Eintrags fragen, wenn dieser nicht in deinem Tresor gefunden wurde." }, + "addLoginNotificationDescAlt": { + "message": "Nach dem Hinzufügen eines Eintrags fragen, wenn er nicht in deinem Tresor gefunden wurde. Gilt für alle angemeldeten Konten." + }, "showCardsCurrentTab": { "message": "Karten auf Tab Seite anzeigen" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Nach dem Aktualisieren eines Passworts fragen, wenn eine Änderung auf einer Website erkannt wird." }, + "changedPasswordNotificationDescAlt": { + "message": "Nach dem Aktualisieren des Passworts von Zugangsdaten fragen, wenn eine Änderung auf einer Website erkannt wird. Gilt für alle angemeldeten Konten." + }, + "enableUsePasskeys": { + "message": "Nach dem Speichern und Verwenden von Passkeys fragen" + }, + "usePasskeysDesc": { + "message": "Danach fragen neue Passkeys zu speichern oder sich mit in deinem Tresor gespeicherten Passkeys anmelden. Gilt für alle angemeldeten Konten." + }, "notificationChangeDesc": { "message": "Möchtest du dieses Passwort in Bitwarden aktualisieren?" }, "notificationChangeSave": { "message": "Aktualisieren" }, + "notificationUnlockDesc": { + "message": "Entsperre deinen Bitwarden Tresor, um die Auto-Ausfüllen-Anfrage abzuschließen." + }, + "notificationUnlock": { + "message": "Entsperren" + }, "enableContextMenuItem": { "message": "Kontextmenüoptionen anzeigen" }, "contextMenuItemDesc": { "message": "Greife über einen Rechtsklick auf die Erstellung von Passwörtern und passende Zugangsdaten für die Website zu." }, + "contextMenuItemDescAlt": { + "message": "Verwende einen Rechtsklick, um auf die Passwortgenerierung und die passenden Zugangsdaten für die Website zuzugreifen. Gilt für alle angemeldeten Konten." + }, "defaultUriMatchDetection": { "message": "Standard URI-Übereinstimmungserkennung", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Ändere das Farbschema der Anwendung." }, + "themeDescAlt": { + "message": "Ändere das Farbschema der Anwendung. Gilt für alle angemeldeten Konten." + }, "dark": { "message": "Dunkel", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Funktion nicht verfügbar" }, - "updateKey": { - "message": "Du kannst diese Funktion nicht nutzen, solange du deinen Verschlüsselungsschlüssel nicht aktualisiert hast." + "encryptionKeyMigrationRequired": { + "message": "Verschlüsselungscode-Migration erforderlich. Bitte melde dich über den Web-Tresor an, um deinen Verschlüsselungscode zu aktualisieren." }, "premiumMembership": { "message": "Premium-Mitgliedschaft" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB verschlüsselter Speicherplatz für Dateianhänge." }, - "ppremiumSignUpTwoStep": { - "message": "Zusätzliche Zweifaktor-Anmeldung über YubiKey, FIDO U2F, und Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietäre Optionen für die Zwei-Faktor Authentifizierung wie YubiKey und Duo." }, "ppremiumSignUpReports": { "message": "Berichte über Kennworthygiene, Kontostatus und Datenschutzverletzungen, um deinen Tresor sicher zu halten." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "URLs der Umgebung gespeichert" }, + "showAutoFillMenuOnFormFields": { + "message": "Auto-Ausfüllen Menü in Formularfeldern anzeigen", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Gilt für alle angemeldeten Konten." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Deaktiviere die Einstellungen des eingebauten Passwort-Managers deines Browsers, um Konflikte zu vermeiden." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Browsereinstellungen bearbeiten." + }, + "autofillOverlayVisibilityOff": { + "message": "Aus", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Wenn Feld ausgewählt ist (im Fokus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Wenn das Auto-Ausfüllen Symbol ausgewählt ist", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-Ausfüllen beim Laden einer Seite aktivieren" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Ein wiedererkennbares Bild neben jeden Zugangsdaten anzeigen." }, + "faviconDescAlt": { + "message": "Ein wiedererkennbares Bild neben jeden Zugangsdaten anzeigen. Gilt für alle angemeldeten Konten." + }, "enableBadgeCounter": { "message": "Badge-Zähler anzeigen" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Ungültiger PIN-Code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Zu viele ungültige PIN Eingabeversuche. Wird abgemeldet." + }, "unlockWithBiometrics": { "message": "Mit Biometrie entsperren" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Eintrag wiederherstellen" }, - "restoreItemConfirmation": { - "message": "Soll dieser Eintrag wirklich wiederhergestellt werden?" - }, "restoredItem": { "message": "Eintrag wiederhergestellt" }, @@ -1582,7 +1691,7 @@ "message": "Desktop-Kommunikation unterbrochen" }, "nativeMessagingWrongUserDesc": { - "message": "Die Desktop-Anwendung ist in ein anderes Konto eingeloggt. Bitte stelle sicher, dass beide Anwendungen mit demselben Konto angemeldet sind." + "message": "Die Desktop-Anwendung ist in einem anderen Konto angemeldet. Bitte stelle sicher, dass beide Anwendungen mit demselben Konto angemeldet sind." }, "nativeMessagingWrongUserTitle": { "message": "Konten stimmen nicht überein" @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Biometrie im Browser wird auf diesem Gerät nicht unterstützt." }, + "biometricsFailedTitle": { + "message": "Biometrie fehlgeschlagen" + }, + "biometricsFailedDesc": { + "message": "Die biometrische Verifizierung kann nicht abgeschlossen werden. Versuch es mit dem Master-Passwort oder melde dich ab. Sollte das Problem weiterhin bestehen, kontaktiere bitte den Bitwarden-Support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Berechtigung nicht erteilt" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Eine Organisationsrichtlinie beeinflusst deine Eigentümer-Optionen." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Eine Organisationsrichtlinie hat das Importieren von Einträgen in deinen persönlichen Tresor deaktiviert." + }, "excludedDomains": { "message": "Ausgeschlossene Domains" }, "excludedDomainsDesc": { "message": "Bitwarden wird keine Login-Daten für diese Domäne speichern. Du musst die Seite aktualisieren, damit die Änderungen wirksam werden." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden wird für alle angemeldeten Konten nicht danach fragen Zugangsdaten für diese Domains speichern. Du musst die Seite neu laden, damit die Änderungen wirksam werden." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ ist keine gültige Domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Ordner auswählen..." }, - "ssoCompleteRegistration": { - "message": "Um die Anmeldung über SSO abzuschließen, lege bitte ein Master-Passwort fest, um auf deinen Tresor zuzugreifen und ihn zu schützen." + "noFoldersFound": { + "message": "Keine Ordner gefunden", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Deine Organisationsberechtigungen wurden aktualisiert und verlangen, dass du ein Master-Passwort festlegen musst.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Deine Organisation verlangt, dass du ein Master-Passwort festlegen musst.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verifizierung erforderlich", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Stunden" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Persönlicher Tresor wird exportiert" }, - "exportingPersonalVaultDescription": { - "message": "Nur die einzelnen Tresor-Einträge, die mit $EMAIL$ verbunden sind, werden exportiert. Tresor-Einträge der Organisation werden nicht berücksichtigt.", + "exportingIndividualVaultDescription": { + "message": "Es werden nur persönliche Tresoreinträge exportiert, die mit $EMAIL$ verbunden sind. Tresoreinträge der Organisation werden nicht berücksichtigt. Es werden nur Informationen der Tresoreinträge exportiert. Diese enthalten nicht die zugehörigen Anhänge.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server-Version" }, - "selfHosted": { - "message": "Selbst gehostet" + "selfHostedServer": { + "message": "selbst gehostet" }, "thirdParty": { "message": "Drittanbieter" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Eine Benachrichtigung wurde an dein Gerät gesendet." }, - "logInInitiated": { + "loginInitiated": { "message": "Anmeldung eingeleitet" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "So funktioniert Auto-Ausfüllen" }, "autofillSelectInfoWithCommand": { - "message": "Wähle einen Eintrag von dieser Seite aus oder verwende das Tastaturkürzel: $COMMAND$", + "message": "Wähle einen Eintrag von dieser Bildschirmseite, verwende das Tastaturkürzel $COMMAND$ oder entdecke andere Optionen in den Einstellungen.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Wähle einen Eintrag von dieser Seite aus oder lege ein Tastaturkürzel in den Einstellungen fest." + "message": "Wähle einen Eintrag von dieser Bildschirmseite oder entdecke andere Optionen in den Einstellungen." }, "gotIt": { "message": "Verstanden" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Anmelden bei" }, "opensInANewWindow": { "message": "Wird in einem neuen Fenster geöffnet" }, + "deviceApprovalRequired": { + "message": "Geräte-Genehmigung erforderlich. Wähle unten eine Genehmigungsoption aus:" + }, + "rememberThisDevice": { + "message": "Dieses Gerät merken" + }, + "uncheckIfPublicDevice": { + "message": "Deaktivieren, wenn ein öffentliches Gerät verwendet wird" + }, + "approveFromYourOtherDevice": { + "message": "Von deinem anderen Gerät genehmigen" + }, + "requestAdminApproval": { + "message": "Admin-Genehmigung anfragen" + }, + "approveWithMasterPassword": { + "message": "Mit Master-Passwort genehmigen" + }, + "ssoIdentifierRequired": { + "message": "SSO-Kennung der Organisation erforderlich." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Zugriff verweigert. Du hast keine Berechtigung, diese Seite anzuzeigen." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Anzeige" + }, + "accountSuccessfullyCreated": { + "message": "Konto erfolgreich erstellt!" + }, + "adminApprovalRequested": { + "message": "Admin-Genehmigung angefragt" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Deine Anfrage wurde an deinen Administrator gesendet." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Nach einer Genehmigung wirst du benachrichtigt." + }, + "troubleLoggingIn": { + "message": "Probleme beim Anmelden?" + }, + "loginApproved": { + "message": "Anmeldung genehmigt" + }, + "userEmailMissing": { + "message": "E-Mail-Adresse des Benutzers fehlt" + }, + "deviceTrusted": { + "message": "Gerät wird vertraut" + }, + "inputRequired": { + "message": "Eingabe ist erforderlich." + }, + "required": { + "message": "Erforderlich" + }, + "search": { + "message": "Suche" + }, + "inputMinLength": { + "message": "Die Eingabe muss mindestens $COUNT$ Zeichen lang sein.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Die Eingabe darf $COUNT$ Zeichen nicht überschreiten.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Die folgenden Zeichen sind nicht erlaubt: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Der Eingabewert muss mindestens $MIN$ betragen.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Der Eingabewert darf $MAX$ nicht überschreiten.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "Mindestens 1 E-Mail-Adresse ist ungültig" + }, + "inputTrimValidator": { + "message": "Die Eingabe darf nicht nur Leerzeichen enthalten.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Die Eingabe ist keine E-Mail-Adresse." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ Feld(er) oben benötigen deine Aufmerksamkeit.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Auswählen --" + }, + "multiSelectPlaceholder": { + "message": "-- Schreiben zum Filtern --" + }, + "multiSelectLoading": { + "message": "Optionen werden abgerufen..." + }, + "multiSelectNotFound": { + "message": "Keine Einträge gefunden" + }, + "multiSelectClearAll": { + "message": "Alles löschen" + }, + "plusNMore": { + "message": "+ $QUANTITY$ mehr", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Untermenü" + }, + "toggleCollapse": { + "message": "Ein-/ausklappen", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Deine Daten in Bitwarden importieren?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Deine LastPass-Daten schützen und in Bitwarden importieren?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Als unverschlüsselte Datei speichern", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "In Bitwarden importieren", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Wird importiert...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Daten erfolgreich importiert!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Fehler beim Importieren. Überprüfe die Konsole für Details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Netzwerkfehler beim Importieren.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias-Domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Einträge, die eine erneuten Abfrage des Master-Passworts verlangen, können nicht beim Laden einer Seite automatisch ausgefüllt werden. Auto-Ausfüllen beim Laden einer Seite deaktiviert.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-Ausfüllen beim Lader einer Seite wurde auf die Standardeinstellung gesetzt.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Deaktiviere die erneute Abfrage des Master-Passworts, um dieses Feld zu bearbeiten", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Zum Inhalt wechseln" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden Auto-Ausfüllen Menütaste", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Bitwarden Auto-Ausfüllen Menü umschalten", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden Auto-Ausfüllen Menü", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Entsperre dein Konto, um passende Zugangsdaten anzuzeigen", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Konto entsperren", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Zugangsdaten ausfüllen für", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Teil-Benutzername", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Kein Eintrag zum Anzeigen", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Neuer Eintrag", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Neuen Tresor-Eintrag hinzufügen", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden Auto-Ausfüllen Menü verfügbar. Drücke die Pfeiltaste nach unten zum Auswählen.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Einschalten" + }, + "ignore": { + "message": "Ignorieren" + }, + "importData": { + "message": "Daten importieren", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Importfehler" + }, + "importErrorDesc": { + "message": "Es gab ein Problem mit den Daten, die du importieren wolltest. Bitte behebe die unten aufgeführten Fehler in deiner Quelldatei und versuche es erneut." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Behebe die unten aufgeführten Fehler und versuche es erneut." + }, + "description": { + "message": "Beschreibung" + }, + "importSuccess": { + "message": "Daten erfolgreich importiert" + }, + "importSuccessNumberOfItems": { + "message": "Insgesamt wurden $AMOUNT$ Einträge importiert.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Erneut versuchen" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Für diese Aktion ist eine Verifizierung erforderlich. Lege eine PIN fest, um fortzufahren." + }, + "setPin": { + "message": "PIN festlegen" + }, + "verifyWithBiometrics": { + "message": "Mit Biometrie verifizieren" + }, + "awaitingConfirmation": { + "message": "Warten auf Bestätigung" + }, + "couldNotCompleteBiometrics": { + "message": "Biometrische Verifizierung konnte nicht abgeschlossen werden." + }, + "needADifferentMethod": { + "message": "Brauchst du eine andere Methode?" + }, + "useMasterPassword": { + "message": "Master-Passwort verwenden" + }, + "usePin": { + "message": "PIN verwenden" + }, + "useBiometrics": { + "message": "Biometrie verwenden" + }, + "enterVerificationCodeSentToEmail": { + "message": "Gib den Verifizierungscode ein, der an deine E-Mail-Adresse gesendet wurde." + }, + "resendCode": { + "message": "Code erneut senden" + }, + "total": { + "message": "Gesamt" + }, + "importWarning": { + "message": "Du importierst Daten in $ORGANIZATION$. Deine Daten könnten mit Mitgliedern dieser Organisation geteilt werden. Möchtest du fortfahren?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Starte DUO und folge den Schritten, um die Anmeldung zu abzuschließen." + }, + "duoRequiredForAccount": { + "message": "Für dein Konto ist die Duo Zwei-Faktor-Authentifizierung erforderlich." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Koppel die Erweiterung ab, um die Anmeldung abzuschließen." + }, + "popoutExtension": { + "message": "Popout-Erweiterung" + }, + "launchDuo": { + "message": "DUO starten" + }, + "importFormatError": { + "message": "Die Daten sind nicht richtig formatiert. Kontrolliere bitte deine Import-Datei und versuche es erneut." + }, + "importNothingError": { + "message": "Es wurde nichts importiert." + }, + "importEncKeyError": { + "message": "Fehler beim Entschlüsseln der exportierten Datei. Dein Verschlüsselungscode stimmt nicht mit dem beim Export verwendeten Verschlüsselungscode überein." + }, + "invalidFilePassword": { + "message": "Ungültiges Dateipasswort. Bitte verwende das Passwort, das du beim Erstellen der Exportdatei eingegeben hast." + }, + "importDestination": { + "message": "Import-Ziel" + }, + "learnAboutImportOptions": { + "message": "Erfahre mehr über deine Importoptionen" + }, + "selectImportFolder": { + "message": "Ordner auswählen" + }, + "selectImportCollection": { + "message": "Sammlung auswählen" + }, + "importTargetHint": { + "message": "Wähle diese Option, wenn der importierte Dateiinhalt in eine(n) $DESTINATION$ verschoben werden soll", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Die Datei enthält nicht zugewiesene Einträge." + }, + "selectFormat": { + "message": "Wähle das Format der Import-Datei" + }, + "selectImportFile": { + "message": "Wähle die Import-Datei aus" + }, + "chooseFile": { + "message": "Datei auswählen" + }, + "noFileChosen": { + "message": "Keine Datei ausgewählt" + }, + "orCopyPasteFileContents": { + "message": "oder kopiere und füge den Inhalt der Import-Datei hier ein" + }, + "instructionsFor": { + "message": "Anleitung für $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Tresor-Import bestätigen" + }, + "confirmVaultImportDesc": { + "message": "Diese Datei ist passwortgeschützt. Bitte gib das Dateipasswort ein, um Daten zu importieren." + }, + "confirmFilePassword": { + "message": "Dateipasswort bestätigen" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey wird nicht kopiert" + }, + "passkeyNotCopiedAlert": { + "message": "Der Passkey wird nicht in den duplizierten Eintrag kopiert. Möchtest du mit dem Duplizieren dieses Eintrags fortfahren?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Überprüfung durch die initiierende Website erforderlich. Diese Funktion ist noch nicht für Konten ohne Master-Passwort implementiert." + }, + "logInWithPasskey": { + "message": "Mit Passkey anmelden?" + }, + "passkeyAlreadyExists": { + "message": "Für diese Anwendung existiert bereits ein Passkey." + }, + "noPasskeysFoundForThisApplication": { + "message": "Keine Passkeys für diese Anwendung gefunden." + }, + "noMatchingPasskeyLogin": { + "message": "Du hast keinen passenden Zugangsdaten für diese Website." + }, + "confirm": { + "message": "Bestätigen" + }, + "savePasskey": { + "message": "Passkey speichern" + }, + "savePasskeyNewLogin": { + "message": "Passkey als neue Zugangsdaten speichern" + }, + "choosePasskey": { + "message": "Wähle Zugangsdaten aus, in die dieser Passkey gespeichert werden sollen" + }, + "passkeyItem": { + "message": "Passkey-Eintrag" + }, + "overwritePasskey": { + "message": "Passkey überschreiben?" + }, + "overwritePasskeyAlert": { + "message": "Dieser Eintrag enthält bereits einen Passkey. Bist du sicher, dass du den aktuellen Passkey überschreiben möchtest?" + }, + "featureNotSupported": { + "message": "Funktion wird noch nicht unterstützt" + }, + "yourPasskeyIsLocked": { + "message": "Authentifizierung erforderlich, um Passkeys zu verwenden. Verifiziere deine Identität, um fortzufahren." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifaktor-Authentifizierung abgebrochen" + }, + "noLastPassDataFound": { + "message": "Keine LastPass-Daten gefunden" + }, + "incorrectUsernameOrPassword": { + "message": "Falscher Benutzername oder Passwort" + }, + "incorrectPassword": { + "message": "Falsches Passwort" + }, + "incorrectCode": { + "message": "Falscher Code" + }, + "incorrectPin": { + "message": "Falsche PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifaktor-Authentifizierung fehlgeschlagen" + }, + "includeSharedFolders": { + "message": "Geteilte Ordner mit einbeziehen" + }, + "lastPassEmail": { + "message": "LastPass E-Mail-Adresse" + }, + "importingYourAccount": { + "message": "Importiere dein Konto..." + }, + "lastPassMFARequired": { + "message": "LastPass Multifaktor-Authentifizierung erforderlich" + }, + "lastPassMFADesc": { + "message": "Gib deinen Einmal-Zugangscode aus deiner Authentifizierungs-App ein" + }, + "lastPassOOBDesc": { + "message": "Bestätige die Anmeldeanfrage in deiner Authentifizierungs-App oder gib einen Einmal-Zugangscode ein." + }, + "passcode": { + "message": "Zugangscode" + }, + "lastPassMasterPassword": { + "message": "LastPass Master-Passwort" + }, + "lastPassAuthRequired": { + "message": "LastPass Authentifizierung erforderlich" + }, + "awaitingSSO": { + "message": "Warte auf SSO-Authentifizierung" + }, + "awaitingSSODesc": { + "message": "Bitte melde dich weiterhin mit deinen Firmenzugangsdaten an." + }, + "seeDetailedInstructions": { + "message": "Detaillierte Anleitungen auf unserer Hilfeseite unter", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Direkt aus LastPass importieren" + }, + "importFromCSV": { + "message": "Aus CSV importieren" + }, + "lastPassTryAgainCheckEmail": { + "message": "Versuche es erneut oder suche nach einer E-Mail von LastPass, um zu verifizieren, dass du es bist." + }, + "collection": { + "message": "Sammlung" + }, + "lastPassYubikeyDesc": { + "message": "Stecke den YubiKey, der mit deinem LastPass Konto verknüpft ist, in den USB-Port deines Computers und drücke dann den Knopf des YubiKey." + }, + "switchAccount": { + "message": "Konto wechseln" + }, + "switchAccounts": { + "message": "Konten wechseln" + }, + "switchToAccount": { + "message": "Zum Konto wechseln" + }, + "activeAccount": { + "message": "Aktives Konto" + }, + "availableAccounts": { + "message": "Verfügbare Konten" + }, + "accountLimitReached": { + "message": "Kontolimit erreicht. Von einem Konto abmelden, um ein anderes hinzuzufügen." + }, + "active": { + "message": "aktiv" + }, + "locked": { + "message": "gesperrt" + }, + "unlocked": { + "message": "entsperrt" + }, + "server": { + "message": "Server" + }, + "hostedAt": { + "message": "gehostet in" + }, + "useDeviceOrHardwareKey": { + "message": "Gerät oder Hardware-Schlüssel verwenden" + }, + "justOnce": { + "message": "Nur einmal" + }, + "alwaysForThisSite": { + "message": "Immer für diese Seite" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ zu ausgeschlossenen Domains hinzugefügt.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Gängigste Formate", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Bitwarden zum Standard-Passwort-Manager machen?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Das Ignorieren dieser Option kann zu Konflikten zwischen dem Bitwarden Auto-Ausfüllen Menü und dem Browser führen.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Bitwarden zum Standard-Passwort-Manager machen", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Bitwarden konnte nicht als Standard-Passwort-Manager festgelegt werden", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Du musst Bitwarden Zugriff für die Browser-Datenschutzberechtigungen erteilen, um Bitwarden als Standard-Passwort-Manager festzulegen.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Als Standard festlegen", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Zugangsdaten erfolgreich gespeichert!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Zugangsdaten erfolgreich aktualisiert!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Fehler beim Speichern der Zugangsdaten. Details in der Konsole.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Passkey löschen" + }, + "passkeyRemoved": { + "message": "Passkey gelöscht" + }, + "unassignedItemsBanner": { + "message": "Hinweis: Nicht zugeordnete Organisationseinträge sind nicht mehr in der Ansicht aller Tresore sichtbar und nur über die Administrator-Konsole zugänglich. Weise diese Einträge einer Sammlung aus der Administrator-Konsole zu, um sie sichtbar zu machen." } } diff --git a/apps/browser/src/_locales/el/messages.json b/apps/browser/src/_locales/el/messages.json index 3279937f18..7bbc615dae 100644 --- a/apps/browser/src/_locales/el/messages.json +++ b/apps/browser/src/_locales/el/messages.json @@ -44,7 +44,7 @@ "message": "Η υπόδειξη του κύριου κωδικού μπορεί να σας βοηθήσει να θυμηθείτε τον κωδικό σας, σε περίπτωση που τον ξεχάσετε." }, "reTypeMasterPass": { - "message": "Εισάγετε Ξανά τον Κύριο Κωδικό σας" + "message": "Πληκτρολογήστε ξανά τον Κύριο Κωδικό" }, "masterPassHint": { "message": "Υπόδειξη Κύριου Κωδικού (προαιρετικό)" @@ -91,6 +91,15 @@ "autoFill": { "message": "Αυτόματη συμπλήρωση" }, + "autoFillLogin": { + "message": "Αυτόματη συμπλήρωση σύνδεσης" + }, + "autoFillCard": { + "message": "Αυτόματη συμπλήρωση κάρτας" + }, + "autoFillIdentity": { + "message": "Αυτόματη συμπλήρωση ταυτότητας" + }, "generatePasswordCopied": { "message": "Δημιουργία Κωδικού (αντιγράφηκε)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Δεν υπάρχουν αντιστοιχίσεις σύνδεσης." }, + "noCards": { + "message": "Δεν υπάρχουν κάρτες" + }, + "noIdentities": { + "message": "Δεν υπάρχουν ταυτότητες" + }, + "addLoginMenu": { + "message": "Προσθήκη Στοιχείων Σύνδεσης" + }, + "addCardMenu": { + "message": "Προσθήκη κάρτας" + }, + "addIdentityMenu": { + "message": "Προσθήκη ταυτότητας" + }, "unlockVaultMenu": { "message": "Ξεκλειδώστε το vault σας" }, @@ -244,6 +268,9 @@ "length": { "message": "Μήκος" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Κεφαλαία (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Κωδικός" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Συνθηματικό" }, @@ -338,6 +368,12 @@ "other": { "message": "Άλλες" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Ρυθμίστε μια μέθοδο ξεκλειδώματος για να αλλάξετε την ενέργεια χρονικού ορίου θησαυ/κιου." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Βαθμολογήστε την επέκταση" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Κλείδωμα Τώρα" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Άμεσα" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Ο λογαριασμός σας έχει δημιουργηθεί! Τώρα μπορείτε να συνδεθείτε." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "Σας στείλαμε ένα email με την υπόδειξη του κύριου κωδικού." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Δεν είναι δυνατή η αυτόματη συμπλήρωση του επιλεγμένου στοιχείου σε αυτήν τη σελίδα. Αντιγράψτε και επικολλήστε τις πληροφορίες." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Αποσυνδεθήκατε" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Η \"Προσθήκη Ειδοποίησης Σύνδεσης\" σας προτρέπει αυτόματα να αποθηκεύσετε νέες συνδέσεις στο vault σας κάθε φορά που θα συνδεθείτε για πρώτη φορά." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Εμφάνιση καρτών στη σελίδα Καρτέλας" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Ζητήστε να ενημερώσετε τον κωδικό πρόσβασης μιας σύνδεσης όταν εντοπιστεί μια αλλαγή σε μια ιστοσελίδα." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Θέλετε να ενημερώσετε αυτό τον κωδικό στο Bitwarden ;" }, "notificationChangeSave": { "message": "Ναι, Ενημέρωση Τώρα" }, + "notificationUnlockDesc": { + "message": "Ξεκλειδώστε το θησαυ/κιο Bitwarden σας για να ολοκληρώσετε το αίτημα αυτόματης πλήρωσης." + }, + "notificationUnlock": { + "message": "Ξεκλείδωμα" + }, "enableContextMenuItem": { "message": "Εμφάνιση επιλογών μενού περιβάλλοντος" }, "contextMenuItemDesc": { "message": "Χρησιμοποιήστε ένα δευτερεύον κλικ για να αποκτήσετε πρόσβαση στη δημιουργία κωδικού πρόσβασης και να ταιριάξετε τις συνδέσεις για την ιστοσελίδα. " }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "Προεπιλεγμένη ανίχνευση αντιστοιχίας URI", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Αλλαγή χρώματος θέματος εφαρμογής." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Σκοτεινό", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Μη διαθέσιμο χαρακτηριστικό" }, - "updateKey": { - "message": "Δεν μπορείτε να χρησιμοποιήσετε αυτήν τη λειτουργία μέχρι να ενημερώσετε το κλειδί κρυπτογράφησης." + "encryptionKeyMigrationRequired": { + "message": "Απαιτείται μεταφορά κλειδιού κρυπτογράφησης. Παρακαλούμε συνδεθείτε μέσω του διαδικτυακού θησαυ/κιου για να ενημερώσετε το κλειδί κρυπτογράφησης." }, "premiumMembership": { "message": "Συνδρομή Premium" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB κρυπτογραφημένο αποθηκευτικό χώρο για συνημμένα αρχεία." }, - "ppremiumSignUpTwoStep": { - "message": "Πρόσθετες επιλογές σύνδεσης δύο βημάτων, όπως το YubiKey, το FIDO U2F και το Duo." + "premiumSignUpTwoStepOptions": { + "message": "Πρόσθετες επιλογές σύνδεσης δύο βημάτων, όπως το YubiKey και το Duo." }, "ppremiumSignUpReports": { "message": "Ασφάλεια κωδικών, υγεία λογαριασμού και αναφορές παραβίασης δεδομένων για να διατηρήσετε ασφαλές το vault σας." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Οι διευθύνσεις URL περιβάλλοντος έχουν αποθηκευτεί." }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Ενεργοποίηση αυτόματης συμπλήρωσης κατά την φόρτωση της σελίδας" }, @@ -988,7 +1094,7 @@ "message": "Μπορείτε να απενεργοποιήσετε την αυτόματη συμπλήρωση φόρτωσης σελίδας για μεμονωμένα στοιχεία σύνδεσης από την προβολή Επεξεργασία στοιχείου." }, "itemAutoFillOnPageLoad": { - "message": "Αυτόματη συμπλήρωση της Φόρτισης Σελίδας (αν είναι ενεργοποιημένη στις Επιλογές)" + "message": "Αυτόματη συμπλήρωση κατά τη φόρτωση της σελίδας (αν έχει ενεργοποιηθεί στις Ρυθμίσεις)" }, "autoFillOnPageLoadUseDefault": { "message": "Χρήση προεπιλεγμένης ρύθμισης" @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Εμφάνιση μιας αναγνωρίσιμης εικόνας δίπλα σε κάθε σύνδεση." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Εμφάνιση μετρητή εμβλημάτων" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Μη έγκυρος κωδικός PIN." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Ξεκλείδωμα με βιομετρικά στοιχεία" }, @@ -1429,7 +1541,7 @@ "message": "Αναζήτηση Κάδου" }, "permanentlyDeleteItem": { - "message": "Μόνιμη Διαγραφή Αντικειμένου" + "message": "Οριστική διαγραφή αντικειμένου" }, "permanentlyDeleteItemConfirmation": { "message": "Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα αυτό το στοιχείο;" @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Ανάκτηση Στοιχείου" }, - "restoreItemConfirmation": { - "message": "Είστε βέβαιοι ότι θέλετε να ανακτήσετε αυτό το στοιχείο;" - }, "restoredItem": { "message": "Στοιχείο που έχει Ανακτηθεί" }, @@ -1465,13 +1574,13 @@ "message": "Προειδοποίηση: Αυτή είναι μια μη ασφαλή σελίδα HTTP και οποιαδήποτε πληροφορία υποβάλλετε μπορεί να γίνει ορατή και επεμβάσιμη από άλλους. Αυτή η σύνδεση αποθηκεύτηκε αρχικά σε μια ασφαλή (HTTPS) σελίδα." }, "insecurePageWarningFillPrompt": { - "message": "Do you still wish to fill this login?" + "message": "Θέλετε ακόμα να συμπληρώσετε αυτή τη σύνδεση;" }, "autofillIframeWarning": { "message": "Η φόρμα φιλοξενείται από διαφορετικό τομέα (domain) από το λινκ (uri) της αποθηκευμένης σύνδεσης σας (login). Επιλέξτε OK για αυτόματη συμπλήρωση, ή Ακύρωση για να σταματήσετε." }, "autofillIframeWarningTip": { - "message": "To prevent this warning in the future, save this URI, $HOSTNAME$, to your Bitwarden login item for this site.", + "message": "Για να αποτρέψετε αυτή την προειδοποίηση στο μέλλον, αποθηκεύστε αυτό το URI, $HOSTNAME$, στο στοιχείο σύνδεσης Bitwarden σας για αυτόν τον ιστότοπο.", "placeholders": { "hostname": { "content": "$1", @@ -1480,13 +1589,13 @@ } }, "setMasterPassword": { - "message": "Ορισμός Κύριου Κωδικού" + "message": "Καθορισμός κύριου κωδικού" }, "currentMasterPass": { "message": "Τρέχων Κύριος Κωδικός" }, "newMasterPass": { - "message": "Νέος Κύριος Κωδικός" + "message": "Νέος κύριος κωδικός" }, "confirmNewMasterPass": { "message": "Επιβεβαίωση Νέου Κύριου Κωδικού" @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Τα βιομετρικά στοιχεία του προγράμματος περιήγησης δεν υποστηρίζονται σε αυτήν τη συσκευή." }, + "biometricsFailedTitle": { + "message": "Ο βιομετρικός έλεγχος απέτυχε" + }, + "biometricsFailedDesc": { + "message": "Τα βιομετρικά δεν μπόρεσαν να ολοκληρωθούν, σκεφτείτε να χρησιμοποιήσετε έναν κύριο κωδικό πρόσβασης ή να αποσυνδεθείτε. Αν αυτό εξακολουθεί να συμβαίνει, παρακαλώ επικοινωνήστε με την υποστήριξη της Bitwarden." + }, "nativeMessaginPermissionErrorTitle": { "message": "Δεν Έχει Χορηγηθεί Άδεια" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Μια πολιτική του οργανισμού, επηρεάζει τις επιλογές ιδιοκτησίας σας." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Μια οργανωτική πολιτική έχει αποτρέψει την εισαγωγή στοιχείων στο προσωπικό θησαυ/κιο σας." + }, "excludedDomains": { "message": "Εξαιρούμενοι Τομείς" }, "excludedDomainsDesc": { "message": "Το Bitwarden δεν θα ζητήσει να αποθηκεύσετε τα στοιχεία σύνδεσης για αυτούς τους τομείς. Πρέπει να ανανεώσετε τη σελίδα για να τεθούν σε ισχύ οι αλλαγές." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "Το $DOMAIN$ δεν είναι έγκυρος τομέας", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Επιλέξτε φάκελο..." }, - "ssoCompleteRegistration": { - "message": "Για να ολοκληρώσετε τη σύνδεση με SSO, ορίστε έναν κύριο κωδικό πρόσβασης για πρόσβαση και προστασία του vault σας." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Ώρες" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Εξαγωγή Προσωπικού Vault" }, - "exportingPersonalVaultDescription": { - "message": "Θα εξαχθούν μόνο τα προσωπικά αντικείμενα Vault που σχετίζονται με το $EMAIL$ . Τα αντικείμενα Vault οργανισμού δεν θα συμπεριληφθούν.", + "exportingIndividualVaultDescription": { + "message": "Μόνο τα μεμονωμένα αντικείμενα θησαυ/κιου που σχετίζονται με το $EMAIL$ θα εξαχθούν. Τα αντικείμενα θησαυ/κιου οργανισμού δε θα συμπεριληφθούν. Μόνο πληροφορίες αντικειμένων θησαυ/κιου θα εξαχθούν και δε θα περιλαμβάνουν συσχετιζόμενα συνημμένα.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Έκδοση διακομιστή" }, - "selfHosted": { - "message": "Αυτο-φιλοξενείται" + "selfHostedServer": { + "message": "αυτο-φιλοξενούμενο" }, "thirdParty": { "message": "Τρίτο μέρος" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Μια ειδοποίηση έχει σταλεί στη συσκευή σας." }, - "logInInitiated": { + "loginInitiated": { "message": "Η σύνδεση ξεκίνησε" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Πώς να συμπληρώσετε αυτόματα" }, "autofillSelectInfoWithCommand": { - "message": "Επιλέξτε ένα στοιχείο από αυτή τη σελίδα ή χρησιμοποιήστε τη συντόμευση: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Επιλέξτε ένα στοιχείο από αυτή τη σελίδα ή ορίστε μια συντόμευση στις ρυθμίσεις." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Το κατάλαβα" @@ -2221,27 +2355,658 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Σύνδεση ως" }, "opensInANewWindow": { "message": "Ανοίγει σε νέο παράθυρο" }, - "eu": { - "message": "EU", - "description": "European Union" + "deviceApprovalRequired": { + "message": "Απαιτείται έγκριση συσκευής. Επιλέξτε μια επιλογή έγκρισης παρακάτω:" }, - "us": { - "message": "US", - "description": "United States" + "rememberThisDevice": { + "message": "Απομνημόνευση αυτής της συσκευής" + }, + "uncheckIfPublicDevice": { + "message": "Αποεπιλέξτε αν γίνεται χρήση δημόσιας συσκευής" + }, + "approveFromYourOtherDevice": { + "message": "Έγκριση από άλλη συσκευή σας" + }, + "requestAdminApproval": { + "message": "Αίτηση έγκρισης διαχειριστή" + }, + "approveWithMasterPassword": { + "message": "Έγκριση με τον κύριο κωδικό" + }, + "ssoIdentifierRequired": { + "message": "Απαιτείται αναγνωριστικό οργανισμού SSO." + }, + "eu": { + "message": "ΕΕ", + "description": "European Union" }, "accessDenied": { "message": "Δεν επιτρέπεται η πρόσβαση. Δεν έχετε άδεια για να δείτε αυτή τη σελίδα." }, "general": { - "message": "General" + "message": "Γενικά" }, "display": { - "message": "Display" + "message": "Εμφάνιση" + }, + "accountSuccessfullyCreated": { + "message": "Επιτυχής δημιουργία λογαριασμού!" + }, + "adminApprovalRequested": { + "message": "Ζητήθηκε έγκριση διαχειριστή" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Το αίτημά σας εστάλη στον διαχειριστή σας." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Θα ειδοποιηθείτε μόλις εγκριθεί." + }, + "troubleLoggingIn": { + "message": "Δεν μπορείτε να συνδεθείτε;" + }, + "loginApproved": { + "message": "Η σύνδεση εγκρίθηκε" + }, + "userEmailMissing": { + "message": "Το email του χρήστη απουσιάζει" + }, + "deviceTrusted": { + "message": "Αξιόπιστη συσκευή" + }, + "inputRequired": { + "message": "Απαιτείται εισαγωγή." + }, + "required": { + "message": "απαιτείται" + }, + "search": { + "message": "Αναζήτηση" + }, + "inputMinLength": { + "message": "Η καταχώρηση πρέπει να είναι τουλάχιστον $COUNT$ χαρακτήρες.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Η καταχώρηση δεν πρέπει να υπερβαίνει τους $COUNT$ χαρακτήρες σε μήκος.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Οι ακόλουθοι χαρακτήρες δεν επιτρέπονται: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Η τιμή καταχώρησης πρέπει να είναι τουλάχιστον $MIN$", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Η τιμή καταχώρησης δεν πρέπει να υπερβαίνει το $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 ή περισσότερα email δεν είναι έγκυρα" + }, + "inputTrimValidator": { + "message": "Η καταχώρηση δεν πρέπει να περιέχει μόνο κενά.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Η καταχώρηση δεν είναι διεύθυνση email." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ Το/α παραπάνω πεδίo/α χρειάζονται την προσοχή σας.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Επιλογή --" + }, + "multiSelectPlaceholder": { + "message": "-- Πληκτρολογήστε για φιλτράρισμα --" + }, + "multiSelectLoading": { + "message": "Ανάκτηση επιλογών..." + }, + "multiSelectNotFound": { + "message": "Δεν βρέθηκαν αντικείμενα" + }, + "multiSelectClearAll": { + "message": "Εκκαθάριση όλων" + }, + "plusNMore": { + "message": "+ $QUANTITY$ περισσότερα", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Υπομενού" + }, + "toggleCollapse": { + "message": "Εναλλαγή σύμπτυξης", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Συνώνυμο domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Εισαγωγή δεδομένων", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Σφάλμα κατά την εισαγωγή" + }, + "importErrorDesc": { + "message": "Παρουσιάστηκε πρόβλημα με τα δεδομένα που επιχειρήσατε να εισαγάγετε. Παρακαλώ επιλύστε τα σφάλματα που αναφέρονται παρακάτω στο αρχείο προέλευσης και προσπαθήστε ξανά." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Επιλύστε τα παρακάτω σφάλματα και προσπαθήστε ξανά." + }, + "description": { + "message": "Περιγραφή" + }, + "importSuccess": { + "message": "Τα δεδομένα εισήχθησαν επιτυχώς" + }, + "importSuccessNumberOfItems": { + "message": "Ένα σύνολο $AMOUNT$ στοιχείων εισήχθησαν.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Σύνολο" + }, + "importWarning": { + "message": "Εισαγάγετε δεδομένα στο $ORGANIZATION$. Τα δεδομένα σας μπορεί να μοιραστούν με μέλη αυτού του οργανισμού. Θέλετε να συνεχίσετε;", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Τα δεδομένα δεν έχουν διαμορφωθεί σωστά. Ελέγξτε το αρχείο εισαγωγής και δοκιμάστε ξανά." + }, + "importNothingError": { + "message": "Τίποτα δεν εισήχθη." + }, + "importEncKeyError": { + "message": "Σφάλμα αποκρυπτογράφησης του εξαγόμενου αρχείου. Το κλειδί κρυπτογράφησης δεν ταιριάζει με το κλειδί κρυπτογράφησης που χρησιμοποιήθηκε για την εξαγωγή των δεδομένων." + }, + "invalidFilePassword": { + "message": "Μη έγκυρος κωδικός πρόσβασης, παρακαλώ χρησιμοποιήστε τον κωδικό πρόσβασης που εισαγάγατε όταν δημιουργήσατε το αρχείο εξαγωγής." + }, + "importDestination": { + "message": "Προορισμός εισαγωγής" + }, + "learnAboutImportOptions": { + "message": "Μάθετε για τις επιλογές εισαγωγής σας" + }, + "selectImportFolder": { + "message": "Επιλέξτε ένα φάκελο" + }, + "selectImportCollection": { + "message": "Επιλέξτε μια συλλογή" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Το αρχείο περιέχει μη συσχετισμένα στοιχεία." + }, + "selectFormat": { + "message": "Επιλέξτε τη μορφή του αρχείου εισαγωγής" + }, + "selectImportFile": { + "message": "Επιλέξτε το αρχείο εισαγωγής" + }, + "chooseFile": { + "message": "Επιλογή Αρχείου" + }, + "noFileChosen": { + "message": "Δεν επιλέχθηκε κανένα αρχείο" + }, + "orCopyPasteFileContents": { + "message": "ή αντιγράψτε/επικολλήστε τα περιεχόμενα του αρχείου εισαγωγής" + }, + "instructionsFor": { + "message": "$NAME$ Οδηγίες", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Επιβεβαίωση εισαγωγής θησαυροφυλακίου" + }, + "confirmVaultImportDesc": { + "message": "Αυτό το αρχείο προστατεύεται με κωδικό πρόσβασης. Παρακαλώ εισαγάγετε τον κωδικό πρόσβασης για την εισαγωγή δεδομένων." + }, + "confirmFilePassword": { + "message": "Επιβεβαίωση κωδικού πρόσβασης αρχείου" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Απαιτείται επαλήθευση από τον ιστότοπο εκκίνησης. Αυτή η λειτουργία δεν έχει ακόμα υλοποιηθεί για λογαριασμούς χωρίς τον κύριο κωδικό πρόσβασης." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "Δεν έχετε στοιχεία σύνδεσης που να συνδυάζονται με αυτόν τον ιστότοπο." + }, + "confirm": { + "message": "Επιβεβαίωση" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Η λειτουργία δεν υποστηρίζεται ακόμη" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Ο πολυμερής έλεγχος ταυτότητας ακυρώθηκε" + }, + "noLastPassDataFound": { + "message": "Δεν βρέθηκαν δεδομένα LastPass" + }, + "incorrectUsernameOrPassword": { + "message": "Λάθος όνομα χρήστη ή κωδικού πρόσβασης" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Ο πολυμερής έλεγχος ταυτότητας απέτυχε" + }, + "includeSharedFolders": { + "message": "Συμπερίληψη κοινόχρηστων φακέλων" + }, + "lastPassEmail": { + "message": "Διεύθυνση Αλληλογραφίας Lastpass" + }, + "importingYourAccount": { + "message": "Εισαγωγή του λογαριασμού σας..." + }, + "lastPassMFARequired": { + "message": "Απαιτείται πολυμερής ταυτοποίηση LastPass" + }, + "lastPassMFADesc": { + "message": "Εισαγάγετε τον κωδικό μιας χρήσης από την εφαρμογή ελέγχου ταυτότητας" + }, + "lastPassOOBDesc": { + "message": "Εγκρίνετε το αίτημα σύνδεσης στην εφαρμογή ελέγχου ταυτότητας ή εισαγάγετε έναν κωδικό πρόσβασης μιας χρήσης." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "Κύριος κωδικός πρόσβασης LastPass" + }, + "lastPassAuthRequired": { + "message": "Απαιτείται ταυτοποίηση LastPass" + }, + "awaitingSSO": { + "message": "Αναμονή ελέγχου ταυτότητας SSO" + }, + "awaitingSSODesc": { + "message": "Παρακαλούμε συνεχίστε τη σύνδεση χρησιμοποιώντας τα στοιχεία της εταιρείας σας." + }, + "seeDetailedInstructions": { + "message": "Δείτε λεπτομερείς οδηγίες στην ιστοσελίδα βοήθειας μας στο", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Εισαγωγή απευθείας από το LastPass" + }, + "importFromCSV": { + "message": "Εισαγωγή από CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Δοκιμάστε ξανά ή ψάξτε για ένα email από το LastPass για να επιβεβαιώσετε ότι είστε εσείς." + }, + "collection": { + "message": "Συλλογή" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json index 63dd227e52..4108db3996 100644 --- a/apps/browser/src/_locales/en/messages.json +++ b/apps/browser/src/_locales/en/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-fill" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "Length" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Password" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Passphrase" }, @@ -338,6 +368,12 @@ "other": { "message": "Other" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Immediately" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Your new account has been created! You may now log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We've sent you an email with your master password hint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Ask to add an item if one isn't found in your vault." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,6 +684,15 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, @@ -640,7 +709,10 @@ "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "Default URI match detection", @@ -655,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Dark", "description": "Dark color" @@ -768,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium membership" @@ -792,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." @@ -975,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" }, @@ -1067,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1396,6 +1499,9 @@ "invalidPin": { "message": "Invalid PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1446,9 +1552,6 @@ "restoreItem": { "message": "Restore item" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Item restored" }, @@ -1605,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1623,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1889,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired" : { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1985,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2086,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2146,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2186,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2195,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2233,11 +2361,30 @@ "opensInANewWindow": { "message": "Opens in a new window" }, - "usDomain": { - "message": "bitwarden.com" + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" }, - "euDomain": { - "message": "bitwarden.eu" + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, + "eu": { + "message": "EU", + "description": "European Union" }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." @@ -2247,5 +2394,622 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername" : { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." + }, + "unassignedItemsBannerSelfHost": { + "message": "Notice: On May 2, 2024, unassigned organization items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/en_GB/messages.json b/apps/browser/src/_locales/en_GB/messages.json index 4efd5dafa5..1c24106cdc 100644 --- a/apps/browser/src/_locales/en_GB/messages.json +++ b/apps/browser/src/_locales/en_GB/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-fill" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "Length" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Password" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Passphrase" }, @@ -338,6 +368,12 @@ "other": { "message": "Other" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Immediately" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Your new account has been created! You may now log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We've sent you an email with your master password hint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Ask to add an item if one isn't found in your vault." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, "notificationChangeSave": { "message": "Update" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { "message": "Use a secondary click to access password generation and matching logins for the website. " }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "Default URI match detection", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's colour theme." }, + "themeDescAlt": { + "message": "Change the application's colour theme. Applies to all logged in accounts." + }, "dark": { "message": "Dark", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" }, @@ -976,7 +1082,7 @@ "message": "If a login form is detected, auto-fill when the web page loads." }, "experimentalFeature": { - "message": "Compromised or untrusted websites can exploit autofill on page load." + "message": "Compromised or untrusted websites can exploit auto-fill on page load." }, "learnMoreAboutAutofill": { "message": "Learn more about auto-fill" @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognisable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognisable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Invalid PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restore item" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Item restored" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organisation policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organisation policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organisation permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organisation requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organisation vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organisation vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2174,13 +2308,13 @@ } }, "autofillPageLoadPolicyActivated": { - "message": "Your organization policies have turned on auto-fill on page load." + "message": "Your organisation policies have turned on auto-fill on page load." }, "howToAutofill": { "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organisation SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organisation. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used to export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organisation items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/en_IN/messages.json b/apps/browser/src/_locales/en_IN/messages.json index 7b960102d9..f1a4979766 100644 --- a/apps/browser/src/_locales/en_IN/messages.json +++ b/apps/browser/src/_locales/en_IN/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-fill" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins." }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "Length" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Password" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Passphrase" }, @@ -338,6 +368,12 @@ "other": { "message": "Other" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Immediately" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Your new account has been created! You may now log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We've sent you an email with your master password hint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "The \"add login notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, "notificationChangeSave": { "message": "Yes, update now" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { "message": "Use a secondary click to access password generation and matching logins for the website. " }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "Default URI match detection", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's colour theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Dark", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "The environment URLs have been saved." }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Enable auto-fill on page load" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Invalid PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restore item" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Restored item" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded Domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting Personal Vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server Version" }, - "selfHosted": { - "message": "Self-Hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-Party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/es/messages.json b/apps/browser/src/_locales/es/messages.json index 6adc180c98..31200031f6 100644 --- a/apps/browser/src/_locales/es/messages.json +++ b/apps/browser/src/_locales/es/messages.json @@ -17,7 +17,7 @@ "message": "Crear cuenta" }, "login": { - "message": "Identificarse" + "message": "Iniciar sesión" }, "enterpriseSingleSignOn": { "message": "Inicio de sesión único empresarial" @@ -91,6 +91,15 @@ "autoFill": { "message": "Autorellenar" }, + "autoFillLogin": { + "message": "Autocompletar inicio de sesión" + }, + "autoFillCard": { + "message": "Autocompletar tarjeta" + }, + "autoFillIdentity": { + "message": "Autocompletar identidad" + }, "generatePasswordCopied": { "message": "Generar contraseña (copiada)" }, @@ -98,7 +107,22 @@ "message": "Copiar Nombre del campo personalizado" }, "noMatchingLogins": { - "message": "Sin entradas coincidentes." + "message": "Sin entradas coincidentes" + }, + "noCards": { + "message": "No hay tarjetas" + }, + "noIdentities": { + "message": "No hay identidades" + }, + "addLoginMenu": { + "message": "Agregar inicio de sesión" + }, + "addCardMenu": { + "message": "Agregar tarjeta" + }, + "addIdentityMenu": { + "message": "Agregar identidad" }, "unlockVaultMenu": { "message": "Desbloquea la caja fuerte" @@ -244,6 +268,9 @@ "length": { "message": "Longitud" }, + "passwordMinLength": { + "message": "Longitud mínima de contraseña" + }, "uppercase": { "message": "Mayúsculas (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Contraseña" }, + "totp": { + "message": "Secreto de autenticador" + }, "passphrase": { "message": "Frase de contraseña" }, @@ -338,6 +368,12 @@ "other": { "message": "Otros" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Configura un método de desbloqueo para cambiar tu acción de cierre de la bóveda." + }, + "unlockMethodNeeded": { + "message": "Configure un método de desbloqueo en Configuración" + }, "rateExtension": { "message": "Valora la extensión" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Bloquear" }, + "lockAll": { + "message": "Bloquear todo" + }, "immediately": { "message": "Inmediatamente" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "¡Tu nueva cuenta ha sido creada! Ahora puedes acceder." }, + "youSuccessfullyLoggedIn": { + "message": "Accedió correctamente a su cuenta" + }, + "youMayCloseThisWindow": { + "message": "Puede cerrar esta ventana" + }, "masterPassSent": { "message": "Te hemos enviado un correo electrónico con la pista de tu contraseña maestra." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "No se ha podido autorellenar la entrada seleccionada en esta página. Copia/pega tu usuario y/o contraseña." }, + "totpCaptureError": { + "message": "No se puede escanear el código QR desde la página web actual" + }, + "totpCaptureSuccess": { + "message": "Clave de autenticador añadida" + }, + "totpCapture": { + "message": "Escanee el código QR del autenticador desde la página web actual" + }, + "copyTOTP": { + "message": "Copiar clave de autenticador (TOTP)" + }, "loggedOut": { "message": "Sesión terminada" }, @@ -556,7 +613,7 @@ "message": "Elemento editado" }, "deleteItemConfirmation": { - "message": "¿Estás seguro de que quieres eliminar este elemento?" + "message": "¿Seguro que quieres enviarlo a la papelera?" }, "deletedItem": { "message": "Elemento enviado a la papelera" @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "La opción \"Notificación para añadir entradas\" pregunta automáticamente si quieres guardar nuevas entradas en tu caja fuerte cuando te identificas en un sitio web por primera vez." }, + "addLoginNotificationDescAlt": { + "message": "Pide que se agregue un elemento si no se encuentra uno en su caja fuerte. Se aplica a todas las cuentas que hayan iniciado sesión." + }, "showCardsCurrentTab": { "message": "Mostrar las tarjetas en la pestaña" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Solicitar la actualización de los datos de inicio de sesión existentes cuando se detecte un cambio en un sitio web." }, + "changedPasswordNotificationDescAlt": { + "message": "Solicitar actualizar la contraseña de una cuenta cuando se detecta un cambio en un sitio web. Se aplica a todas las cuentas accedidas." + }, + "enableUsePasskeys": { + "message": "Solicitar guardar y usar claves de acceso" + }, + "usePasskeysDesc": { + "message": "Solicitar guardar claves de paso nuevas o acceder con claves de paso almacenadas en su caja fuerte. Se aplica a todas las cuentas accedidas." + }, "notificationChangeDesc": { "message": "¿Desea actualizar esta contraseña en Bitwarden?" }, "notificationChangeSave": { "message": "Actualizar" }, + "notificationUnlockDesc": { + "message": "Desbloquea tu bóveda Bitwarden para completar la solicitud de autollenado." + }, + "notificationUnlock": { + "message": "Desbloquear" + }, "enableContextMenuItem": { "message": "Mostrar las opciones de menú contextuales" }, "contextMenuItemDesc": { "message": "Haga clic con el botón secundario para acceder a la generación de contraseñas y a los inicios de sesión correspondientes al sitio web. " }, + "contextMenuItemDescAlt": { + "message": "Usar pulsación secundaria para acceder a la generación de contraseñas y cuentas coincidentes a los sitios web. Se aplica a todas las cuentas accedidas." + }, "defaultUriMatchDetection": { "message": "Detección por defecto de coincidencia de URI", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Cambiar el tema de la aplicación." }, + "themeDescAlt": { + "message": "Cambiar el tema de colores de la aplicación. Se aplica a todas las cuentas accedidas." + }, "dark": { "message": "Oscuro", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Característica no disponible" }, - "updateKey": { - "message": "No puedes usar esta característica hasta que actualices tu clave de cifrado." + "encryptionKeyMigrationRequired": { + "message": "Se requiere migración de la clave de cifrado. Por favor, inicie sesión a través de la caja fuerte para actualizar su clave de cifrado." }, "premiumMembership": { "message": "Membresía Premium" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB de espacio cifrado en disco para adjuntos." }, - "ppremiumSignUpTwoStep": { - "message": "Métodos de autenticación en dos pasos adicionales como YubiKey, FIDO U2F y Duo." + "premiumSignUpTwoStepOptions": { + "message": "Opciones de inicio de sesión con autenticación de dos pasos propietarios como YubiKey y Duo." }, "ppremiumSignUpReports": { "message": "Higiene de contraseña, salud de la cuenta e informes de violaciones de datos para mantener su caja fuerte segura." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Las URLs del entorno han sido guardadas." }, + "showAutoFillMenuOnFormFields": { + "message": "Mostrar menú de autocompletar en los campos del formulario", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Se aplica a todas las cuentas que hayan iniciado sesión." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Desactive la configuración del gestor de contraseñas del navegador para evitar conflictos." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Editar ajustes del navegador." + }, + "autofillOverlayVisibilityOff": { + "message": "Desactivado", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Cuando el campo esté seleccionado (en foco)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Cuando se seleccione el icono de relleno automático", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Habilitar autorrellenar al cargar la página" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Mostrar una imagen reconocible junto a cada inicio de sesión." }, + "faviconDescAlt": { + "message": "Mostrar una imagen reconocible junto a cada inicio de sesión. Se aplica a todas las cuentas conectadas." + }, "enableBadgeCounter": { "message": "Mostrar el contador numérico" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Código PIN inválido." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Demasiados intentos de entrada de PIN no válidos. Cerrando sesión." + }, "unlockWithBiometrics": { "message": "Desbloquear con biométricos" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restaurar elemento" }, - "restoreItemConfirmation": { - "message": "¿Estás seguro de que quieres restaurar este elemento?" - }, "restoredItem": { "message": "Elemento restaurado" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "La biometría del navegador no es compatible con este dispositivo." }, + "biometricsFailedTitle": { + "message": "Fallo de biométrica" + }, + "biometricsFailedDesc": { + "message": "No se pueden completar la biométrica, considere usar una contraseña maestra o cerrar la sesión. Si esto persiste, póngase en contacto con el soporte de Bitwarden." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permiso no proporcionado" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Una política de organización está afectando a sus opciones de propiedad." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Una política organizacional ha bloqueado la importación de elementos a su caja fuerte personal." + }, "excludedDomains": { "message": "Dominios excluidos" }, "excludedDomainsDesc": { "message": "Bitwarden no pedirá que se guarden los datos de acceso para estos dominios. Debe actualizar la página para que los cambios surtan efecto." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden no pedirá que se guarden los datos de acceso para estos dominios en todas las sesiones iniciadas. Debe actualizar la página para que los cambios surtan efecto." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ no es un dominio válido", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Seleccione carpeta..." }, - "ssoCompleteRegistration": { - "message": "Para completar el inicio de sesión con SSO, por favor establezca una contraseña maestra para acceder y proteger su caja fuerte." + "noFoldersFound": { + "message": "Ninguna carpeta encontrada", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Los permisos de la organización se han actualizado y se requiere el establecimiento de una contraseña maestra.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Su organización requiere que establezca una contraseña maestra.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Se requiere verificación", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Horas" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exportando caja fuerte personal" }, - "exportingPersonalVaultDescription": { - "message": "Solo se exportarán los elementos de la caja fuerte personal asociados a $EMAIL$. Los elementos de la caja fuerte de tu organización no se incluirán.", + "exportingIndividualVaultDescription": { + "message": "Solo se exportarán los elementos individuales de la caja fuerte asociados con $EMAIL$. Los elementos de la bóveda de la organización no se incluirán. Solo se exportará la información de los elementos individuales y no incluirá adjuntos asociados.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Versión del servidor" }, - "selfHosted": { - "message": "Autoalojado" + "selfHostedServer": { + "message": "autoalojado" }, "thirdParty": { "message": "Aplicaciones de terceros" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Se ha enviado una notificación a tu dispositivo." }, - "logInInitiated": { + "loginInitiated": { "message": "Inicio de sesión en proceso" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Cómo autorellenar" }, "autofillSelectInfoWithCommand": { - "message": "Seleccione un elemento de esta página o utilice el acceso directo: $COMMAND$", + "message": "Selecciona un elemento de esta pantalla, usa el acceso directo $COMMAND$ o explora otras opciones en ajustes.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Seleccione un elemento de esta página o establezca un acceso directo en los ajustes." + "message": "Seleccione un elemento de esta pantalla, o explore otras opciones en ajustes." }, "gotIt": { "message": "Entendido" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Región" + "loggingInOn": { + "message": "Iniciando sesión en" }, "opensInANewWindow": { "message": "Abre en una nueva ventana" }, + "deviceApprovalRequired": { + "message": "Se requiere aprobación del dispositivo. Seleccione una opción de aprobación a continuación:" + }, + "rememberThisDevice": { + "message": "Recordar este dispositivo" + }, + "uncheckIfPublicDevice": { + "message": "Desmarcar si se utiliza un dispositivo público" + }, + "approveFromYourOtherDevice": { + "message": "Apruebe desde otro dispositivo" + }, + "requestAdminApproval": { + "message": "Solicitar aprobación del administrador" + }, + "approveWithMasterPassword": { + "message": "Aprobar con contraseña maestra" + }, + "ssoIdentifierRequired": { + "message": "Se requiere un identificador único de inicio de sesión de la organización." + }, "eu": { "message": "Unión Europea", "description": "European Union" }, - "us": { - "message": "EE.UU.", - "description": "United States" - }, "accessDenied": { "message": "Acceso denegado. No tiene permiso para ver esta página." }, @@ -2242,6 +2393,620 @@ "message": "General" }, "display": { - "message": "Display" + "message": "Visualización" + }, + "accountSuccessfullyCreated": { + "message": "¡Cuenta creada con éxito!" + }, + "adminApprovalRequested": { + "message": "Aprobación del administrador solicitada" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Su solicitud ha sido enviada a su administrador." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Se le notificará una vez aprobado." + }, + "troubleLoggingIn": { + "message": "¿Problemas para iniciar sesión?" + }, + "loginApproved": { + "message": "Inicio de sesión aprobado" + }, + "userEmailMissing": { + "message": "Falta el correo electrónico del usuario" + }, + "deviceTrusted": { + "message": "Dispositivo de confianza" + }, + "inputRequired": { + "message": "Entrada requerida." + }, + "required": { + "message": "requerido" + }, + "search": { + "message": "Buscar" + }, + "inputMinLength": { + "message": "La entrada debe tener al menos $COUNT$ caracteres.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "La entrada no debe exceder los $COUNT$ caracteres de longitud.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Los siguientes caracteres no están permitidos: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "El valor de entrada debe ser por lo menos de $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "El valor de entrada no debe exceder $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "Una o más direcciones de correo electrónico no son válidas" + }, + "inputTrimValidator": { + "message": "La entrada no debe contener únicamente espacios en blanco.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "La entrada no es una dirección de correo electrónico." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ campo(s) anteriores necesitan su atención.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Seleccione --" + }, + "multiSelectPlaceholder": { + "message": "-- Escriba para filtrar --" + }, + "multiSelectLoading": { + "message": "Recuperando opciones..." + }, + "multiSelectNotFound": { + "message": "No hay elementos" + }, + "multiSelectClearAll": { + "message": "Borrar todo" + }, + "plusNMore": { + "message": "+ $QUANTITY$ más", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenú" + }, + "toggleCollapse": { + "message": "Colapsar/Expandir", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "¿Quiere importar sus datos a Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "¿Quiere proteger sus datos de LastPass e importarlos a Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Guardar como archivo no cifrado", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importar a Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importando...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Se importaron los datos correctamente.", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Se produjo un error al importar. Revise la consola para obtener detalles.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Se produjo un error de red durante la importación.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Seudónimo del dominio" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Los elementos que requieren la contraseña maestra no se pueden rellenar automáticamente al cargar la página. Se desactivó el autorrellenado de la página.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "El autorrellenado de la página está usando la configuración predeterminada.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Desactiva la solicitud de contraseña maestra para editar este campo", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Ir al contenido" + }, + "bitwardenOverlayButton": { + "message": "Botón de menú de autocompletar de Bitwarden", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Alternar menú de autocompletar de bitwarden", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Menú de autocompletar de Bitwarden", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Desbloquea tu cuenta para ver las entradas coincidentes", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Desbloquear la cuenta", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Rellenar credenciales para", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Nombre de usuario parcial", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No hay ningún elemento que mostrar", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Nuevo elemento", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Añadir elemento de caja fuerte nuevo", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Menú de relleno automático de Bitwarden disponible. Presione ↓ para seleccionar.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Activar" + }, + "ignore": { + "message": "Ignorar" + }, + "importData": { + "message": "Importar datos", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Error al importar" + }, + "importErrorDesc": { + "message": "Hubo un problema con los datos que intentaste importar. Por favor, resuelve los errores listados a continuación en tu archivo de origen e inténtalo de nuevo." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Corrige los siguientes errores e inténtalo de nuevo." + }, + "description": { + "message": "Descripción" + }, + "importSuccess": { + "message": "Datos importados correctamente" + }, + "importSuccessNumberOfItems": { + "message": "Un total de $AMOUNT$ elementos fueron importados.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Intentar de nuevo" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Se requiere verificación para efectuar esta acción. Establezca un NIP para continuar." + }, + "setPin": { + "message": "Establecer NIP" + }, + "verifyWithBiometrics": { + "message": "Verificar biométricamente" + }, + "awaitingConfirmation": { + "message": "Esperando confirmación" + }, + "couldNotCompleteBiometrics": { + "message": "No se pudo completar la biométrica." + }, + "needADifferentMethod": { + "message": "¿Necesita un método distinto?" + }, + "useMasterPassword": { + "message": "Usar contraseña maestra" + }, + "usePin": { + "message": "Usar NIP" + }, + "useBiometrics": { + "message": "Usar biométrica" + }, + "enterVerificationCodeSentToEmail": { + "message": "Introduzca el código de verificación que se ha enviado a su correo electrónico." + }, + "resendCode": { + "message": "Volver a enviar código" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "Estás importando datos a $ORGANIZATION$. Tus datos pueden ser compartidos con miembros de esta organización. ¿Quieres continuar?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Abra Duo y siga los pasos para terminar de iniciar sesión." + }, + "duoRequiredForAccount": { + "message": "Se requiere el inicio de sesión en dos pasos Duo para su cuenta." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Abra la extensión para completar el inicio de sesión." + }, + "popoutExtension": { + "message": "Abrir extensión" + }, + "launchDuo": { + "message": "Iniciar Duo" + }, + "importFormatError": { + "message": "Los datos no están formateados correctamente. Por favor, comprueba tu archivo de importación e inténtalo de nuevo." + }, + "importNothingError": { + "message": "No se ha importado nada." + }, + "importEncKeyError": { + "message": "Error al descifrar el archivo exportado. Su clave de cifrado no coincide con la clave de cifrado utilizada para exportar los datos." + }, + "invalidFilePassword": { + "message": "Contraseña de archivo no válida. Por favor utilice la contraseña que introdujo cuando creó el archivo de exportación." + }, + "importDestination": { + "message": "Importar destino" + }, + "learnAboutImportOptions": { + "message": "Aprende sobre tus opciones de importación" + }, + "selectImportFolder": { + "message": "Seleccione una carpeta" + }, + "selectImportCollection": { + "message": "Selecciona una colección" + }, + "importTargetHint": { + "message": "Selecciona esta opción si deseas que el contenido del archivo importado se mueva a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "El archivo contiene elementos no asignados." + }, + "selectFormat": { + "message": "Selecciona el formato del archivo a importar" + }, + "selectImportFile": { + "message": "Seleccionar el archivo a importar" + }, + "chooseFile": { + "message": "Seleccionar archivo" + }, + "noFileChosen": { + "message": "No se ha seleccionado ningún archivo" + }, + "orCopyPasteFileContents": { + "message": "o copia/pega el contenido del archivo a importar" + }, + "instructionsFor": { + "message": "Instrucciones para $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirmar la importación de la caja fuerte" + }, + "confirmVaultImportDesc": { + "message": "Este archivo está protegido por contraseña. Introduzca la contraseña del archivo para importar datos." + }, + "confirmFilePassword": { + "message": "Confirmar contraseña del archivo" + }, + "typePasskey": { + "message": "Clave de acceso" + }, + "passkeyNotCopied": { + "message": "La clave de acceso no se copiará" + }, + "passkeyNotCopiedAlert": { + "message": "La clave de acceso no se copiará al elemento clonado. ¿Desea continuar clonando este elemento?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verificación requerida por el sitio inicial. Esta característica aún no está implementada para cuentas sin contraseña maestra." + }, + "logInWithPasskey": { + "message": "¿Iniciar sesión con contraseña?" + }, + "passkeyAlreadyExists": { + "message": "Ya existe una clave de acceso para esta aplicación." + }, + "noPasskeysFoundForThisApplication": { + "message": "No se encontraron contraseñas para esta aplicación." + }, + "noMatchingPasskeyLogin": { + "message": "No tiene un inicio de sesión que coincida para este sitio." + }, + "confirm": { + "message": "Confirmar" + }, + "savePasskey": { + "message": "Guardar clave" + }, + "savePasskeyNewLogin": { + "message": "Guardar contraseña como nuevo inicio de sesión" + }, + "choosePasskey": { + "message": "Elija un inicio de sesión para guardar esta clave de acceso" + }, + "passkeyItem": { + "message": "Elemento de clave de acceso" + }, + "overwritePasskey": { + "message": "¿Sobrescribir contraseña?" + }, + "overwritePasskeyAlert": { + "message": "Este elemento ya contiene una clave de acceso. ¿Está seguro de que desea sobrescribir la contraseña actual?" + }, + "featureNotSupported": { + "message": "Función aún no implementada" + }, + "yourPasskeyIsLocked": { + "message": "Autenticación requerida para usar la clave de acceso. Verifique su identidad para continuar." + }, + "multifactorAuthenticationCancelled": { + "message": "Se canceló la autenticación multifactor" + }, + "noLastPassDataFound": { + "message": "No se encontró ningún dato de LastPass" + }, + "incorrectUsernameOrPassword": { + "message": "El nombre de usuario o la contraseña no son correctos" + }, + "incorrectPassword": { + "message": "Contraseña incorrecta" + }, + "incorrectCode": { + "message": "Código incorrecto" + }, + "incorrectPin": { + "message": "NIP incorrecto" + }, + "multifactorAuthenticationFailed": { + "message": "Falló la autenticación multifactor" + }, + "includeSharedFolders": { + "message": "Incluir carpetas compartidas" + }, + "lastPassEmail": { + "message": "Correo de LastPass" + }, + "importingYourAccount": { + "message": "Importando su cuenta..." + }, + "lastPassMFARequired": { + "message": "Se requiere autenticación multifactor LastPass" + }, + "lastPassMFADesc": { + "message": "Introduzca el código de un solo uso de la aplicación para autenticar" + }, + "lastPassOOBDesc": { + "message": "Apruebe la solicitud de acceso de la aplicación para autenticar o introduzca un código de un solo uso." + }, + "passcode": { + "message": "Clave" + }, + "lastPassMasterPassword": { + "message": "Contraseña maestra de LastPass" + }, + "lastPassAuthRequired": { + "message": "Se requiere autenticación LastPass" + }, + "awaitingSSO": { + "message": "Esperando autenticación SSO" + }, + "awaitingSSODesc": { + "message": "Por favor, continúe iniciando sesión usando las credenciales de su empresa." + }, + "seeDetailedInstructions": { + "message": "Vea instrucciones detalladas en nuestro sitio de ayuda en", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Importar directamente de LastPass" + }, + "importFromCSV": { + "message": "Importar desde CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Intente nuevamente o busque un correo de LastPass para verificar su identidad." + }, + "collection": { + "message": "Colección" + }, + "lastPassYubikeyDesc": { + "message": "Inserte la YubiKey asociada con su cuenta de LastPass en el puerto USB del equipo y, a continuación, pulse su botón." + }, + "switchAccount": { + "message": "Cambiar de cuenta" + }, + "switchAccounts": { + "message": "Cambiar de cuenta" + }, + "switchToAccount": { + "message": "Cambiar a cuenta" + }, + "activeAccount": { + "message": "Cuenta activa" + }, + "availableAccounts": { + "message": "Cuentas disponibles" + }, + "accountLimitReached": { + "message": "Se alcanzó el límite de cuentas. Salga de una cuenta para añadir otra." + }, + "active": { + "message": "activa" + }, + "locked": { + "message": "bloqueada" + }, + "unlocked": { + "message": "desbloqueada" + }, + "server": { + "message": "servidor" + }, + "hostedAt": { + "message": "alojado en" + }, + "useDeviceOrHardwareKey": { + "message": "Utilice su dispositivo o su llave de hardware" + }, + "justOnce": { + "message": "Sólo una vez" + }, + "alwaysForThisSite": { + "message": "Siempre para este sitio" + }, + "domainAddedToExcludedDomains": { + "message": "Se añadió $DOMAIN$ a los dominios excluidos.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Formatos comunes", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "¿Quiere hacer de Bitwarden su gestor de contraseñas predeterminado?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Pasar por alto esta opción puede causar conflictos entre el menú de relleno automático de Bitwarden y el del navegador.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Hacer de Bitwarden su gestor de contraseñas predeterminado", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "No se pudo establecer Bitwarden como el gestor de contraseñas predeterminado", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Debe otorgar los permisos de privacidad del navegador a Bitwarden para establecerlo como gestor de contraseñas predeterminado.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Predeterminar", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "¡Credenciales guardadas con éxito!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "¡Credenciales actualizadas con éxito!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Se produjo un error al guardar las credenciales. Revise la consola para obtener detalles.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/et/messages.json b/apps/browser/src/_locales/et/messages.json index 254c1cefb7..1f98d15758 100644 --- a/apps/browser/src/_locales/et/messages.json +++ b/apps/browser/src/_locales/et/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Automaatne täitmine" }, + "autoFillLogin": { + "message": "Täida konto andmed" + }, + "autoFillCard": { + "message": "Täida kaardi andmed" + }, + "autoFillIdentity": { + "message": "Täida identiteet" + }, "generatePasswordCopied": { "message": "Genereeri parool (kopeeritakse)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Sobivaid kontoandmeid ei leitud." }, + "noCards": { + "message": "Kaardid puuduvad" + }, + "noIdentities": { + "message": "Identiteedid puuduvad" + }, + "addLoginMenu": { + "message": "Lisa konto andmed" + }, + "addCardMenu": { + "message": "Lisa kaart" + }, + "addIdentityMenu": { + "message": "Lisa identiteet" + }, "unlockVaultMenu": { "message": "Lukusta hoidla lahti" }, @@ -244,6 +268,9 @@ "length": { "message": "Pikkus" }, + "passwordMinLength": { + "message": "Lühim lubatud parooli pikkus" + }, "uppercase": { "message": "Suurtäht (A-Z) " }, @@ -299,6 +326,9 @@ "password": { "message": "Parool" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Paroolifraas" }, @@ -338,6 +368,12 @@ "other": { "message": "Muu" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Hoidla ajalõpu tegevuse muutmiseks vali esmalt lahtilukustamise meetod." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Hinda seda laiendust" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lukusta paroolihoidla" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Koheselt" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Konto on loodud! Võid nüüd sisse logida." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "Ülemparooli vihje saadeti sinu e-postile." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Automaatne täitmine ebaõnnestus. Palun kopeeri informatsioon käsitsi." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Välja logitud" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "\"Lisa konto andmed\" teavitus ilmub pärast esimest sisselogimist ning võimaldab kontoandmeid automaatselt Bitwardenisse lisada." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Kuva \"Kaart\" vaates kaardiandmed" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Kui veebilehel tuvastatakse olemasolevate andmete muutmine, siis pakutakse nende andmete uuendamist Bitwardenis." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Soovid seda parooli ka Bitwardenis uuendada?" }, "notificationChangeSave": { "message": "Jah, uuenda" }, + "notificationUnlockDesc": { + "message": "Ava Bitwardeni hoidla, et automaattäide lõpuni viia." + }, + "notificationUnlock": { + "message": "Lukusta lahti" + }, "enableContextMenuItem": { "message": "Kuva parema kliki menüü valikud" }, "contextMenuItemDesc": { "message": "Võimaldab parema kliki menüüs kaustada Bitwardeni valikuid, nt kontoandmete täitmist või parooli genereerimist. " }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "Vaike URI sobivuse tuvastamine", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Muuda rakenduse värvikujundust." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Tume", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Funktsioon pole saadaval" }, - "updateKey": { - "message": "Seda funktsiooni ei saa enne krüpteerimise võtme uuendamist kasutada." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium versioon" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB ulatuses krüpteeritud salvestusruum." }, - "ppremiumSignUpTwoStep": { - "message": "Lisavõimalused kaheastmeliseks kinnitamiseks, näiteks YubiKey, FIDO U2F ja Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Parooli hügieen, konto seisukord ja andmelekete raportid aitavad hoidlat turvalisena hoida." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "The environment URLs have been saved." }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Luba kontoandmete täitmine" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Kuvab iga kirje kõrval lehekülje ikooni." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Kuva kirjete arvu" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Vale PIN kood." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Ava biomeetriaga" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Taasta kirje" }, - "restoreItemConfirmation": { - "message": "Oled kindel, et soovid selle kirje taastada?" - }, "restoredItem": { "message": "Kirje on taastatud" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Brauseri biomeetria ei ole selles seadmes toetatud" }, + "biometricsFailedTitle": { + "message": "Biomeetria nurjus" + }, + "biometricsFailedDesc": { + "message": "Biomeetriaga kinnitamine ebaõnnestus. Kasuta ülemparooli või logi välja. Kui probleem püsib, võta ühendust Bitwardeni toega." + }, "nativeMessaginPermissionErrorTitle": { "message": "Luba puudub" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Organisatsiooni poliitika on seadnud omaniku valikutele piirangu." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Väljajäetud domeenid" }, "excludedDomainsDesc": { "message": "Nendel domeenidel Bitwarden paroolide salvestamise valikut ei paku. Muudatuste jõustamiseks pead lehekülge värskendama." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ ei ole õige domeen.", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Vali kaust..." }, - "ssoCompleteRegistration": { - "message": "SSO-ga sisselogimise kinnitamiseks tuleb määrata ülemparool. See kaitseb sinu hoidlat ning võimaldab sellele ligi pääseda." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Tundi" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Personaalse hoidla eksportimine" }, - "exportingPersonalVaultDescription": { - "message": "Ainult personaalsed $EMAIL$ alla kuuluvad kirjed eksportidakse. Organisatsiooni kirjeid ei ekspordita.", + "exportingIndividualVaultDescription": { + "message": "Ainult e-postiga $EMAIL$ seonduvad kirjed eksporditakse. Organisatsiooni kirjeid ei kaasata. Samuti ei kaasata organisatsiooniga seonduvaid manuseid.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Serveri versioon" }, - "selfHosted": { - "message": "Enda majutatud" + "selfHostedServer": { + "message": "enda majutatud" }, "thirdParty": { "message": "Kolmanda osapoole" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Sinu seadmesse saadeti teavitus." }, - "logInInitiated": { + "loginInitiated": { "message": "Sisselogimine on käivitatud" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Kuidas automaatselt täita" }, "autofillSelectInfoWithCommand": { - "message": "Vali sellele lehelt kirje või kasuta otseteed: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Vali sellelt lehelt kirje või määra seadetes otsetee." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Selge" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Piirkond" + "loggingInOn": { + "message": "Sisselogimas kui" }, "opensInANewWindow": { "message": "Avaneb uues aknas" }, + "deviceApprovalRequired": { + "message": "Nõutav on seadme kinnitamine. Vali kinnitamise meetod alt:" + }, + "rememberThisDevice": { + "message": "Mäleta seda seadet" + }, + "uncheckIfPublicDevice": { + "message": "Eemalda märgistus, kui oled avalikus seadmes" + }, + "approveFromYourOtherDevice": { + "message": "Kinnita teises seadmes" + }, + "requestAdminApproval": { + "message": "Küsi admini kinnitust" + }, + "approveWithMasterPassword": { + "message": "Kinnita ülemparooliga" + }, + "ssoIdentifierRequired": { + "message": "Nõutav on organisatsiooni SSO identifikaator." + }, "eu": { "message": "EL", "description": "European Union" }, - "us": { - "message": "USA", - "description": "United States" - }, "accessDenied": { "message": "Ligipääs keelatud. Sul pole lubatud seda lehekülge vaadata." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Kuvamine" + }, + "accountSuccessfullyCreated": { + "message": "Konto edukalt loodud!" + }, + "adminApprovalRequested": { + "message": "Päring on saadetud" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Kinnituspäring saadeti adminile." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Kinnitamise järel saad selle kohta teavituse." + }, + "troubleLoggingIn": { + "message": "Kas sisselogimisel on probleeme?" + }, + "loginApproved": { + "message": "Sisselogimine on kinnitatud" + }, + "userEmailMissing": { + "message": "Kasutaja e-post on puudulik" + }, + "deviceTrusted": { + "message": "Seade on usaldusväärne" + }, + "inputRequired": { + "message": "Sisestus on nõutav." + }, + "required": { + "message": "nõutav" + }, + "search": { + "message": "Otsi" + }, + "inputMinLength": { + "message": "Sisend peab olema vähemalt $COUNT$ tähemärki pikk.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Sisend ei tohi olla üle $COUNT$ tähemärgi pikkune.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Järgnevad kirjamärgid pole lubatud: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Sisend peab olema vähemalt $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Sisend ei tohi ületada $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "Üks või rohkem e-posti on kehtetud" + }, + "inputTrimValidator": { + "message": "Sisend ei tohi koosneda ainult tühikutest.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Sisend pole e-posti aadress." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ välja nõuab tähelepanu.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Vali --" + }, + "multiSelectPlaceholder": { + "message": "-- Filtreeritav tüüp --" + }, + "multiSelectLoading": { + "message": "Valikute hankimine..." + }, + "multiSelectNotFound": { + "message": "Ühtki kirjet ei leitud" + }, + "multiSelectClearAll": { + "message": "Tühjenda kõik" + }, + "plusNMore": { + "message": "+ $QUANTITY$ veel", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Alammenüü" + }, + "toggleCollapse": { + "message": "Peida", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Impordin andmed Bitwardenisse?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Kaitse oma LastPassi andmeid ja impordi need Bitwardenisse?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Salvesta ilma krüpteeringuta failina", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Impordi Bitwardenisse", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importimine...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Andmed on edukalt imporditud!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Ilmnes viga. Vaata täpsemaid andmeid konsoolist.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Importimisel ilmnes võrgu viga.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domeen" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Pääsukoodi ei kopeerita" + }, + "passkeyNotCopiedAlert": { + "message": "Pääsukoodi ei kopeerita kloonitud kirjele. Oled kindel, et soovid jätkata?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/eu/messages.json b/apps/browser/src/_locales/eu/messages.json index 4523b99564..49086462d9 100644 --- a/apps/browser/src/_locales/eu/messages.json +++ b/apps/browser/src/_locales/eu/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-betetzea" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-bete txartela" + }, + "autoFillIdentity": { + "message": "Auto-bete nortasuna" + }, "generatePasswordCopied": { "message": "Sortu pasahitza (kopiatuta)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Bat datozen saio-hasierarik gabe" }, + "noCards": { + "message": "Txartelik ez" + }, + "noIdentities": { + "message": "Nortasunik ez" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Gehitu txartela" + }, + "addIdentityMenu": { + "message": "Gehitu nortasuna" + }, "unlockVaultMenu": { "message": "Desblokeatu kutxa gotorra" }, @@ -199,10 +223,10 @@ "message": "Bitwarden Laguntza zentroa" }, "communityForums": { - "message": "Explore Bitwarden community forums" + "message": "Esploratu Bitwarden komunitatearen foroak" }, "contactSupport": { - "message": "Contact Bitwarden support" + "message": "Jarri harremanetan Bitwardeneko laguntza taldearekin" }, "sync": { "message": "Sinkronizatu" @@ -244,6 +268,9 @@ "length": { "message": "Luzera" }, + "passwordMinLength": { + "message": "Pasahitzaren gutxieneko luzera" + }, "uppercase": { "message": "Letra larria (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Pasahitza" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Pasaesaldia" }, @@ -338,6 +368,12 @@ "other": { "message": "Bestelakoak" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Baloratu gehigarria" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Blokeatu orain" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Berehala" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Zure kontua egina dago. Orain saioa has dezakezu." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "Mezu elektroniko bat bidali dizugu zure pasahitz nagusiaren pistarekin." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Ezin izan da orri honetan hautatutako elementua auto-bete. Kopiatu eta itsatsi informazioa dagokion tokian." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Saioa itxita" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Elementu bat gehitu nahi duzun galdetu, elementu hau zure kutxa gotorrean ez badago." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Erakutsi txartelak fitxa orrian" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Galdetu saio-hasiera baten pasahitza eguneratzeko, webgune batean aldaketaren bat atzematen denean." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Bitwardenen pasahitz hau eguneratu nahi duzu?" }, "notificationChangeSave": { "message": "Eguneratu" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Erakutsi laster-menuko aukerak" }, "contextMenuItemDesc": { "message": "Erabili bigarren mailako klika webgunerako pasahitzak eta saio-hasierak sortzeko." }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "Lehenetsitako detekzioa URI kointzidentziarako", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Aldatu aplikaziorako kolore gaia." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Iluna", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Ezaugarria ez dago erabilgarri" }, - "updateKey": { - "message": "Ezin duzu ezaugarri hau erabili zifratze-gakoa eguneratu arte." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium bazkidea" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "Eranskinentzako 1GB-eko zifratutako biltegia." }, - "ppremiumSignUpTwoStep": { - "message": "YubiKey, FIDO U2F eta Duo bezalako bi urratseko saio hasierarako aukera gehigarriak." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Pasahitzaren higienea, kontuaren egoera eta datu-bortxaketen txostenak, kutxa gotorra seguru mantentzeko." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Inguruneko URL-ak gorde dira." }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Itzalita", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-bete orrialdea kargatzean" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Erakutsi irudi bat saio-hasiera bakoitzaren ondoan." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Erakutsi txartelen kontagailua" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "PIN baliogabea." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Desblokeatu biometria erabiliz" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Berreskuratu elementua" }, - "restoreItemConfirmation": { - "message": "Ziur zaude elementu hau berreskuratu nahi duzula?" - }, "restoredItem": { "message": "Elementua berreskuratua" }, @@ -1483,10 +1592,10 @@ "message": "Ezarri pasahitz nagusia" }, "currentMasterPass": { - "message": "Current master password" + "message": "Oraingo pasahitz nagusia" }, "newMasterPass": { - "message": "New master password" + "message": "Pasahitz nagusi berria" }, "confirmNewMasterPass": { "message": "Confirm new master password" @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Nabigatzailearen biometria ezin da gailu honetan erabili." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Baimena ukatuta" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Erakunde politika batek, jabetza aukerei eragiten die." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Kanporatutako domeinuak" }, "excludedDomainsDesc": { "message": "Bitwardenek ez du eskatuko domeinu horietarako saio-hasierako xehetasunak gordetzea. Orrialdea eguneratu behar duzu aldaketek eragina izan dezaten." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ ez da onartutako domeinu bat", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Hautatu karpeta..." }, - "ssoCompleteRegistration": { - "message": "SSO-rekin saioa hasteko, mesedez, ezarri pasahitz nagusi bat kutxa gotorrera sartu eta babesteko." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Ordu" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Kutxa gotor pertsonala esportatzen" }, - "exportingPersonalVaultDescription": { - "message": "$EMAIL$-ekin lotutako kutxa gotor pertsonaleko elementuak bakarrik esportatuko dira. Erakundeko kutxa gotorraren elementuak ez dira sartuko.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Zerbitzariaren bertsioa" }, - "selfHosted": { - "message": "Ostatatze propioduna" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Hirugarrenen aplikazioak" @@ -2132,16 +2266,16 @@ "message": "Please make sure your vault is unlocked and the Fingerprint phrase matches on the other device." }, "resendNotification": { - "message": "Resend notification" + "message": "Berbidali jakinarazpena" }, "viewAllLoginOptions": { - "message": "View all log in options" + "message": "Ikusi erregistro guztiak ezarpenetan" }, "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2159,13 +2293,13 @@ "message": "Check known data breaches for this password" }, "important": { - "message": "Important:" + "message": "Garrantzitsua:" }, "masterPasswordHint": { "message": "Your master password cannot be recovered if you forget it!" }, "characterMinimum": { - "message": "$LENGTH$ character minimum", + "message": "$LENGTH$ karaktere gutxienez", "placeholders": { "length": { "content": "$1", @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,10 +2323,10 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { - "message": "Got it" + "message": "Ulertuta" }, "autofillSettings": { "message": "Auto-fill settings" @@ -2221,27 +2355,658 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { - "message": "Opens in a new window" + "message": "Leiho berri batean irekitzen da" + }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Gogoratu gailu hau" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Onartu zure beste gailutik" + }, + "requestAdminApproval": { + "message": "Eskatu administratzailearen onarpena" + }, + "approveWithMasterPassword": { + "message": "Onartu pasahitz nagusiarekin" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, "general": { - "message": "General" + "message": "Orokorra" }, "display": { - "message": "Display" + "message": "Bistaratzea" + }, + "accountSuccessfullyCreated": { + "message": "Kontua zuzen sortu da!" + }, + "adminApprovalRequested": { + "message": "Administratzailearen onarpena eskatuta" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Zure eskaera zure administratzaileari bidali zaio." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Jakinaraziko zaizu onartzen denean." + }, + "troubleLoggingIn": { + "message": "Arazoak saioa hasterakoan?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "Erabiltzailearen emaila falta da" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Inportatzen...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Datuak zuzen inportatu dira!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Errorea gertatu da inportatzean. Begiratu xehetasunak kontsolan.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Sareko errorea gertatu da inportatzerakoan.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Ez dago elementurik erakusteko", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Elementu berria", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Piztu" + }, + "ignore": { + "message": "Ezikusi" + }, + "importData": { + "message": "Inportatu datuak", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Errorea inportatzerakoan" + }, + "importErrorDesc": { + "message": "Inportatzen saiatu zaren datuekin arazo bat egon da. Mesedez, konpondu ondoren adierazten diren akatsak eta saiatu berriro." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Konpondu beheko akatsak eta saiatu berriro." + }, + "description": { + "message": "Deskribapena" + }, + "importSuccess": { + "message": "Datuak zuzen inportatu dira" + }, + "importSuccessNumberOfItems": { + "message": "Guztira $AMOUNT$ elementu inportatu dira.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Saiatu berriro" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Egiaztatu biometria erabiliz" + }, + "awaitingConfirmation": { + "message": "Baieztapenaren zain" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Erabili pasahitz nagusia" + }, + "usePin": { + "message": "Erabili PIN kodea" + }, + "useBiometrics": { + "message": "Erabili biometria" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Guztira" + }, + "importWarning": { + "message": "$ORGANIZATION$(e)ra datuak inportatzen ari zara. Zure datuak erakunde horretako kideekin parteka daitezke. Jarraitu nahi duzu?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Berretsi" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/fa/messages.json b/apps/browser/src/_locales/fa/messages.json index b938e52a98..0c44026cec 100644 --- a/apps/browser/src/_locales/fa/messages.json +++ b/apps/browser/src/_locales/fa/messages.json @@ -11,7 +11,7 @@ "description": "Extension description" }, "loginOrCreateNewAccount": { - "message": "وارد شوید یا یک حساب کاربری بسازید تا به گاوصندوق امنتان دسترسی یابید." + "message": "وارد شوید یا یک حساب کاربری بسازید تا به گاوصندوق امن‌تان دسترسی یابید." }, "createAccount": { "message": "ایجاد حساب کاربری" @@ -91,6 +91,15 @@ "autoFill": { "message": "پر کردن خودکار" }, + "autoFillLogin": { + "message": "پر کردن خودکار ورود" + }, + "autoFillCard": { + "message": "پر کردن خودکار کارت" + }, + "autoFillIdentity": { + "message": "پر کردن خودکار هویت" + }, "generatePasswordCopied": { "message": "ساخت کلمه عبور (کپی شد)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "ورودی‌ها منتطبق نیست" }, + "noCards": { + "message": "کارتی وجود ندارد" + }, + "noIdentities": { + "message": "هویتی وجود ندارد" + }, + "addLoginMenu": { + "message": "افزودن ورود" + }, + "addCardMenu": { + "message": "افزودن کارت" + }, + "addIdentityMenu": { + "message": "افزودن هویت" + }, "unlockVaultMenu": { "message": "قفل گاوصندوق خود را باز کنید" }, @@ -244,6 +268,9 @@ "length": { "message": "طول" }, + "passwordMinLength": { + "message": "حداقل طول گذرواژه" + }, "uppercase": { "message": "حروف بزرگ (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "کلمه عبور" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "عبارت عبور" }, @@ -338,6 +368,12 @@ "other": { "message": "ساير" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "یک روش بازگشایی برای پایان زمان مجاز تنظیم کنید." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "به این افزونه امتیاز دهید" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "الان قفل شود" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "بلافاصله" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "حساب کاربری جدید شما ساخته شد! حالا می‌توانید وارد شوید." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "ما یک ایمیل همراه با راهنمای کلمه عبور اصلی برایتان ارسال کردیم." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "ناتوان در پر کردن خودکار مورد انتخاب شده در این صفحه. اطلاعات را کپی و جای‌گذاری کنید." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "خارج شد" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "در صورتی که موردی در گاوصندوق شما یافت نشد، درخواست افزودن کنید." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "نمایش کارت‌ها در صفحه برگه" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "هنگامی که تغییری در یک وب‌سایت شناسایی شد، درخواست به‌روزرسانی کلمه عبور ورود کن." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "آیا مایل به به‌روزرسانی این کلمه عبور در Bitwarden هستید؟" }, "notificationChangeSave": { "message": "به‌روزرسانی" }, + "notificationUnlockDesc": { + "message": "برای پر کردن خودکار گاوصندوق Bitwarden خود را باز کنید." + }, + "notificationUnlock": { + "message": "باز کردن قفل" + }, "enableContextMenuItem": { "message": "نمایش گزینه‌های منوی زمینه" }, "contextMenuItemDesc": { "message": "از یک کلیک ثانویه برای دسترسی به تولید کلمه عبور و ورودهای منطبق برای وب سایت استفاده کن." }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "بررسی مطابقت نشانی اینترنتی پیش‌فرض", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "تغییر رنگ پوسته برنامه." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "تاریک", "description": "Dark color" @@ -693,7 +774,7 @@ "message": "درباره سازمان‌ها اطلاعات کسب کنید" }, "learnOrgConfirmation": { - "message": "Bitwarden به شما اجازه می‌دهد با استفاده از سازماندهی، موارد گاوصندوق خود را با دیگران به اشتراک بگذارید. آیا مایل به بازدید از وب سایت bitwarden.com برای کسب اطلاعات بیشتر هستید؟" + "message": "Bitwarden به شما اجازه می‌دهد با استفاده از سازمان، موارد گاوصندوق خود را با دیگران به اشتراک بگذارید. آیا مایل به بازدید از وب سایت bitwarden.com برای کسب اطلاعات بیشتر هستید؟" }, "moveToOrganization": { "message": "انتقال به سازمان" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "ویژگی موجود نیست" }, - "updateKey": { - "message": "تا زمانی که کد رمزنگاری را به‌روز نکنید نمی‌توانید از این قابلیت استفاده کنید." + "encryptionKeyMigrationRequired": { + "message": "انتقال کلید رمزگذاری مورد نیاز است. لطفاً از طریق گاوصندوق وب وارد شوید تا کلید رمزگذاری خود را به روز کنید." }, "premiumMembership": { "message": "عضویت پرمیوم" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "۱ گیگابایت فضای ذخیره سازی رمزگذاری شده برای پیوست های پرونده." }, - "ppremiumSignUpTwoStep": { - "message": "گزینه‌های ورود دو مرحله‌ای اضافی مانند YubiKey, FIDO U2F و Duo." + "premiumSignUpTwoStepOptions": { + "message": "گزینه های ورود اضافی دو مرحله ای مانند YubiKey و Duo." }, "ppremiumSignUpReports": { "message": "گزارش‌های بهداشت رمز عبور، سلامت حساب و نقض داده‌ها برای ایمن نگهداشتن گاوصندوق شما." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "نشانی‌های اینترنتی محیط ذخیره شد" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "پر کردن خودکار هنگام بارگذاری صفحه" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "یک تصویر قابل تشخیص در کنار هر ورود نشان دهید." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "نمایش شمارنده نشان" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "کد پین معتبر نیست." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "با استفاده از بیومتریک باز کنید" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "بازیابی مورد" }, - "restoreItemConfirmation": { - "message": "آیا مطمئن هستید که می‌خواهید این مورد را بازیابی کنید؟" - }, "restoredItem": { "message": "مورد بازیابی شد" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "بیومتریک مرورگر در این دستگاه پشتیبانی نمی‌شود." }, + "biometricsFailedTitle": { + "message": "زیست‌سنجی ناموفق بود" + }, + "biometricsFailedDesc": { + "message": "زیست‌سنجی نمی‌تواند انجام شود، استفاده از کلمه عبور اصلی یا خروج را در نظر بگیرید. اگر این مشکل ادامه یافت لطفاً با پشتیبانی Bitwarden تماس بگیرید." + }, "nativeMessaginPermissionErrorTitle": { "message": "مجوز ارائه نشده است" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "سیاست سازمانی بر تنظیمات مالکیت شما تأثیر می‌گذارد." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "دامنه های مستثنی" }, "excludedDomainsDesc": { "message": "Bitwarden برای ذخیره جزئیات ورود به سیستم این دامنه ها سوال نمی‌کند. برای اینکه تغییرات اعمال شود باید صفحه را تازه کنید." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ دامنه معتبری نیست", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "پوشه را انتخاب کنید..." }, - "ssoCompleteRegistration": { - "message": "برای پر کردن ورود به سیستم با SSO، لطفاً یک کلمه عبور اصلی برای دسترسی و محافظت از گاوصندوق خود تنظیم کنید." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "ساعت" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "برون ریزی گاو‌صندوق شخصی" }, - "exportingPersonalVaultDescription": { - "message": "فقط موارد گاو‌صندوق شخصی مرتبط با $EMAIL$ برون ریزی خواهد شد. موارد گاو‌صندوق سازمان شامل نخواهد شد.", + "exportingIndividualVaultDescription": { + "message": "فقط موارد شخصی گاوصندوق مرتبط با $EMAIL$ برون ریزی خواهند شد. موارد گاوصندوق سازمان شامل نخواهد شد. فقط اطلاعات مورد گاوصندوق برون ریزی خواهد شد و شامل تاریخچه کلمه عبور مرتبط یا پیوست نمی‌شود.", "placeholders": { "email": { "content": "$1", @@ -2080,7 +2214,7 @@ "serverVersion": { "message": "نسخه سرور" }, - "selfHosted": { + "selfHostedServer": { "message": "خود میزبان" }, "thirdParty": { @@ -2114,7 +2248,7 @@ "message": "شما نیستید؟" }, "newAroundHere": { - "message": "اینجا جدیده؟" + "message": "اینجا تازه واردی؟" }, "rememberEmail": { "message": "ایمیل را به خاطر بسپار" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "یک اعلان به دستگاه شما ارسال شده است." }, - "logInInitiated": { + "loginInitiated": { "message": "ورود به سیستم آغاز شد" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "نحوه پر کردن خودکار" }, "autofillSelectInfoWithCommand": { - "message": "یک مورد را از این صفحه انتخاب کنید یا از میانبر استفاده کنید: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "یک مورد را از این صفحه انتخاب کنید یا یک میانبر در تنظیمات تنظیم کنید." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "متوجه شدم" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "منطقه" + "loggingInOn": { + "message": "ورود با" }, "opensInANewWindow": { "message": "در پنجره جدید باز می‌شود" }, + "deviceApprovalRequired": { + "message": "تأیید دستگاه لازم است. یک روش تأیید انتخاب کنید:" + }, + "rememberThisDevice": { + "message": "این دستگاه را به خاطر بسپار" + }, + "uncheckIfPublicDevice": { + "message": "اگر از دستگاه عمومی استفاده می‌کنید علامت را بردارید" + }, + "approveFromYourOtherDevice": { + "message": "تأیید با دستگاه دیگرتان" + }, + "requestAdminApproval": { + "message": "درخواست تأیید مدیر" + }, + "approveWithMasterPassword": { + "message": "تأیید با کلمه عبور اصلی" + }, + "ssoIdentifierRequired": { + "message": "شناسه سازمان SSO مورد نیاز است." + }, "eu": { "message": "اروپا", "description": "European Union" }, - "us": { - "message": "امریکا", - "description": "United States" - }, "accessDenied": { "message": "دسترسی رد شد. شما اجازه مشاهده این صفحه را ندارید." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "نمایش" + }, + "accountSuccessfullyCreated": { + "message": "حساب کاربری با موفقیت ایجاد شد!" + }, + "adminApprovalRequested": { + "message": "تأیید مدیر درخواست شد" + }, + "adminApprovalRequestSentToAdmins": { + "message": "درخواست شما به مدیرتان فرستاده شد." + }, + "youWillBeNotifiedOnceApproved": { + "message": "به محض تأیید مطلع خواهید شد." + }, + "troubleLoggingIn": { + "message": "در ورود مشکلی دارید؟" + }, + "loginApproved": { + "message": "ورود تأیید شد" + }, + "userEmailMissing": { + "message": "ایمیل کاربر وجود ندارد" + }, + "deviceTrusted": { + "message": "دستگاه مورد اعتماد است" + }, + "inputRequired": { + "message": "ورودی ضروری است." + }, + "required": { + "message": "ضروری" + }, + "search": { + "message": "جستجو" + }, + "inputMinLength": { + "message": "ورودی باید حداقل $COUNT$ کاراکتر داشته باشد.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "طول ورودی نباید بیش از $COUNT$ کاراکتر باشد.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "کاراکترهای زیر مجاز نیستند: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "مقدار ورودی باید حداقل $MIN$ باشد.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "مقدار ورودی نباید از $MAX$ تجاوز کند.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "یک یا چند ایمیل نامعتبر است" + }, + "inputTrimValidator": { + "message": "ورودی نباید فقط حاوی فضای خالی باشد.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "ورودی یک نشانی ایمیل نیست." + }, + "fieldsNeedAttention": { + "message": "فیلد $COUNT$ در بالا به توجه شما نیاز دارد.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- انتخاب --" + }, + "multiSelectPlaceholder": { + "message": "-- برای فیلتر تایپ کنید --" + }, + "multiSelectLoading": { + "message": "در حال بازیابی گزینه‌ها..." + }, + "multiSelectNotFound": { + "message": "موردی یافت نشد" + }, + "multiSelectClearAll": { + "message": "پاک‌کردن همه" + }, + "plusNMore": { + "message": "+ $QUANTITY$ بیشتر", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "زیرمنو" + }, + "toggleCollapse": { + "message": "دکمه بستن", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "دامنه مستعار" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "موارد با درخواست مجدد کلمه عبور اصلی را نمی‌توان در بارگذاری صفحه به‌صورت خودکار پر کرد. پر کردن خودکار در بارگیری صفحه خاموش شد.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "پر کردن خودکار در بارگیری صفحه برای استفاده از تنظیمات پیش‌فرض تنظیم شده است.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "برای ویرایش این فیلد، درخواست مجدد کلمه عبور اصلی را خاموش کنید", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "کلید عبور کپی نمی‌شود" + }, + "passkeyNotCopiedAlert": { + "message": "کلید عبور در مورد شبیه سازی شده کپی نمی‌شود. آیا می‌خواهید به شبیه سازی این مورد ادامه دهید؟" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "تأیید توسط سایت آغازگر الزامی است. این ویژگی هنوز برای حساب‌های بدون کلمه عبور اصلی اجرا نشده است." + }, + "logInWithPasskey": { + "message": "با کلید عبور وارد می‌شوید؟" + }, + "passkeyAlreadyExists": { + "message": "یک کلید عبور از قبل برای این برنامه وجود دارد." + }, + "noPasskeysFoundForThisApplication": { + "message": "هیچ کلمه عبوری برای این برنامه یافت نشد." + }, + "noMatchingPasskeyLogin": { + "message": "شما هیچ ورود مشابهی برای این سایت ندارید." + }, + "confirm": { + "message": "تأیید" + }, + "savePasskey": { + "message": "ذخیره کلید عبور" + }, + "savePasskeyNewLogin": { + "message": "کلید عبور را به عنوان ورود جدید ذخیره کن" + }, + "choosePasskey": { + "message": "یک ورود برای ذخیره این کلید عبور انتخاب کنید" + }, + "passkeyItem": { + "message": "مورد کلید عبور" + }, + "overwritePasskey": { + "message": "بازنویسی کلید عبور؟" + }, + "overwritePasskeyAlert": { + "message": "این مورد از قبل دارای یک کلید عبور است. آیا مطمئنید که می‌خواهید کلمه عبور فعلی را بازنویسی کنید؟" + }, + "featureNotSupported": { + "message": "ویژگی هنوز پشتیبانی نمی‌شود" + }, + "yourPasskeyIsLocked": { + "message": "برای استفاده از کلید عبور، احراز هویت لازم است. برای ادامه، هویت خود را تأیید کنید." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/fi/messages.json b/apps/browser/src/_locales/fi/messages.json index 6fd0ffda2a..ead3d43236 100644 --- a/apps/browser/src/_locales/fi/messages.json +++ b/apps/browser/src/_locales/fi/messages.json @@ -11,7 +11,7 @@ "description": "Extension description" }, "loginOrCreateNewAccount": { - "message": "Kirjaudu tai luo uusi tili käyttääksesi salattua holviasi." + "message": "Käytä salattua holviasi kirjautumalla sisään tai luo uusi tili." }, "createAccount": { "message": "Luo tili" @@ -89,7 +89,16 @@ "message": "Kopioi turvakoodi" }, "autoFill": { - "message": "Automaattinen täyttö" + "message": "Automaattitäyttö" + }, + "autoFillLogin": { + "message": "Automaattitäytä kirjautumistieto" + }, + "autoFillCard": { + "message": "Automaattitäytä kortti" + }, + "autoFillIdentity": { + "message": "Automaattitäytä identiteetti" }, "generatePasswordCopied": { "message": "Luo salasana (leikepöydälle)" @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Ei tunnistettuja kirjautumistietoja." }, + "noCards": { + "message": "Kortteja ei ole" + }, + "noIdentities": { + "message": "Identiteettejä ei ole" + }, + "addLoginMenu": { + "message": "Lisää kirjautumistieto" + }, + "addCardMenu": { + "message": "Lisää kortti" + }, + "addIdentityMenu": { + "message": "Lisää identiteetti" + }, "unlockVaultMenu": { "message": "Avaa holvisi" }, @@ -244,6 +268,9 @@ "length": { "message": "Pituus" }, + "passwordMinLength": { + "message": "Salasanan vähimmäispituus" + }, "uppercase": { "message": "Isot kirjaimet (A-Z)" }, @@ -279,7 +306,7 @@ "message": "Vältä epäselviä merkkejä" }, "searchVault": { - "message": "Hae holvista" + "message": "Etsi holvista" }, "edit": { "message": "Muokkaa" @@ -299,6 +326,9 @@ "password": { "message": "Salasana" }, + "totp": { + "message": "Todennuksen salaisuus" + }, "passphrase": { "message": "Salauslauseke" }, @@ -333,11 +363,17 @@ "message": "Näytä tai piilota" }, "manage": { - "message": "Hallinnoi" + "message": "Hallitse" }, "other": { "message": "Muut" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Muuta holvisi aikakatkaisutoimintoa määrittämällä lukituksen avaustapa." + }, + "unlockMethodNeeded": { + "message": "Määritä avaustapa asetuksista" + }, "rateExtension": { "message": "Arvioi laajennus" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lukitse nyt" }, + "lockAll": { + "message": "Lukitse kaikki" + }, "immediately": { "message": "Välittömästi" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Uusi käyttäjätilisi on luotu! Voit nyt kirjautua sisään." }, + "youSuccessfullyLoggedIn": { + "message": "Kirjautuminen onnistui" + }, + "youMayCloseThisWindow": { + "message": "Voit sulkea tämän ikkunan" + }, "masterPassSent": { "message": "Lähetimme pääsalasanasi vihjeen sähköpostitse." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Valittua kohdetta ei voitu täyttää tälle sivulle automaattisesti. Kopioi ja liitä tiedot itse." }, + "totpCaptureError": { + "message": "QR-koodin skannaus nykyiseltä sivulta ei onnistu." + }, + "totpCaptureSuccess": { + "message": "Todennusavain on lisätty" + }, + "totpCapture": { + "message": "Skannaa todennusavaimen QR-koodi nykyiseltä verkkosivulta" + }, + "copyTOTP": { + "message": "Kopioi todennusavain (TOTP)" + }, "loggedOut": { "message": "Kirjauduttu ulos" }, @@ -574,13 +631,13 @@ "message": "Haluatko varmasti korvata nykyisen käyttäjätunnuksen?" }, "searchFolder": { - "message": "Hae kansiosta" + "message": "Etsi kansiosta" }, "searchCollection": { - "message": "Hae kokoelmasta" + "message": "Etsi kokoelmasta" }, "searchType": { - "message": "Hae tyypeistä" + "message": "Etsi tyypistä" }, "noneFolder": { "message": "Ei kansiota", @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Kysy lisätäänkö uusi kohde, jos holvissa ei vielä ole sopivaa kohdetta." }, + "addLoginNotificationDescAlt": { + "message": "Ehdota kohteen tallennusta, jos holvistasi ei vielä löydy vastaavaa kohdetta. Koskee kaikkia kirjautuneita tilejä." + }, "showCardsCurrentTab": { "message": "Näytä kortit välilehtiosiossa" }, @@ -602,7 +662,7 @@ "message": "Näytä henkilöllisyydet välilehtiosiossa" }, "showIdentitiesCurrentTabDesc": { - "message": "Henkilöllisyydet näytetään laajennuksen välilehtisivulla niiden automaattisen täytön helpottamiseksi." + "message": "Henkilöllisyydet näytetään laajennuksen Välilehti-sivulla niiden automaattisen täytön helpottamiseksi." }, "clearClipboard": { "message": "Tyhjennä leikepöytä", @@ -619,29 +679,47 @@ "message": "Tallenna" }, "enableChangedPasswordNotification": { - "message": "Kysy päivitetäänkö olemassa oleva kirjautumistieto" + "message": "Kysy päivitetäänkö kirjautumistieto" }, "changedPasswordNotificationDesc": { "message": "Kysy päivitetäänkö kirjautumistiedon salasana sivustolla havaittua muutosta vastaavaksi." }, + "changedPasswordNotificationDescAlt": { + "message": "Tarjoa kirjautumistiedon salasanan päivitystä, kun verkkosivustolla havaitaan uusi salasana. Koskee kaikkia kirjautuneita tilejä." + }, + "enableUsePasskeys": { + "message": "Tarjoa salausavainten tallennusta ja käyttöä" + }, + "usePasskeysDesc": { + "message": "Tarjoa tallennusta uusille salausavaimille tai kirjautumista holvissasi olevilla salausavaimilla. Koskee kaikkia kirjautuneita tilejä." + }, "notificationChangeDesc": { "message": "Haluatko päivittää salasanan Bitwardeniin?" }, "notificationChangeSave": { "message": "Päivitä" }, + "notificationUnlockDesc": { + "message": "Viimeistele automaattisen täytön pyyntö avaamalla Bitwarden-holvisi lukitus." + }, + "notificationUnlock": { + "message": "Avaa" + }, "enableContextMenuItem": { "message": "Näytä sisältövalikon valinnat" }, "contextMenuItemDesc": { - "message": "Käytä salasanageneraattoria ja avoimelle sivulle soveltuvia kirjautumistietoja hiiren kakkospainikkeella avattavasta valikosta." + "message": "Käytä salasanageneraattoria ja avoimelle sivulle soveltuvia kirjautumistietoja hiiren kakkospainikkeella." + }, + "contextMenuItemDescAlt": { + "message": "Käytä salasanageneraattoria ja avoimelle sivulle soveltuvia kirjautumistietoja hiiren kakkospainikkeella avattavasta valikosta. Koskee kaikkia kirjautuneita tilejä." }, "defaultUriMatchDetection": { - "message": "URI:n oletusarvoinen täsmäystapa", + "message": "URI:n oletuarvoinen tunnistustapa", "description": "Default URI match detection for auto-fill." }, "defaultUriMatchDetectionDesc": { - "message": "Valitse oletustapa, jolla URI tunnistetaan esimerkiksi automaattisen täytön yhteydessä." + "message": "Valitse kirjautumistietojen URI:en oletusarvoinen tunnistustapa suoritettaessa automaattisen täytön kaltaisia toimintoja." }, "theme": { "message": "Teema" @@ -649,6 +727,9 @@ "themeDesc": { "message": "Vaihda sovelluksen väriteemaa." }, + "themeDescAlt": { + "message": "Muuta laajennujksen väriteemaa. Koskee kaikkia kirjautuneita tilejä." + }, "dark": { "message": "Tumma", "description": "Dark color" @@ -721,7 +802,7 @@ "message": "Lue lisää" }, "authenticatorKeyTotp": { - "message": "Todennusmenetelmän avain (TOTP)" + "message": "Todennusavain (TOTP)" }, "verificationCodeTotp": { "message": "Todennuskoodi (TOTP)" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Ominaisuus ei ole käytettävissä" }, - "updateKey": { - "message": "Et voi käyttää tätä toimintoa ennen kuin päivität salausavaimesi." + "encryptionKeyMigrationRequired": { + "message": "Salausavaimen siirto vaaditaan. Päivitä salausavaimesi kirjautumalla verkkoholviin." }, "premiumMembership": { "message": "Premium-jäsenyys" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 Gt salattua tallennustilaa tiedostoliitteille." }, - "ppremiumSignUpTwoStep": { - "message": "Muita kaksivaiheisen kirjautumisen todennusmenetelmiä kuten YubiKey, FIDO U2F ja Duo Security." + "premiumSignUpTwoStepOptions": { + "message": "Omisteiset kaksivaiheisen kirjautumisen vaihtoehdot, kuten YubiKey ja Duo." }, "ppremiumSignUpReports": { "message": "Salasanahygienian, tilin terveyden ja tietovuotojen raportointitoiminnot pitävät holvisi turvassa." @@ -829,7 +910,7 @@ "message": "Kopioi TOTP-koodi automaattisesti" }, "disableAutoTotpCopyDesc": { - "message": "Jos kirjautumistieto sisältää kaksivaiheisen todennusmenetelmän avaimen, kopioidaan TOTP-todennuskoodi leikepöydälle kohteen automaattisen täytön yhteydessä." + "message": "Jos kirjautumistieto sisältää kaksivaiheisen todennuksen avaimen, kopioidaan TOTP-todennuskoodi leikepöydälle kohteen automaattisen täytön yhteydessä." }, "enableAutoBiometricsPrompt": { "message": "Pyydä Biometristä todennusta käynnistettäessä" @@ -969,35 +1050,60 @@ "environmentSaved": { "message": "Palvelinympäristön URL-osoitteet tallennettiin" }, + "showAutoFillMenuOnFormFields": { + "message": "Näytä automaattitäytön valikko lomakekentissä", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Koskee kaikkia kirjautuneita tilejä." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Poista selaimesi sisäänrakennettu salasanahallinta käytöstä sen asetuksista ristiriitojen välttämiseksi." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Muokkaa selaimen asetuksia" + }, + "autofillOverlayVisibilityOff": { + "message": "Ei käytössä", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Kun kenttä valitaan (kohdistetaan)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Kun automaattitäytön kuvaketta painetaan", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { - "message": "Automaattinen täyttö sivun avautuessa" + "message": "Automaattitäyttö sivun avautuessa" }, "enableAutoFillOnPageLoadDesc": { - "message": "Jos havaitaan kirjautumislomake, suorita automaattinen täyttö sivun avautuessa." + "message": "Automaattinen täyttö suoritetaan sivun avautuessa, jos sivulla havaitaan kirjautumislomake." }, "experimentalFeature": { "message": "Vaarantuneet tai epäluotettavat sivustot voivat väärinkäyttää sivun avautuessa suoritettavaa automaattista täyttöä." }, "learnMoreAboutAutofill": { - "message": "Lisätietoja automaattisesta täytöstä" + "message": "Lisätietoja automaattitäytöstä" }, "defaultAutoFillOnPageLoad": { - "message": "Automaattisen täytön oletusasetus kirjautumistiedoille" + "message": "Kirjautumistietojen automaattitäytön oletusasetus" }, "defaultAutoFillOnPageLoadDesc": { - "message": "Voit ottaa automaattisen täytön käyttöön tai poistaa sen käytöstä kirjautumistietokohtaisesti muokkaamalla kirjautumistetoa." + "message": "Automaattinen täyttö on mahdollista ottaa käyttöön tai poistaa käytöstä kirjautumistietokohtaisesti kirjautumistetoa muokkaamalla." }, "itemAutoFillOnPageLoad": { - "message": "Automaattinen täyttö sivun avautuessa (jos määritetty asetuksista)" + "message": "Automaattitäyttö sivun avautuessa (jos määritetty asetuksista)" }, "autoFillOnPageLoadUseDefault": { "message": "Käytä oletusasetusta" }, "autoFillOnPageLoadYes": { - "message": "Täytä automaattisesti sivun avautuessa" + "message": "Automaattitäyttö sivun avautuessa" }, "autoFillOnPageLoadNo": { - "message": "Älä täytä automaattisesti sivun avautuessa" + "message": "Ei automaattitäyttöä sivun avautuessa" }, "commandOpenPopup": { "message": "Avaa holvin ponnahdusikkuna" @@ -1006,7 +1112,7 @@ "message": "Avaa holvi sivupalkissa" }, "commandAutofillDesc": { - "message": "Täytä automaattisesti viimeisin nykyisellä sivustolla käytetty kirjautumistieto" + "message": "Täytä edellinen nykyisellä sivustolla käytetty kirjautumistieto automaattisesti." }, "commandGeneratePasswordDesc": { "message": "Luo uusi satunnainen salasana ja kopioi se leikepöydälle." @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Näytä tunnistettava kuva jokaiselle kirjautumistiedolle." }, + "faviconDescAlt": { + "message": "Näytä tunnistettava kuva jokaisen kirjautumistiedon vieressä. Koskee kaikkia kirjautuneita tilejä." + }, "enableBadgeCounter": { "message": "Näytä laskuri" }, @@ -1296,7 +1405,7 @@ "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { - "message": "Tunnistuksen oletustapa", + "message": "Oletusarvoinen tunnistustapa", "description": "Default URI match detection for auto-fill." }, "toggleOptions": { @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Virheellinen PIN-koodi." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Liian monta epäonnistunutta PIN-yritystä. Kirjaudutaan ulos." + }, "unlockWithBiometrics": { "message": "Avaa biometrialla" }, @@ -1426,7 +1538,7 @@ "description": "Noun: a special folder to hold deleted items" }, "searchTrash": { - "message": "Hae roskakorista" + "message": "Etsi roskakorista" }, "permanentlyDeleteItem": { "message": "Poista kohde pysyvästi" @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Palauta kohde" }, - "restoreItemConfirmation": { - "message": "Haluatko varmasti palauttaa kohteen?" - }, "restoredItem": { "message": "Kohde palautettiin" }, @@ -1453,7 +1562,7 @@ "message": "Aikakatkaisutoiminnon vahvistus" }, "autoFillAndSave": { - "message": "Täytä automaattisesti ja tallenna" + "message": "Automaattitäytä ja tallenna" }, "autoFillSuccessAndSavedUri": { "message": "Kohde täytettiin automaattisesti ja URI tallennettiin" @@ -1468,7 +1577,7 @@ "message": "Haluatko silti täyttää kirjautumistiedot?" }, "autofillIframeWarning": { - "message": "Lomakkeen URI-osoite poikkeaa kirjautumistietoon tallennetusta osoitteesta. Täytä se siitä huolimatta valitsemalla OK tai peru täyttö valitsemalla Peruuta." + "message": "Lomakkeen URI-osoite poikkeaa kirjautumistietoon tallennetusta osoitteesta. Salli sen automaattinen täyttö siitä huolimatta valitsemalla OK tai estä se valitsemalla Peruuta." }, "autofillIframeWarningTip": { "message": "Välttyäksesi varoitukselta jatkossa, tallenna URI $HOSTNAME$ sivustolle tallennettuun Bitwarden-kirjautumistietoosi.", @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Selaimen biometriaa ei tueta tällä laitteella." }, + "biometricsFailedTitle": { + "message": "Biometria epäonnistui" + }, + "biometricsFailedDesc": { + "message": "Biometristä todennusta ei voida suorittaa. Harkitse pääsalasanan käyttämistä tai uloskirjautumista. Jos tämä jatkuu, ole yhteydessä Bitwardenin asiakaspalveluun." + }, "nativeMessaginPermissionErrorTitle": { "message": "Oikeutta ei myönnetty" }, @@ -1612,23 +1727,29 @@ "message": "Toimintoa ei voi suorittaa sivupalkissa, yritä toimintoa uudelleen ponnahdusvalikossa tai ponnahdusikkunassa." }, "personalOwnershipSubmitError": { - "message": "Yrityskäytännön johdosta kohteiden tallennus henkilökohtaiseen holviin ei ole mahdollista. Muuta omistusasetus organisaatiolle ja valitse käytettävissä olevista kokoelmista." + "message": "Yrityskäytännön vuoksi 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." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Organisaatiokäytäntö estää kohteiden tuonnin yksityiseen holviisi." + }, "excludedDomains": { "message": "Ohitettavat verkkotunnukset" }, "excludedDomainsDesc": { "message": "Bitwarden ei pyydä kirjautumistietojen tallennusta näille verkkotunnuksille. Päivitä sivu ottaaksesi muutokset käyttöön." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden ei pyydä kirjautumistietojen tallennusta näillä verkkotunnuksilla. Koskee kaikkia kirjautuneita tilejä. Ota muutokset käyttöön päivittämällä sivu." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ ei ole kelvollinen verkkotunnus", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1637,7 +1758,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "searchSends": { - "message": "Hae Sendeistä", + "message": "Etsi Sendeistä", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "addSend": { @@ -1878,13 +1999,26 @@ "message": "Automaattinen liitos" }, "resetPasswordAutoEnrollInviteWarning": { - "message": "Organisaatiolla on käytäntö, joka liittää tilisi automaattisesti salasanan palautusapuun. Liitos sallii organisaation ylläpitäjien vaihtaa pääsalasanasi." + "message": "Organisaatiolla on yrityskäytäntö, joka liittää tilisi automaattisesti salasanan palautusapuun. Liitos sallii organisaation ylläpitäjien vaihtaa pääsalasanasi." }, "selectFolder": { "message": "Valitse kansio..." }, - "ssoCompleteRegistration": { - "message": "Kirjautuaksesi sisään käyttäen kertakirjautumista (SSO), suojaa holvisi pääsalasanalla." + "noFoldersFound": { + "message": "Ongelmia ei löytynyt", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Organisaatiosi käyttöoikeuksia muutettiin ja tämän seurauksena sinun on asetettava pääsalasana.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Organisaatiosi edellyttää, että asetat pääsalasanan.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Vahvistus vaaditaan", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Tuntia" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Henkilökohtaisen holvin vienti" }, - "exportingPersonalVaultDescription": { - "message": "Vain tunnukseen $EMAIL$ liitetyt henkilökohtaisen holvin kohteet viedään. Organisaation kohteet eivät sisälly tähän.", + "exportingIndividualVaultDescription": { + "message": "Vain tunnukseen $EMAIL$ liitetyt yksityisen holvin kohteet viedään. Organisaation holvin kohteita ei sisällytetä. Vain holvin kohteiden tiedot viedään ilman niiden sisältämiä liitteitä.", "placeholders": { "email": { "content": "$1", @@ -2038,7 +2172,7 @@ "message": "Luo sähköpostialias ulkoisella ohjauspalvelulla." }, "hostname": { - "message": "Osoite", + "message": "Isäntä", "description": "Part of a URL." }, "apiAccessToken": { @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Palvelimen versio" }, - "selfHosted": { - "message": "Itse ylläpidetty" + "selfHostedServer": { + "message": "itse ylläpidetty" }, "thirdParty": { "message": "Ulkopuolinen taho" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Laitteellesi on lähetetty ilmoitus." }, - "logInInitiated": { + "loginInitiated": { "message": "Kirjautuminen aloitettu" }, "exposedMasterPassword": { @@ -2174,13 +2308,13 @@ } }, "autofillPageLoadPolicyActivated": { - "message": "Organisaatiokäytännöt ovat poistaneet käytöstä automaattisen täytön sivun avautuessa." + "message": "Organisaatiokäytännöt ovat poistaneet käytöstä avautuessa suoritettavan automaattisen täytön." }, "howToAutofill": { - "message": "Miten täytetään automaattisesti" + "message": "Miten automaattitäyttöä käytetään" }, "autofillSelectInfoWithCommand": { - "message": "Valitse tälle sivulle sopiva kohde tai käytä pikanäppäintä $COMMAND$.", + "message": "Valitse kohde tästä ruudusta, käytä pikanäppäintä $COMMAND$ tai tutustu muihin vaihtoehtoihin asetuksissa.", "placeholders": { "command": { "content": "$1", @@ -2189,16 +2323,16 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Valitse tälle sivulle sopiva kohde tai määritä pikanäppäin asetuksista." + "message": "Valitse kohde tästä ruudusta tai tutustu muihin vaihtoehtoihin asetuksissa." }, "gotIt": { "message": "Selvä" }, "autofillSettings": { - "message": "Täytön asetukset" + "message": "Automaattitäytön asetukset" }, "autofillShortcut": { - "message": "Automaattisen täytön pikanäppäin" + "message": "Automaattitäytön pikanäppäin" }, "autofillShortcutNotSet": { "message": "Automaattisen täytön pikanäppäintä ei ole määritetty. Määritä se selaimen asetuksista." @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Alue" + "loggingInOn": { + "message": "Kirjaudutaan sijaintiin" }, "opensInANewWindow": { "message": "Avautuu uudessa ikkunassa" }, + "deviceApprovalRequired": { + "message": "Laitehyväksyntä vaaditaan. Valitse hyväksyntätapa alta:" + }, + "rememberThisDevice": { + "message": "Muista tämä laite" + }, + "uncheckIfPublicDevice": { + "message": "Poista valinta julkisilla laitteilla" + }, + "approveFromYourOtherDevice": { + "message": "Hyväksy muilta laitteiltasi" + }, + "requestAdminApproval": { + "message": "Pyydä hyväksyntää ylläpidolta" + }, + "approveWithMasterPassword": { + "message": "Hyväksy pääsalasanalla" + }, + "ssoIdentifierRequired": { + "message": "Organisaation kertakirjautumistunniste tarvitaan." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Pääsy estetty. Sinulla ei ole oikeutta avata sivua." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Ulkoasu" + }, + "accountSuccessfullyCreated": { + "message": "Tilin luonti onnistui!" + }, + "adminApprovalRequested": { + "message": "Hyväksyntää pyydetty ylläpidolta" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Pyyntösi on välitetty ylläpidollesi." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Saat ilmoituksen kun se on hyväksytty." + }, + "troubleLoggingIn": { + "message": "Ongelmia kirjautumisessa?" + }, + "loginApproved": { + "message": "Kirjautuminen hyväksyttiin" + }, + "userEmailMissing": { + "message": "Käyttäjän sähköpostiosoite puuttuu" + }, + "deviceTrusted": { + "message": "Laitteeseen luotettu" + }, + "inputRequired": { + "message": "Syöte vaaditaan." + }, + "required": { + "message": "pakollinen" + }, + "search": { + "message": "Etsi" + }, + "inputMinLength": { + "message": "Syötteen tulee sisältää ainakin $COUNT$ merkkiä.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Syötteen enimmäismerkkimäärä on $COUNT$.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Seuraavia merkkejä ei sallita: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Syötteen vähimmäisarvo on $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Syötteen enimmäisarvo on $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "Ainakin yksi sähköpostiosoite on virheellinen" + }, + "inputTrimValidator": { + "message": "Syöte ei voi sisältää vain tyhjiä merkkejä.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Syöte ei ole sähköpostiosoite." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ yllä oleva(a) kenttä(ä) vaatii huomiotasi.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Valitse --" + }, + "multiSelectPlaceholder": { + "message": "-- Suodatettava tyyppi --" + }, + "multiSelectLoading": { + "message": "Noudetaan vaihtoehtoja..." + }, + "multiSelectNotFound": { + "message": "Kohteita ei löytynyt" + }, + "multiSelectClearAll": { + "message": "Tyhjennä kaikki" + }, + "plusNMore": { + "message": "+ $QUANTITY$ lisää", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Alavalikko" + }, + "toggleCollapse": { + "message": "Laajenna tai supista", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Haluatko tuoda tietosi Bitwardeniin?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Haluatko suojata LastPass-tietosi tuomalla ne Bitwardeniin?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Tallenna salaamattomana tiedostona", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Tuo Bitwardeniin", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Tuodaan...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Tietojen tuonti onnistui.", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Tuontivirhe. Näet isätietoja hallinnasta.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Verkkovirhe tuonnin aikana.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Aliaksen verkkotunnus" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Kohteille, joille on määritetty pääsalasanan uudelleenkysely, ei voida suorittaa automaattista täyttöä sivun avautuessa. Automaattitäyttö sivun avautuessa poistettiin käytöstä. avautuessa suoritettavan", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Automaattitäyttö sivun avautuessa käyttää oletusasetusta.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Poista pääsalasanan uudelleenkysely käytöstä muokataksesi kenttää", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Siirry sisältöön" + }, + "bitwardenOverlayButton": { + "message": "Bitwardenin automaattitäytön painike", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Kytke Bitwardenin automaattitäytön valikko", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwardenin automaattitäytön valikko", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Näytä sopivat kirjautumistiedot avaamalla tilisi lukitus", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Avaa tili", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Täytä kirjautumistiedot kohteesta", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Osittainen käyttäjätunnus", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Näytettäviä kohteita ei ole", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Uusi kohde", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Lisää holviin uusi kohde", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwardenin automaattisen täytön valikko on käytettävissä. Valitse painamalla alas-nuolinäppäintä.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Ota käyttöön" + }, + "ignore": { + "message": "Ohita" + }, + "importData": { + "message": "Tuo tietoja", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Tuontivirhe" + }, + "importErrorDesc": { + "message": "Tiedoissa, joita yritit tuoda, havaittiin ongelma. Korjaa alla listatut virheet lähdetiedostosta ja yritä uudelleen." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Korjaa seuraavat virheet ja yritä uudelleen." + }, + "description": { + "message": "Kuvaus" + }, + "importSuccess": { + "message": "Tietojen tuonti onnistui" + }, + "importSuccessNumberOfItems": { + "message": "Kaikkiaan $AMOUNT$ kohdetta tuotiin.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Yritä uudelleen" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Toiminto vaatii vahvistuksen. Jatka asettamalla PIN-koodi." + }, + "setPin": { + "message": "Aseta PIN-koodi" + }, + "verifyWithBiometrics": { + "message": "Vahvista biometrialla" + }, + "awaitingConfirmation": { + "message": "Odottaa vahvistusta" + }, + "couldNotCompleteBiometrics": { + "message": "Biometrinen todennus ei onnistunut." + }, + "needADifferentMethod": { + "message": "Tarvitsetko eri menetelmän?" + }, + "useMasterPassword": { + "message": "Käytä pääsalasanaa" + }, + "usePin": { + "message": "Käytä PIN-koodia" + }, + "useBiometrics": { + "message": "Käytä biometriaa" + }, + "enterVerificationCodeSentToEmail": { + "message": "Syötä sähköpostiosoitteeseesi lähetetty vahvistuskoodi." + }, + "resendCode": { + "message": "Lähetä koodi uudelleen" + }, + "total": { + "message": "Yhteensä" + }, + "importWarning": { + "message": "Olet tuomassa tietoja organisaatioon $ORGANIZATION$. Tietojasi saatetaan jakaa organisaation jäsenten kesken. Haluatko jatkaa?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Avaa Duo ja viimeistele kirjautuminen seuraamalla ohjeita." + }, + "duoRequiredForAccount": { + "message": "Tilillesi kirjautuminen vaatii Duo-vahvistuksen." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Viimeistele kirjautuminen avaamalla laajennus erilliseen ikkunaan." + }, + "popoutExtension": { + "message": "Irrota laajennus" + }, + "launchDuo": { + "message": "Avaa Duo" + }, + "importFormatError": { + "message": "Tietoja ei ole muotoiltu oikein. Tarkista tuotava tiedosto ja yritä uudelleen." + }, + "importNothingError": { + "message": "Mitään ei tuotu." + }, + "importEncKeyError": { + "message": "Virhe purettaessa viedyn tiedoston salausta. Salausavaimesi ei vastaa viennissä käytettyä salausavainta." + }, + "invalidFilePassword": { + "message": "Tiedoston salasana on virheellinen. Käytä vientitiedoston luonnin yhteydessä syötettyä salasanaa." + }, + "importDestination": { + "message": "Tuontikohde" + }, + "learnAboutImportOptions": { + "message": "Lue lisää tuontivaihtoehdoista" + }, + "selectImportFolder": { + "message": "Valitse kansio" + }, + "selectImportCollection": { + "message": "Valitse kokoelma" + }, + "importTargetHint": { + "message": "Valitse tämä, jos haluat tuoda tiedoston sisällön kohteeseen \"$DESTINATION$\".", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Tiedosto sisältää määrittämättömiä kohteita." + }, + "selectFormat": { + "message": "Valitse tuotavan tiedoston muoto" + }, + "selectImportFile": { + "message": "Valitse tuotava tiedosto" + }, + "chooseFile": { + "message": "Valitse tiedosto" + }, + "noFileChosen": { + "message": "Tiedostoa ei ole valittu" + }, + "orCopyPasteFileContents": { + "message": "tai kopioi ja liitä tuotavan tiedoston sisältö" + }, + "instructionsFor": { + "message": "$NAME$ -ohjeet", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Vahvista holvin tuonti" + }, + "confirmVaultImportDesc": { + "message": "Tiedosto on salasanasuojattu. Jatka tuontia syöttämällä tiedoston salasana." + }, + "confirmFilePassword": { + "message": "Vahvista tiedoston salasana" + }, + "typePasskey": { + "message": "Suojausavain" + }, + "passkeyNotCopied": { + "message": "Suojausavainta ei kopioida" + }, + "passkeyNotCopiedAlert": { + "message": "Suojausavain ei kopioidu kloonattuun kohteeseen. Haluatko jatkaa kloonausta?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Käynnistävä sivusto edellyttää todennusta. Ominaisuutta ei ole vielä toteutettu tileille, joilla ei ole pääsalasanaa." + }, + "logInWithPasskey": { + "message": "Kirjaudutaanko suojausavaimella?" + }, + "passkeyAlreadyExists": { + "message": "Tälle sovellukselle on jo tallennettu suojausavain." + }, + "noPasskeysFoundForThisApplication": { + "message": "Tälle sovellukselle ei löytynyt suojausavaimia." + }, + "noMatchingPasskeyLogin": { + "message": "Holvissasi ei ole tälle sivustolle sopivaa kirjautumistietoa." + }, + "confirm": { + "message": "Vahvista" + }, + "savePasskey": { + "message": "Tallenna suojausavain" + }, + "savePasskeyNewLogin": { + "message": "Tallenna suojausavain uuteen kirjautumistietoon" + }, + "choosePasskey": { + "message": "Valitse kirjautumistieto, johon suojausavain tallennetaan" + }, + "passkeyItem": { + "message": "Suojausavainkohde" + }, + "overwritePasskey": { + "message": "Korvataanko suojausavain?" + }, + "overwritePasskeyAlert": { + "message": "Kohde sisältää jo suojausavaimen. Haluatko varmasti korvata nykyisen salasanan?" + }, + "featureNotSupported": { + "message": "Ominaisuutta ei vielä tueta" + }, + "yourPasskeyIsLocked": { + "message": "Salausavaimen käyttö edellyttää todennusta. Jatka vahvistamalla henkilöllisyytesi." + }, + "multifactorAuthenticationCancelled": { + "message": "Monivaiheinen todennus peruttiin" + }, + "noLastPassDataFound": { + "message": "LastPass-tietoja ei löytynyt" + }, + "incorrectUsernameOrPassword": { + "message": "Virheellinen käyttäjätunnus tai salasana" + }, + "incorrectPassword": { + "message": "Virheellinen salasana" + }, + "incorrectCode": { + "message": "Virheellinen koodi" + }, + "incorrectPin": { + "message": "Virheellinen PIN-koodi" + }, + "multifactorAuthenticationFailed": { + "message": "Monivaiheinen todennus epäonnistui" + }, + "includeSharedFolders": { + "message": "Sisällytä jaetut kansiot" + }, + "lastPassEmail": { + "message": "LastPass-sähköpostiosoite" + }, + "importingYourAccount": { + "message": "Tiliäsi tuodaan..." + }, + "lastPassMFARequired": { + "message": "Monivaiheinen LastPass-todennus vaaditaan" + }, + "lastPassMFADesc": { + "message": "Syötä kertakäyttökoodi todennussovelluksestasi." + }, + "lastPassOOBDesc": { + "message": "Hyväksy kirjautumispyyntö todennussovelluksesta tai syötä kertakäyttökoodi." + }, + "passcode": { + "message": "Suojakoodi" + }, + "lastPassMasterPassword": { + "message": "LastPass-pääsalasana" + }, + "lastPassAuthRequired": { + "message": "LastPass-todennus vaaditaan" + }, + "awaitingSSO": { + "message": "Odotetaan kertakirjautumista" + }, + "awaitingSSODesc": { + "message": "Jatka kirjautumista työtunnuksillasi." + }, + "seeDetailedInstructions": { + "message": "Katso tarkemmat ohjeet tukisivustoltamme osoitteesta", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Tuo suoraan LastPassista" + }, + "importFromCSV": { + "message": "Tuo CSV-tiedostosta" + }, + "lastPassTryAgainCheckEmail": { + "message": "Yritä uudelleen tai etsi LastPassin lähettämää sähköpostia, jolla vahvistat sen olleen sinä." + }, + "collection": { + "message": "Kokoelma" + }, + "lastPassYubikeyDesc": { + "message": "Kytke LastPass-tiliisi liitetty YubiKey tietokoneen USB-porttiin ja kosketa sen painiketta." + }, + "switchAccount": { + "message": "Vaihda tiliä" + }, + "switchAccounts": { + "message": "Vaihda tiliä" + }, + "switchToAccount": { + "message": "Vaihda tiliin" + }, + "activeAccount": { + "message": "Aktiivinen tili" + }, + "availableAccounts": { + "message": "Käytettävissä olevat tilit" + }, + "accountLimitReached": { + "message": "Tilien enimmäismäärä on saavutettu. Kirjaa jokin niistä ulos lisätäksesi tilin." + }, + "active": { + "message": "aktiivinen" + }, + "locked": { + "message": "lukittu" + }, + "unlocked": { + "message": "avoin" + }, + "server": { + "message": "palvelin" + }, + "hostedAt": { + "message": "palvelimelta" + }, + "useDeviceOrHardwareKey": { + "message": "Käytä laittettasi tai fyysistä suojausavainta" + }, + "justOnce": { + "message": "Vain kerran" + }, + "alwaysForThisSite": { + "message": "Aina tällä sivustolla" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ lisättiin ohitettaviin verkkotunnuksiin.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Yleiset muodot", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Määritetäänkö Bitwarden oletusarvoiseksi salasanahallinnaksi?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Tämän huomiotta jättäminen voi aiheuttaa ongelmia Bitwardenin automaattitäytön valikon ja selaimen välisessä toiminnassa.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Määritä Bitwarden oletusarvoiseksi salasanahallinnaksi", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Bitwardenia ei voida määrittää oletusarvoiseksi salasanahallinnaksi", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Jotta Bitwarden voidaan määrittää oletusarvoiseksi salasanahallinnaksi, on sille myönettävä oikeus käsitellä yksityisiä tietoja selaimessa.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Määritä oletukseksi", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Käyttäjätiedot tallennettiin!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Käyttäjätiedot päivitettiin!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Virhe tallennettaessa käyttäjätietoja. Näet isätietoja hallinnasta.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Poista suojausavain" + }, + "passkeyRemoved": { + "message": "Suojausavain poistettiin" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/fil/messages.json b/apps/browser/src/_locales/fil/messages.json index 8a23901eb5..e9bc8e2c75 100644 --- a/apps/browser/src/_locales/fil/messages.json +++ b/apps/browser/src/_locales/fil/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-fill sa Filipino ay Awtomatikong Pagpuno" }, + "autoFillLogin": { + "message": "Auto-fill na pag-login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Awtomatikong punan ang pagkakakilanlan" + }, "generatePasswordCopied": { "message": "Maglagay ng Password" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Walang tumutugmang mga login" }, + "noCards": { + "message": "Walang card" + }, + "noIdentities": { + "message": "Walang pagkakakilanlan" + }, + "addLoginMenu": { + "message": "Magdagdag ng login" + }, + "addCardMenu": { + "message": "Magdagdag ng card" + }, + "addIdentityMenu": { + "message": "Magdagdag ng pagkakakilanlan" + }, "unlockVaultMenu": { "message": "Buksan ang iyong kahadeyero" }, @@ -244,6 +268,9 @@ "length": { "message": "Kahabaan" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Ang Password" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Pasa salita" }, @@ -338,6 +368,12 @@ "other": { "message": "Iba pa" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Mag-set up ng paraan ng pag-unlock upang baguhin ang iyong pagkilos sa pag-timeout ng vault." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "I-rate ang extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Mag-kandado Na" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Kaagad" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Nalikha na ang iyong bagong account! Maaari ka nang mag-log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "Pinadala na namin sa iyo ang email na may hint ng master password mo." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Hindi makapag-auto-fill ng napiling item sa pahinang ito. Kopya at i-paste ang impormasyon sa halip." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Umalis na" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Tanungin na magdagdag ng isang item kung wala itong nakita sa iyong vault." }, + "addLoginNotificationDescAlt": { + "message": "Hilingin na magdagdag ng isang item kung ang isa ay hindi mahanap sa iyong vault. Nalalapat sa lahat ng naka-log in na account." + }, "showCardsCurrentTab": { "message": "Ipakita ang mga card sa Tab page" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Tanungin ang update ng password ng isang login kapag napansin ang pagbabago sa websi." }, + "changedPasswordNotificationDescAlt": { + "message": "Hilingin na i-update ang password ng login kapag may nakitang pagbabago sa isang website. Nalalapat sa lahat ng naka-log in na account.\nI-unlock ang iyong Bitwarden vault para makumpleto ang kahilingan sa auto-fill." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Nais mo bang i-update ang password na ito sa Bitwarden?" }, "notificationChangeSave": { "message": "I-update" }, + "notificationUnlockDesc": { + "message": "I-unlock ang iyong Bitwarden vault para makumpleto ang kahilingan sa auto-fill." + }, + "notificationUnlock": { + "message": "I-unlock" + }, "enableContextMenuItem": { "message": "Ipakita ang mga opsyon ng menu ng konteksto" }, "contextMenuItemDesc": { "message": "Gamitin ang pangalawang pag-click upang ma-access ang password generation at matching logins para sa website. " }, + "contextMenuItemDescAlt": { + "message": "Gumamit ng pangalawang pag-click upang ma-access ang pagbuo ng password at pagtutugma ng mga login para sa website. Nalalapat sa lahat ng naka-log in na account." + }, "defaultUriMatchDetection": { "message": "Default na pagtukoy ng tugma ng URI", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Baguhin ang tema ng kulay ng application." }, + "themeDescAlt": { + "message": "Baguhin ang tema ng kulay ng application. Nalalapat sa lahat ng naka-log in na account." + }, "dark": { "message": "Madilim", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Hindi magagamit ang tampok" }, - "updateKey": { - "message": "Hindi mo maari gamitin ang tampok na ito hanggang hindi mo iupdate ang iyong encryption key." + "encryptionKeyMigrationRequired": { + "message": "Kinakailangan ang paglilipat ng encryption key. Mangyaring mag-login sa pamamagitan ng web vault upang i-update ang iyong encryption key." }, "premiumMembership": { "message": "Pagiging miyembro ng premium" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage para sa mga file attachment." }, - "ppremiumSignUpTwoStep": { - "message": "Dagdag na dalawang hakbang na login option gaya ng YubiKey, FIDO U2F, at Duo." + "premiumSignUpTwoStepOptions": { + "message": "Pagmamay-ari na dalawang hakbang na opsyon sa pag-log in gaya ng YubiKey at Duo." }, "ppremiumSignUpReports": { "message": "Pasahod higiyena, kalusugan ng account, at mga ulat sa data breach upang panatilihing ligtas ang iyong vault." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Nai-save ang mga URL ng Kapaligiran" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Nakasara", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Awtomatikong punan sa pagkarga ng pahina" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Ipakita ang isang kilalang larawan sa tabi ng bawat login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Ipakita ang badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Hindi wastong PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "I-unlock sa pamamagitan ng biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Ibalik ang item" }, - "restoreItemConfirmation": { - "message": "Sigurado ka bang nais mong ibalik ang item na ito?" - }, "restoredItem": { "message": "Item na nai-restore" }, @@ -1486,10 +1595,10 @@ "message": "Current master password" }, "newMasterPass": { - "message": "New master password" + "message": "Bagong master password" }, "confirmNewMasterPass": { - "message": "Confirm new master password" + "message": "Kumpirmahin ang bagong master password" }, "masterPasswordPolicyInEffect": { "message": "Isang o higit pang mga patakaran ng organisasyon ay nangangailangan ng iyong master password upang matugunan ang sumusunod na kinakailangan:" @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Ang browser biometrics ay hindi sinusuportahan sa device na ito." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permiso ay hindi ibinigay" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Isang organisasyon policy ang nakakaapekto sa iyong mga pagpipilian sa ownership." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Hinarang ng isang patakaran ng organisasyon ang pag-import ng mga item sa iyong vault." + }, "excludedDomains": { "message": "Inilayo na Domain" }, "excludedDomainsDesc": { "message": "Hindi tatanungin ng Bitwarden na i-save ang mga detalye ng pag-login para sa mga domain na ito. Kailangan mo nang i-refresh ang page para maipatupad ang mga pagbabago." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ ay hindi isang valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Pumili ng folder..." }, - "ssoCompleteRegistration": { - "message": "Upang matapos ang pag-log in sa SSO, mangyaring magtakda ng master password upang ma-access at maprotektahan ang iyong vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Oras" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Nag-export ng indibidwal na vault" }, - "exportingPersonalVaultDescription": { - "message": "Lamang ang mga item ng indibidwal na vault na nauugnay sa $EMAIL$ ang maie-export. Hindi kasama ang mga item ng vault ng organisasyon.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Bersyon ng server" }, - "selfHosted": { - "message": "Auto-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Ika-tatlong-partido" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "Naipadala na ang notification sa iyong device." }, - "logInInitiated": { - "message": "Mag log in na sinimulan" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Nakalantad na Master Password" @@ -2180,7 +2314,7 @@ "message": "Paano mag-auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Nakuha ko" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/fr/messages.json b/apps/browser/src/_locales/fr/messages.json index 37b6bbc0c2..452a2b363b 100644 --- a/apps/browser/src/_locales/fr/messages.json +++ b/apps/browser/src/_locales/fr/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Saisie automatique" }, + "autoFillLogin": { + "message": "Saisie automatique de l'identifiant" + }, + "autoFillCard": { + "message": "Saisie automatique de la carte de paiement" + }, + "autoFillIdentity": { + "message": "Saisie automatique de l'identité" + }, "generatePasswordCopied": { "message": "Générer un mot de passe (copié)" }, @@ -98,7 +107,22 @@ "message": "Copier le nom du champ personnalisé" }, "noMatchingLogins": { - "message": "Aucun identifiant correspondant." + "message": "Aucun identifiant correspondant" + }, + "noCards": { + "message": "Aucune carte de paiement" + }, + "noIdentities": { + "message": "Aucune identité" + }, + "addLoginMenu": { + "message": "Ajouter un identifiant" + }, + "addCardMenu": { + "message": "Ajouter une carte de paiement" + }, + "addIdentityMenu": { + "message": "Ajouter une identité" }, "unlockVaultMenu": { "message": "Déverrouillez votre coffre" @@ -107,7 +131,7 @@ "message": "Connectez-vous à votre coffre" }, "autoFillInfo": { - "message": "Il n'y a pas d'identifiants disponibles à saisir automatiquement pour l'onglet actuel du navigateur." + "message": "Il n'y a pas d'identifiants disponibles pour la saisie automatique de l'onglet actuel du navigateur." }, "addLogin": { "message": "Ajouter un identifiant" @@ -116,7 +140,7 @@ "message": "Ajouter un élément" }, "passwordHint": { - "message": "Indice mot de passe" + "message": "Indice de mot de passe" }, "enterEmailToGetHint": { "message": "Saisissez l'adresse électronique de votre compte pour recevoir l'indice de votre mot de passe principal." @@ -153,7 +177,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." }, "yourAccountsFingerprint": { - "message": "La phrase d'empreinte de votre compte", + "message": "Phrase d'empreinte de votre compte", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "twoStepLogin": { @@ -199,13 +223,13 @@ "message": "Centre d'aide Bitwarden" }, "communityForums": { - "message": "Explorez les forums de la communauté Bitwarden" + "message": "Explorer les forums de la communauté Bitwarden" }, "contactSupport": { "message": "Contacter le support Bitwarden" }, "sync": { - "message": "Synchroniser" + "message": "Synchronisation" }, "syncVaultNow": { "message": "Synchroniser le coffre maintenant" @@ -244,6 +268,9 @@ "length": { "message": "Longueur" }, + "passwordMinLength": { + "message": "Longueur minimale du mot de passe" + }, "uppercase": { "message": "Majuscules (A-Z)" }, @@ -285,7 +312,7 @@ "message": "Modifier" }, "view": { - "message": "Voir" + "message": "Afficher" }, "noItemsInList": { "message": "Aucun identifiant à afficher." @@ -299,6 +326,9 @@ "password": { "message": "Mot de passe" }, + "totp": { + "message": "Secret de l'Authentificateur" + }, "passphrase": { "message": "Phrase de passe" }, @@ -330,7 +360,7 @@ "message": "Site web" }, "toggleVisibility": { - "message": "Afficher/Masquer" + "message": "Permuter la visibilité" }, "manage": { "message": "Gérer" @@ -338,6 +368,12 @@ "other": { "message": "Autre" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Configurez une méthode de déverrouillage pour changer le délai d'expiration de votre coffre." + }, + "unlockMethodNeeded": { + "message": "Configurer une méthode de déverrouillage dans les Paramètres" + }, "rateExtension": { "message": "Noter l'extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Verrouiller maintenant" }, + "lockAll": { + "message": "Tout verrouiller" + }, "immediately": { "message": "Immédiatement" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Votre nouveau compte a été créé ! Vous pouvez maintenant vous authentifier." }, + "youSuccessfullyLoggedIn": { + "message": "Vous vous êtes connecté avec succès" + }, + "youMayCloseThisWindow": { + "message": "Vous pouvez fermer cette fenêtre" + }, "masterPassSent": { "message": "Nous vous avons envoyé un courriel avec votre indice de mot de passe principal." }, @@ -474,7 +519,19 @@ } }, "autofillError": { - "message": "Impossible de saisir automatiquement l'élément sélectionné sur cette page. Copiez-collez plutôt l'information." + "message": "Impossible de saisir automatiquement l'élément sélectionné sur cette page. Essayez plutôt le copier-coller." + }, + "totpCaptureError": { + "message": "Impossible de scanner le QR code à partir de la page web actuelle" + }, + "totpCaptureSuccess": { + "message": "Clé de l'Authentificateur ajoutée" + }, + "totpCapture": { + "message": "Scanner le QR code de l'authentificateur à partir de la page web actuelle" + }, + "copyTOTP": { + "message": "Copier la clé de l'Authentificateur (TOTP)" }, "loggedOut": { "message": "Déconnecté" @@ -507,7 +564,7 @@ "message": "Vous pouvez changer votre mot de passe principal depuis le coffre web de bitwarden.com. Voulez-vous visiter le site web maintenant ?" }, "twoStepLoginConfirmation": { - "message": "L'authentification à deux facteurs rend votre compte plus sûr en vous demandant de vérifier votre connexion avec un autre dispositif tel qu'une clé de sécurité, une application d'authentification, un SMS, un appel téléphonique ou un courriel. L'authentification à deux facteurs peut être configurée sur le coffre web de bitwarden.com. Voulez-vous visiter le site web maintenant ?" + "message": "L'authentification à deux facteurs rend votre compte plus sûr en vous demandant de vérifier votre connexion avec un autre dispositif tel qu'une clé de sécurité, une application d'authentification, un SMS, un appel téléphonique ou un courriel. L'authentification à deux facteurs peut être configurée dans le coffre web de bitwarden.com. Voulez-vous visiter le site web maintenant ?" }, "editedFolder": { "message": "Dossier sauvegardé" @@ -587,29 +644,32 @@ "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { - "message": "Demander à ajouter un identifiant" + "message": "Demander d'ajouter un identifiant" }, "addLoginNotificationDesc": { - "message": "Demander à ajouter un élément si aucun n'est trouvé dans votre coffre." + "message": "Demander d'ajouter un élément si aucun n'est trouvé dans votre coffre." + }, + "addLoginNotificationDescAlt": { + "message": "Demande l'ajout d'un élément si celui-ci n'est pas trouvé dans votre coffre. S'applique à tous les comptes connectés." }, "showCardsCurrentTab": { - "message": "Afficher les cartes sur la page de l'onglet" + "message": "Afficher les cartes de paiement sur la Page d'onglet" }, "showCardsCurrentTabDesc": { - "message": "Lister les éléments de la carte sur la page de l'onglet pour faciliter la saisie automatique." + "message": "Liste les éléments des cartes de paiement sur la Page d'onglet pour faciliter la saisie automatique." }, "showIdentitiesCurrentTab": { - "message": "Afficher les identités sur la page Onglet courant" + "message": "Afficher les identités sur la page d'onglet" }, "showIdentitiesCurrentTabDesc": { - "message": "Lister les éléments d'identité sur la page de l'onglet pour faciliter la saisie automatique." + "message": "Liste les éléments d'identité sur la Page d'onglet pour faciliter la saisie automatique." }, "clearClipboard": { "message": "Effacer le presse-papiers", "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "clearClipboardDesc": { - "message": "Effacer automatiquement de votre presse-papiers les valeurs copiées.", + "message": "Efface automatiquement les valeurs copiées de votre presse-papiers.", "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "notificationAddDesc": { @@ -619,10 +679,19 @@ "message": "Enregistrer" }, "enableChangedPasswordNotification": { - "message": "Demander à mettre à jour l'identifiant existant" + "message": "Demander de mettre à jour un identifiant existant" }, "changedPasswordNotificationDesc": { - "message": "Demander à mettre à jour le mot de passe d'un identifiant lorsqu'un changement est détecté sur un site Web." + "message": "Demande la mise à jour du mot de passe d'un identifiant lorsqu'un changement est détecté sur un site Web." + }, + "changedPasswordNotificationDescAlt": { + "message": "Demande la mise à jour du mot de passe d'un identifiant lorsqu'un changement est détecté sur un site web. S'applique à tous les comptes connectés." + }, + "enableUsePasskeys": { + "message": "Demander d'enregistrer et d'utiliser les clés d'identification (passkeys)" + }, + "usePasskeysDesc": { + "message": "Demande l'enregistrement de nouvelles clés d'identification (passkeys) ou la connexion à l'aide des clés d'identification (passkeys) stockées dans votre coffre. S'applique à tous les comptes connectés." }, "notificationChangeDesc": { "message": "Souhaitez-vous mettre à jour ce mot de passe dans Bitwarden ?" @@ -630,18 +699,27 @@ "notificationChangeSave": { "message": "Mettre à jour" }, + "notificationUnlockDesc": { + "message": "Déverrouillez votre coffre Bitwarden pour terminer la demande de saisie automatique." + }, + "notificationUnlock": { + "message": "Déverrouiller" + }, "enableContextMenuItem": { "message": "Afficher les options du menu contextuel" }, "contextMenuItemDesc": { - "message": "Utilisez un clic secondaire pour accéder à la génération de mots de passe et les identifiants correspondants pour le site Web. " + "message": "Utilise un clic secondaire pour accéder à la génération de mots de passe et aux identifiants correspondants pour le site web." + }, + "contextMenuItemDescAlt": { + "message": "Utilise un clic secondaire pour accéder à la génération de mot de passe et aux identifiants correspondants pour le site web. S'applique à tous les comptes connectés." }, "defaultUriMatchDetection": { "message": "Détection de correspondance URI par défaut", "description": "Default URI match detection for auto-fill." }, "defaultUriMatchDetectionDesc": { - "message": "Choisissez la manière de gestion par défaut de la détection de correspondance URI pour les identifiants lors de l'exécution d'actions telles que la saisie automatique." + "message": "Choisit la manière dont la détection des correspondances URI est gérée par défaut pour les connexions lors d'actions telles que la saisie automatique." }, "theme": { "message": "Thème" @@ -649,6 +727,9 @@ "themeDesc": { "message": "Modifier le thème de couleur de l'application." }, + "themeDescAlt": { + "message": "Modifie le thème de couleur de l'application. S'applique à tous les comptes connectés." + }, "dark": { "message": "Sombre", "description": "Dark color" @@ -721,7 +802,7 @@ "message": "En savoir plus" }, "authenticatorKeyTotp": { - "message": "Clé d'authentification (TOTP)" + "message": "Clé de l'Authentificateur (TOTP)" }, "verificationCodeTotp": { "message": "Code de vérification (TOTP)" @@ -760,10 +841,10 @@ "message": "La taille maximale du fichier est de 500 Mo." }, "featureUnavailable": { - "message": "Fonctionnalité non disponible" + "message": "Fonctionnalité indisponible" }, - "updateKey": { - "message": "Vous ne pouvez pas utiliser cette fonctionnalité avant de mettre à jour votre clé de chiffrement." + "encryptionKeyMigrationRequired": { + "message": "Migration de la clé de chiffrement nécessaire. Veuillez vous connecter sur le coffre web pour mettre à jour votre clé de chiffrement." }, "premiumMembership": { "message": "Adhésion Premium" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 Go de stockage chiffré pour les fichiers joints." }, - "ppremiumSignUpTwoStep": { - "message": "Options additionnelles d'identification à deux étapes telles que YubiKey, FIDO U2F et Duo." + "premiumSignUpTwoStepOptions": { + "message": "Options de connexion propriétaires à deux facteurs telles que YubiKey et Duo." }, "ppremiumSignUpReports": { "message": "Hygiène du mot de passe, santé du compte et rapports sur les brèches de données pour assurer la sécurité de votre coffre." @@ -826,10 +907,10 @@ "message": "Actualisation terminée" }, "enableAutoTotpCopy": { - "message": "Copier le code TOTP automatiquement" + "message": "Copier le TOTP automatiquement" }, "disableAutoTotpCopyDesc": { - "message": "Si un identifiant possède une clé d'authentification, copiez le code de vérification TOTP dans votre presse-papiers lorsque vous saisissez automatiquement l'identifiant." + "message": "Si un identifiant possède une clé d'authentification, copie le code de vérification TOTP dans votre presse-papiers lorsque vous saisissez automatiquement l'identifiant." }, "enableAutoBiometricsPrompt": { "message": "Demander la biométrie au lancement" @@ -886,7 +967,7 @@ "message": "Authentifier WebAuthn" }, "loginUnavailable": { - "message": "Identifiant non disponible" + "message": "Identifiant indisponible" }, "noTwoStepProviders": { "message": "Ce compte dispose d'une authentification à deux facteurs de configurée, cependant, aucun des fournisseurs à deux facteurs configurés n'est pris en charge par ce navigateur web." @@ -969,14 +1050,39 @@ "environmentSaved": { "message": "Les URLs d'environnement ont été enregistrées." }, + "showAutoFillMenuOnFormFields": { + "message": "Afficher le menu de saisie automatique dans les champs d'un formulaire", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "S'applique à tous les comptes connectés." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Désactivez les paramètres du gestionnaire de mots de passe intégré à votre navigateur pour éviter les conflits." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Éditer les paramètres du navigateur." + }, + "autofillOverlayVisibilityOff": { + "message": "Désactivé", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Lorsque le champ est sélectionné (sur \"focus\")", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Lorsque l'icône de saisie automatique est sélectionnée", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Saisir automatiquement au chargement de la page" }, "enableAutoFillOnPageLoadDesc": { - "message": "Si un formulaire de connexion est détecté, saisir automatiquement lors du chargement de la page web." + "message": "Si un formulaire de connexion est détecté, il sera saisi automatiquement lors du chargement de la page web." }, "experimentalFeature": { - "message": "Les sites web compromis ou non fiables peuvent exploiter la saisie automatique au chargement de la page." + "message": "les sites web compromis ou non fiables peuvent exploiter la saisie automatique au chargement de la page." }, "learnMoreAboutAutofill": { "message": "En savoir plus sur la saisie automatique" @@ -1056,16 +1162,19 @@ "message": "Ce navigateur ne peut pas traiter les demandes U2F dans cette fenêtre popup. Voulez-vous ouvrir cette popup dans une nouvelle fenêtre afin de pouvoir vous connecter à l'aide de l'U2F ?" }, "enableFavicon": { - "message": "Afficher les icônes du site web" + "message": "Afficher les icônes des sites web" }, "faviconDesc": { - "message": "Afficher une image reconnaissable à côté de chaque identifiant." + "message": "Affiche une image reconnaissable à côté de chaque identifiant." + }, + "faviconDescAlt": { + "message": "Affiche une image reconnaissable à côté de chaque identifiant. S'applique à tous les comptes connectés." }, "enableBadgeCounter": { "message": "Afficher le compteur de badge" }, "badgeCounterDesc": { - "message": "Indique le nombre d'identifiants que vous avez pour la page web actuelle." + "message": "Indique le nombre d'identifiants dont vous disposez pour la page web en cours." }, "cardholderName": { "message": "Nom du titulaire de la carte" @@ -1170,7 +1279,7 @@ "message": "Numéro de passeport" }, "licenseNumber": { - "message": "Numéro de permis de Conduire" + "message": "Numéro de licence" }, "email": { "message": "Courriel" @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Code PIN invalide." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Trop de tentatives de saisie du code PIN incorrectes. Déconnexion." + }, "unlockWithBiometrics": { "message": "Déverrouiller par biométrie" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restaurer l'élément" }, - "restoreItemConfirmation": { - "message": "Êtes-vous sûr de vouloir restaurer cet élément ?" - }, "restoredItem": { "message": "Élément restauré" }, @@ -1462,7 +1571,7 @@ "message": "Élément saisi automatiquement" }, "insecurePageWarning": { - "message": "Avertissement : il s'agit d'une page HTTP non sécurisée, et toute information que vous soumettez peut potentiellement être vue et modifiée par d'autres. À l'origine, cet identifiant a été enregistré sur une page sécurisée (HTTPS)." + "message": "Avertissement : il s'agit d'une page HTTP non sécurisée, et toute information que vous soumettez peut potentiellement être vue et modifiée par un tiers. À l'origine, cet identifiant a été enregistré sur une page sécurisée (HTTPS)." }, "insecurePageWarningFillPrompt": { "message": "Voulez-vous toujours saisir automatiquement cet identifiant ?" @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Le déverrouillage biométrique dans le navigateur n’est pas pris en charge sur cet appareil" }, + "biometricsFailedTitle": { + "message": "Le déverrouillage biométique a échoué\n" + }, + "biometricsFailedDesc": { + "message": "Impossible d'utiliser le déverrouillage biométrique, utilisez votre mot de passe principal ou déconnectez-vous. Si le problème persiste, veuillez contacter le support Bitwarden." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission non accordée" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Une politique d'organisation affecte vos options de propriété." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Une politique d'organisation a bloqué l'import d'éléments dans votre coffre personel." + }, "excludedDomains": { "message": "Domaines exclus" }, "excludedDomainsDesc": { - "message": "Bitwarden ne proposera pas d'enregistrer les informations de connexion pour ces domaines. Vous devez actualiser la page pour que les modifications prennent effet." + "message": "Bitwarden ne demandera pas d'enregistrer les détails de connexion pour ces domaines. Vous devez actualiser la page pour que les modifications prennent effet." + }, + "excludedDomainsDescAlt": { + "message": "Bitwarden ne demandera pas d'enregistrer les détails de connexion pour ces domaines pour tous les comptes connectés. Vous devez actualiser la page pour que les modifications prennent effet." }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ n'est pas un domaine valide", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1766,7 +1887,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { - "message": "Copier dans le presse-papiers le lien de ce Send lors de l'enregistrement.", + "message": "Copier le lien de ce Send dans le presse-papiers lors de l'enregistrement.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTextDesc": { @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Sélectionnez un dossier..." }, - "ssoCompleteRegistration": { - "message": "Afin de finaliser la connexion avec SSO, veuillez définir un mot de passe principal pour accéder et protéger votre coffre." + "noFoldersFound": { + "message": "Aucun dossier trouvé", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Les autorisations de votre organisation ont été mises à jour, vous obligeant à définir un mot de passe principal.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Votre organisation exige que vous définissiez un mot de passe principal.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Vérification requise", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Heures" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Export du coffre personnel" }, - "exportingPersonalVaultDescription": { - "message": "Seuls les éléments individuels du coffre associés à $EMAIL$ seront exportés. Les éléments du coffre de l'organisation ne seront pas inclus.", + "exportingIndividualVaultDescription": { + "message": "Seuls les éléments individuels du coffre associés à $EMAIL$ seront exportés. Les éléments du coffre de l'organisation ne seront pas inclus. Seules les informations sur les éléments du coffre seront exportées et n'incluront pas les pièces jointes associées.", "placeholders": { "email": { "content": "$1", @@ -2032,7 +2166,7 @@ "message": "Service" }, "forwardedEmail": { - "message": "Alias d'email transféré" + "message": "Alias de courriel transféré" }, "forwardedEmailDesc": { "message": "Générer un alias de courriel avec un service de transfert externe." @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Version du serveur" }, - "selfHosted": { - "message": "Auto-hébergé" + "selfHostedServer": { + "message": "auto-hébergé" }, "thirdParty": { "message": "Tierce partie" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Une notification a été envoyée à votre appareil." }, - "logInInitiated": { + "loginInitiated": { "message": "Connexion initiée" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Comment saisir automatiquement" }, "autofillSelectInfoWithCommand": { - "message": "Sélectionnez un élément depuis cette page ou utilisez le raccourci : $COMMAND$", + "message": "Sélectionnez un élément à partir de cet écran, utilisez le raccourci $COMMAND$ ou explorez d'autres options dans les paramètres.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Sélectionnez un élément depuis cette page ou définissez un raccourci dans les paramètres." + "message": "Sélectionnez un élément à partir de cet écran ou explorez d'autres options dans les paramètres." }, "gotIt": { "message": "Compris" @@ -2221,19 +2355,36 @@ } } }, - "region": { - "message": "Région" + "loggingInOn": { + "message": "Connexion sur" }, "opensInANewWindow": { "message": "S'ouvre dans une nouvelle fenêtre" }, - "eu": { - "message": "EU", - "description": "European Union" + "deviceApprovalRequired": { + "message": "L'approbation de l'appareil est requise. Sélectionnez une option d'approbation ci-dessous :" }, - "us": { - "message": "US", - "description": "United States" + "rememberThisDevice": { + "message": "Se souvenir de cet appareil" + }, + "uncheckIfPublicDevice": { + "message": "Décocher si vous utilisez un appareil public" + }, + "approveFromYourOtherDevice": { + "message": "Approuver sur votre autre appareil" + }, + "requestAdminApproval": { + "message": "Demander l'approbation de l'administrateur" + }, + "approveWithMasterPassword": { + "message": "Approuver avec le mot de passe principal" + }, + "ssoIdentifierRequired": { + "message": "Identifiant SSO de l'organisation requis." + }, + "eu": { + "message": "UE", + "description": "European Union" }, "accessDenied": { "message": "Accès refusé. Vous n'avez pas l'autorisation de voir cette page." @@ -2243,5 +2394,619 @@ }, "display": { "message": "Affichage" + }, + "accountSuccessfullyCreated": { + "message": "Compte créé avec succès !" + }, + "adminApprovalRequested": { + "message": "Approbation de l'administrateur demandée" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Demande transmise à votre administrateur." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Vous serez notifié une fois approuvé." + }, + "troubleLoggingIn": { + "message": "Problème pour vous connecter ?" + }, + "loginApproved": { + "message": "Connexion approuvée" + }, + "userEmailMissing": { + "message": "Courriel de l'utilisateur manquant" + }, + "deviceTrusted": { + "message": "Appareil de confiance" + }, + "inputRequired": { + "message": "Saisie requise." + }, + "required": { + "message": "requis" + }, + "search": { + "message": "Rechercher" + }, + "inputMinLength": { + "message": "La saisie doit comporter au moins $COUNT$ caractères.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "La saisie ne doit pas dépasser $COUNT$ caractères de long.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Les caractères suivants ne sont pas autorisés : $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "La valeur d'entrée doit être au moins de $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "La valeur d'entrée ne doit pas excéder $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "Une ou plusieurs adresses e-mail ne sont pas valides" + }, + "inputTrimValidator": { + "message": "La saisie ne doit pas contenir que des espaces.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "La saisie n'est pas une adresse e-mail." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ champ(s) ci-dessus nécessitent votre attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Sélectionner --" + }, + "multiSelectPlaceholder": { + "message": "-- Saisir pour filtrer --" + }, + "multiSelectLoading": { + "message": "Récupération des options..." + }, + "multiSelectNotFound": { + "message": "Aucun élément trouvé" + }, + "multiSelectClearAll": { + "message": "Effacer tout" + }, + "plusNMore": { + "message": "+ $QUANTITY$ de plus", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Sous-menu" + }, + "toggleCollapse": { + "message": "Déplier/Replier", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Importer vos données dans Bitwarden ?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protéger vos données LastPass et importer dans Bitwarden ?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Enregistrer en tant que fichier non chiffré", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importer vers Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importation en cours...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Données importées avec succès !", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Erreur lors de l'importation. Consultez la console pour plus de détails.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Une erreur réseau s'est produite lors de l'importation.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Domaine de l'alias" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Les éléments pour lesquels le mot de passe principal est redemandé ne peuvent pas être remplis automatiquement lors du chargement de la page. La saisie automatique au chargement de la page est désactivée.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "La saisie automatique au chargement de la page est configuré selon les paramètres par défaut.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Désactivez la resaisie du mot de passe maître pour éditer ce champ", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Accéder directement au contenu" + }, + "bitwardenOverlayButton": { + "message": "Bouton menu de saisie automatique Bitwarden", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "(Dés)activer le menu de saisie automatique de Bitwarden", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Menu de saisie automatique Bitwarden", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Déverrouillez votre compte pour afficher les identifiants correspondants", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Déverrouiller le compte", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Remplir les identifiants pour", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Nom d'utilisateur partiel", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Aucun élément à afficher", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Nouvel élément", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Ajouter un nouvel élément de coffre", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Menu de saisie automatique de Bitwarden disponible. Appuyez sur la touche Flèche bas pour sélectionner.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Activer" + }, + "ignore": { + "message": "Ignorer" + }, + "importData": { + "message": "Importer des données", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Erreur lors de l'importation" + }, + "importErrorDesc": { + "message": "Il y a eu un problème avec les données que vous avez essayé d'importer. Veuillez résoudre les erreurs listées ci-dessous dans votre fichier source et réessayer." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Résolvez les erreurs ci-dessous et réessayez." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Données importées avec succès" + }, + "importSuccessNumberOfItems": { + "message": "Un total de $AMOUNT$ élément(s) a été importé.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Essayez de nouveau" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Vérification requise pour cette action. Définissez un code PIN pour continuer." + }, + "setPin": { + "message": "Définir le code PIN" + }, + "verifyWithBiometrics": { + "message": "Vérifier par biométrie" + }, + "awaitingConfirmation": { + "message": "En attente de confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Impossible de compléter la biométrie." + }, + "needADifferentMethod": { + "message": "Besoin d'une méthode différente ?" + }, + "useMasterPassword": { + "message": "Utiliser le mot de passe principal" + }, + "usePin": { + "message": "Utiliser le code PIN" + }, + "useBiometrics": { + "message": "Utiliser la biométrie" + }, + "enterVerificationCodeSentToEmail": { + "message": "Entrez le code de vérification qui a été envoyé à votre adresse de messagerie." + }, + "resendCode": { + "message": "Renvoyer le code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "Vous importez des données vers $ORGANIZATION$. Vos données pourraient être partagées avec les membres de cette organisation. Voulez-vous continuer ?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Lancez DUO et suivez les étapes pour terminer la connexion." + }, + "duoRequiredForAccount": { + "message": "L'authentification à deux facteurs Duo est requise pour votre compte." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Faire apparaître l'extension pour terminer la connexion." + }, + "popoutExtension": { + "message": "Détacher l'extension" + }, + "launchDuo": { + "message": "Lancer DUO" + }, + "importFormatError": { + "message": "Les données ne sont pas formatées correctement. Veuillez vérifier votre fichier d'origine et réessayer." + }, + "importNothingError": { + "message": "Rien n'a été importé." + }, + "importEncKeyError": { + "message": "Erreur lors du déchiffrement du fichier exporté. Votre clé de chiffrement ne correspond pas à la clé utilisée pour exporter les données." + }, + "invalidFilePassword": { + "message": "Mot de passe du fichier incorrect, veuillez utiliser le mot de passe saisi lors de l'exportation du fichier." + }, + "importDestination": { + "message": "Importer la destination" + }, + "learnAboutImportOptions": { + "message": "En savoir plus sur vos options d'importation" + }, + "selectImportFolder": { + "message": "Choisir un dossier" + }, + "selectImportCollection": { + "message": "Sélectionner une collection" + }, + "importTargetHint": { + "message": "Sélectionnez cette option si vous voulez que le contenu du fichier importé soit déplacé vers un(e) $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Le fichier contient des éléments non assignés." + }, + "selectFormat": { + "message": "Sélectionnez le format du fichier d'import" + }, + "selectImportFile": { + "message": "Sélectionnez le fichier d'import" + }, + "chooseFile": { + "message": "Choisir le fichier" + }, + "noFileChosen": { + "message": "Aucun fichier choisi" + }, + "orCopyPasteFileContents": { + "message": "ou copiez/collez les contenus du fichier d'importation" + }, + "instructionsFor": { + "message": "Instructions $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirmez l'import du coffre" + }, + "confirmVaultImportDesc": { + "message": "Ce fichier est protégé par mot de passe. Veuillez entrer le mot de passe du fichier pour importer des données." + }, + "confirmFilePassword": { + "message": "Confirmez le mot de passe du fichier" + }, + "typePasskey": { + "message": "Clé d'identification (passkey)" + }, + "passkeyNotCopied": { + "message": "La clé d'identification (passkey) ne sera pas copiée" + }, + "passkeyNotCopiedAlert": { + "message": "La clé d'identification (passkey) ne sera pas copiée dans l'élément cloné. Voulez-vous continuer à cloner cet élément ?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Vérification requise par le site initiateur. Cette fonctionnalité n'est pas encore implémentée pour les comptes sans mot de passe principal." + }, + "logInWithPasskey": { + "message": "Se connecter avec une clé d'identification (passkey) ?" + }, + "passkeyAlreadyExists": { + "message": "Une clé d'identification (passkey) existe déjà pour cette application." + }, + "noPasskeysFoundForThisApplication": { + "message": "Aucune clé d'identification (passkey) trouvée pour cette application." + }, + "noMatchingPasskeyLogin": { + "message": "Vous n'avez pas d'identifiant correspondant à ce site." + }, + "confirm": { + "message": "Confirmer" + }, + "savePasskey": { + "message": "Enregistrer la clé d'identification (passkey)" + }, + "savePasskeyNewLogin": { + "message": "Enregistrer la clé d'identification (passkey) comme nouvel identifiant" + }, + "choosePasskey": { + "message": "Choisissez cette clé d'identification (passkey) pour l'enregistrer avec cet identifiant" + }, + "passkeyItem": { + "message": "Élément clé d'identification (passkey)" + }, + "overwritePasskey": { + "message": "Écraser la clé d'identification (passkey) ?" + }, + "overwritePasskeyAlert": { + "message": "Cet élément contient déjà une clé d'identification (passkey). Êtes-vous sûr de vouloir écraser la clé d'identification (passkey) actuelle ?" + }, + "featureNotSupported": { + "message": "Fonctionnalité non supportée" + }, + "yourPasskeyIsLocked": { + "message": "Authentification requise pour utiliser une clé d'identification (passkey). Vérifiez votre identité pour continuer." + }, + "multifactorAuthenticationCancelled": { + "message": "Authentification multi-facteurs annulée" + }, + "noLastPassDataFound": { + "message": "Aucune donnée LastPass trouvée" + }, + "incorrectUsernameOrPassword": { + "message": "Nom d'utilisateur ou mot de passe incorrect" + }, + "incorrectPassword": { + "message": "Mot de passe incorrect" + }, + "incorrectCode": { + "message": "Code incorrect" + }, + "incorrectPin": { + "message": "Code PIN incorrect" + }, + "multifactorAuthenticationFailed": { + "message": "Authentification multifacteur échouée" + }, + "includeSharedFolders": { + "message": "Inclure les dossiers partagés" + }, + "lastPassEmail": { + "message": "Courriel LastPass" + }, + "importingYourAccount": { + "message": "Importation de votre compte..." + }, + "lastPassMFARequired": { + "message": "Authentification multi-facteurs LastPass requise" + }, + "lastPassMFADesc": { + "message": "Entrez votre code d'accès unique depuis votre application d'authentification" + }, + "lastPassOOBDesc": { + "message": "Approuvez la demande de connexion dans votre application d'authentification ou saisissez le code d'accès à usage unique." + }, + "passcode": { + "message": "Code d'accès" + }, + "lastPassMasterPassword": { + "message": "Mot de passe principal LastPass" + }, + "lastPassAuthRequired": { + "message": "Authentification LastPass requise" + }, + "awaitingSSO": { + "message": "En attente de l'authentification SSO" + }, + "awaitingSSODesc": { + "message": "Veuillez continuer à vous connecter en utilisant les identifiants de votre entreprise." + }, + "seeDetailedInstructions": { + "message": "Consultez les instructions détaillées sur notre site d'aide à", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Importer directement de LastPass" + }, + "importFromCSV": { + "message": "Importer depuis un fichier CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Essayez à nouveau ou cherchez un courriel de LastPass pour vérifier que c'est vous." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insérez la YubiKey associée à votre compte LastPass dans le port USB de votre ordinateur, puis appuyez sur son bouton." + }, + "switchAccount": { + "message": "Basculer le compte" + }, + "switchAccounts": { + "message": "Basculer les comptes" + }, + "switchToAccount": { + "message": "Basculer vers le compte" + }, + "activeAccount": { + "message": "Compte actif" + }, + "availableAccounts": { + "message": "Comptes disponibles" + }, + "accountLimitReached": { + "message": "Limite du compte atteinte. Déconnectez-vous d'un compte pour en ajouter un autre." + }, + "active": { + "message": "actif" + }, + "locked": { + "message": "verrouillé" + }, + "unlocked": { + "message": "déverrouillé" + }, + "server": { + "message": "serveur" + }, + "hostedAt": { + "message": "hébergé sur" + }, + "useDeviceOrHardwareKey": { + "message": "Utilisez votre appareil ou votre clé matérielle" + }, + "justOnce": { + "message": "Une seule fois" + }, + "alwaysForThisSite": { + "message": "Toujours pour ce site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ a été ajouté à la liste des domaines exclus.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Formats communs", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Faire de Bitwarden votre gestionnaire de mots de passe par défaut ?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignorer cette option peut causer des conflits entre le menu de saisie automatique de Bitwarden et celui de votre navigateur.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Faire de Bitwarden votre gestionnaire de mots de passe par défaut", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Impossible de définir Bitwarden comme gestionnaire de mots de passe par défaut", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Vous devez accorder les permissions de confidentialité du navigateur à Bitwarden pour le définir comme gestionnaire de mots de passe par défaut.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Définir par défaut", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Identifiants enregistrés avec succès !", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Identifiants mis à jour avec succès !", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Erreur lors de l'enregistrement des identifiants. Consultez la console pour plus de détails.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Retirer la clé d'identification (passkey)" + }, + "passkeyRemoved": { + "message": "Clé d'identification (passkey) retirée" + }, + "unassignedItemsBanner": { + "message": "Notice : les éléments d'organisation non assignés ne sont plus visibles dans la vue Tous les coffres et sont uniquement accessibles via la console d'administration. Assignez ces éléments à une collection à partir de la console d'administration pour les rendre visibles." } } diff --git a/apps/browser/src/_locales/gl/messages.json b/apps/browser/src/_locales/gl/messages.json index 9e46b55f19..dc91c1e6a9 100644 --- a/apps/browser/src/_locales/gl/messages.json +++ b/apps/browser/src/_locales/gl/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-fill" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "Length" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Password" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Passphrase" }, @@ -338,6 +368,12 @@ "other": { "message": "Other" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Immediately" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Your new account has been created! You may now log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We've sent you an email with your master password hint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Ask to add an item if one isn't found in your vault." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, "notificationChangeSave": { "message": "Update" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "Default URI match detection", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Dark", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Invalid PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restore item" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Item restored" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/he/messages.json b/apps/browser/src/_locales/he/messages.json index 439f321609..7a05907228 100644 --- a/apps/browser/src/_locales/he/messages.json +++ b/apps/browser/src/_locales/he/messages.json @@ -59,7 +59,7 @@ "message": "הכספת שלי" }, "allVaults": { - "message": "All vaults" + "message": "כל הכספות" }, "tools": { "message": "כלים" @@ -91,15 +91,39 @@ "autoFill": { "message": "השלמה אוטומטית" }, + "autoFillLogin": { + "message": "מילוי פרטי כניסה אוטומטית" + }, + "autoFillCard": { + "message": "מילוי פרטי כרטיס אוטומטית" + }, + "autoFillIdentity": { + "message": "מילוי פרטי זיהוי אוטומטית" + }, "generatePasswordCopied": { "message": "צור סיסמה (העתק)" }, "copyElementIdentifier": { - "message": "Copy custom field name" + "message": "העתקת שם שדה מותאם אישית" }, "noMatchingLogins": { "message": "לא נמצאו פרטי כניסה תואמים." }, + "noCards": { + "message": "אין כרטיסים" + }, + "noIdentities": { + "message": "אין זהויות" + }, + "addLoginMenu": { + "message": "הוספת פרטי כניסה" + }, + "addCardMenu": { + "message": "הוספת כרטיס" + }, + "addIdentityMenu": { + "message": "הוספת זהות" + }, "unlockVaultMenu": { "message": "שחרור הכספת שלך" }, @@ -172,7 +196,7 @@ "message": "שמור" }, "move": { - "message": "Move" + "message": "העברה" }, "addFolder": { "message": "הוסף תיקייה" @@ -196,7 +220,7 @@ "message": "עזרה ומשוב" }, "helpCenter": { - "message": "Bitwarden Help center" + "message": "מרכז העזרה של Bitwarden" }, "communityForums": { "message": "Explore Bitwarden community forums" @@ -244,6 +268,9 @@ "length": { "message": "אורך" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "סיסמה" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "משפט סיסמה" }, @@ -338,6 +368,12 @@ "other": { "message": "אחר" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "דירוג הרחבה" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "נעל עכשיו" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "באופן מיידי" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "החשבון שלך נוצר בהצלחה! כעת ניתן להכנס למערכת." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "שלחנו לך אימייל עם רמז לסיסמה הראשית." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "לא הצלחנו לבצע פעולת השלמה האוטומטית בעמוד זה. אנא העתק והדבק את המידע הנחוץ בצורה ידנית." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "בוצעה יציאה" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "ההודעה \"שמור פרטי כניסה\" מופיעה בכל פעם שתכנס לאתר חדש בפעם הראשונה." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "האם ברצונך לעדכן את הסיסמה הזו בתוכנת Bitwarden?" }, "notificationChangeSave": { "message": "כן, עדכן עכשיו" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "ברירת מחדל לזיהוי התאמת כתובות", @@ -649,6 +727,9 @@ "themeDesc": { "message": "שנה את ערכת הצבע של האפליקציה." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "כהה", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "יכולת זו לא זמינה" }, - "updateKey": { - "message": "לא ניתן להשתמש ביכולת זו עד שתעדכן את מפתח ההצפנה שלך." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "חשבון פרימיום" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 ג'יגה של מקום אחסון עבור קבצים מצורפים." }, - "ppremiumSignUpTwoStep": { - "message": "אפשרויות כניסה דו שלבית מתקדמות כמו YubiKey, FIDO U2F, וגם Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "היגיינת סיסמאות, מצב בריאות החשבון, ודיווחים מעודכנים על פרצות חדשות בכדי לשמור על הכספת שלך בטוחה." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "כתובות הסביבה נשמרו." }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "הפעל השלמה אוטומטית בזמן טעינת העמוד" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "קוד PIN לא תקין." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "פתח נעילה עם זיהוי ביומטרי" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "שחזר פריט" }, - "restoreItemConfirmation": { - "message": "האם אתה בטוח שברצונך לשחזר פריט זה?" - }, "restoredItem": { "message": "פריט ששוחזר" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "מכשיר זה לא תומך בזיהוי ביומטרי בדפדפן." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "הרשאה לא סופקה" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "מדיניות ארגונית משפיעה על אפשרויות הבעלות שלך." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "הרשאות הארגון שלך עודכנו, מה שמאלץ אותך להגדיר סיסמה ראשית.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "הארגון שלך דורש ממך להגדיר סיסמה ראשית.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "הכספת האישית מיוצאת" }, - "exportingPersonalVaultDescription": { - "message": "רק פריטי הכספת האישית שמשויכת אל $EMAIL$ ייוצאו. פריטי הכספת הארגוניים לא יהיו חלק מהייצוא.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "תצוגה" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "ייבוא נתונים", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "שגיאת ייבוא" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "תיאור" + }, + "importSuccess": { + "message": "הנתונים יובאו בהצלחה" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "סך הכול" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "יעד ייבוא" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "תסדירים נפוצים", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/hi/messages.json b/apps/browser/src/_locales/hi/messages.json index eb08d59c2a..99daecc5f8 100644 --- a/apps/browser/src/_locales/hi/messages.json +++ b/apps/browser/src/_locales/hi/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "स्वत:भरण" }, + "autoFillLogin": { + "message": "स्वचालित लॉगिन विवरण" + }, + "autoFillCard": { + "message": "स्वचालित कार्ड विवरण" + }, + "autoFillIdentity": { + "message": "स्वचालित पहचान विवरण" + }, "generatePasswordCopied": { "message": "Generate Password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "कोई मेल-मिला लॉगिन नहीं |" }, + "noCards": { + "message": "कोई कार्ड उपलब्ध नहीं" + }, + "noIdentities": { + "message": "कोई पहचान उपलब्ध नहीं" + }, + "addLoginMenu": { + "message": "लॉगिन जोड़ें" + }, + "addCardMenu": { + "message": "कार्ड जोड़ें" + }, + "addIdentityMenu": { + "message": "पहचान जोड़ें" + }, "unlockVaultMenu": { "message": "आपकी तिजोरी का ताला खोलें" }, @@ -199,7 +223,7 @@ "message": "बिटवॉर्डेन सहायता केंद्र" }, "communityForums": { - "message": "Explore Bitwarden community forums" + "message": "Bitwarden सामुदायिक मंचों का अन्वेषण करें" }, "contactSupport": { "message": "बिटवॉर्डेन सहायता से संपर्क करें" @@ -244,6 +268,9 @@ "length": { "message": "लंबाई" }, + "passwordMinLength": { + "message": "न्यूनतम पासवर्ड लंबाई" + }, "uppercase": { "message": "बड़े अक्षर (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "पासवर्ड" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "पासफ़्रेज़" }, @@ -338,6 +368,12 @@ "other": { "message": "अन्य" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the Extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock Now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "तत्‍काल" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "आपका नया खाता बनाया गया है! अब आप लॉग इन कर सकते हैं।" }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "हमने आपको अपने मास्टर पासवर्ड संकेत के साथ एक ईमेल भेजा है।" }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected login on this page. Copy/paste your username and/or password instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "लॉग आउट" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "टैब पेज पर कार्ड दिखाएं" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "किसी वेबसाइट पर परिवर्तन का पता चलने पर लॉगिन का पासवर्ड अपडेट करने के लिए कहें।" }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "पासकी सहेजने और उपयोग करने के लिए पूछें" + }, + "usePasskeysDesc": { + "message": "नई पासकी सहेजने के लिए कहें या अपनी तिजोरी में संग्रहीत पासकी से लॉग इन करें। सभी लॉग इन किए गए खातों पर लागू होता है।" + }, "notificationChangeDesc": { "message": "क्या आप बिटवर्डन में इस पासवर्ड को अपडेट करना चाहते हैं?" }, "notificationChangeSave": { "message": "Yes, Update Now" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "संदर्भ मेनू विकल्प दिखाएं" }, "contextMenuItemDesc": { "message": "वेबसाइट के लिए पासवर्ड जेनरेशन और मैचिंग लॉग इन तक पहुंचने के लिए सेकेंडरी क्लिक का उपयोग करें। " }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "डिफॉल्ट URI मैच डिटेक्शन", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "अंधेरा", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature Unavailable" }, - "updateKey": { - "message": "जब तक आप अपनी एन्क्रिप्शन कुंजी को अपडेट नहीं करते, तब तक आप इस सुविधा का उपयोग नहीं कर सकते हैं।" + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium Membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB of encrypted file storage." }, - "ppremiumSignUpTwoStep": { - "message": "अतिरिक्त दो-चरण लॉगिन विकल्प जैसे YubiKey, FIDO U2F, और डुओ।" + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "अपनी वॉल्ट को सुरक्षित रखने के लिए पासवर्ड स्वच्छता, खाता स्वास्थ्य और डेटा उल्लंघन रिपोर्ट।" @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "पर्यावरण URL को बचाया गया है।" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "टकराव से बचने के लिए अपने ब्राउज़र की अंतर्निहित पासवर्ड प्रबंधक सेटिंग को बंद करें." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "ब्राउज़र सेटिंग संपादित करें." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Enable Auto-fill On Page Load." }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "प्रत्येक लॉगिन के आगे एक पहचानने योग्य छवि दिखाएं।" }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "बैज काउंटर दिखाएं" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "अमान्य पिन कोड।" }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "बायोमेट्रिक्स का उपयोग कर अनलॉक करें" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "आइटम बहाल करें" }, - "restoreItemConfirmation": { - "message": "क्या आप सुनिश्चित हैं कि आप इस आइटम को बहाल करना चाहते हैं?" - }, "restoredItem": { "message": "बहाल आइटम" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "ब्राउज़र बॉयोमीट्रिक्स इस डिवाइस पर समर्थित नहीं है।" }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "अनुमति नहीं दी गयी है" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "एक संगठन नीति आपके स्वामित्व विकल्पों को प्रभावित कर रही है।" }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "बहिष्कृत डोमेन" }, "excludedDomainsDesc": { "message": "बिटवर्डन इन डोमेन के लिए लॉगिन विवरण सहेजने के लिए नहीं कहेगा।परिवर्तनों को प्रभावी बनाने के लिए आपको पृष्ठ को ताज़ा करना होगा |" }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "फ़ोल्डर चुनें..." }, - "ssoCompleteRegistration": { - "message": "SSO के साथ लॉग-इन पूर्ण करने के लिए, कृपया अपनी तिजोरी तक पहुँचने और सुरक्षित रखने के लिए एक मास्टर पासवर्ड सेट करें।" + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "घंटे" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "केवल $EMAIL$ से संबद्ध, व्यक्तिगत वॉल्ट वस्तुएँ निर्यात की जाएंगी. संगठन वॉल्ट वस्तुएँ शामिल नहीं की जाएंगी. केवल वॉल्ट वस्तुओं की जानकारी निर्यात की जाएगी और इसमें संबंधित अनुलग्नक शामिल नहीं होंगे.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "ऑटो-फ़िल कैसे करें" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "डोमेन उपनाम" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "सीधे सामग्री पर जाएं" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "हमारी सहायता वेब पृष्ठ पर विस्तृत निर्देश देखें", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/hr/messages.json b/apps/browser/src/_locales/hr/messages.json index 3b01d015d1..ec4509dbd4 100644 --- a/apps/browser/src/_locales/hr/messages.json +++ b/apps/browser/src/_locales/hr/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-ispuna" }, + "autoFillLogin": { + "message": "Auto-ispuna prijave" + }, + "autoFillCard": { + "message": "Auto-ispuna kartice" + }, + "autoFillIdentity": { + "message": "Auto-ispuna identiteta" + }, "generatePasswordCopied": { "message": "Generiraj lozinku (i kopiraj)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Nema podudarajućih prijava" }, + "noCards": { + "message": "Nema kartica" + }, + "noIdentities": { + "message": "Nema identiteta" + }, + "addLoginMenu": { + "message": "Dodaj prijavu" + }, + "addCardMenu": { + "message": "Dodaj karticu" + }, + "addIdentityMenu": { + "message": "Dodaj identitet" + }, "unlockVaultMenu": { "message": "Otključaj svoj trezor" }, @@ -244,6 +268,9 @@ "length": { "message": "Duljina" }, + "passwordMinLength": { + "message": "Minimalna duljina lozinke" + }, "uppercase": { "message": "Velika slova (A - Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Lozinka" }, + "totp": { + "message": "Tajna autentifikatora" + }, "passphrase": { "message": "Frazna lozinka" }, @@ -338,6 +368,12 @@ "other": { "message": "Ostalo" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Za promjenu vremena isteka trezora, odredi način otključavanja." + }, + "unlockMethodNeeded": { + "message": "Postavi način otključavanja u Postavkama" + }, "rateExtension": { "message": "Ocijeni proširenje" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Zaključaj sada" }, + "lockAll": { + "message": "Zaključaj sve" + }, "immediately": { "message": "Odmah" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Tvoj novi račun je kreiran! Sada se možeš prijaviti." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "Poslali smo e-poštu s podsjetnikom glavne lozinke." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Nije moguće auto-ispuniti odabranu prijavu na ovoj stranici. Umjesto toga kopiraj/zalijepi podatke." }, + "totpCaptureError": { + "message": "Nije moguće skenirati QR kod s trenutne web stranice" + }, + "totpCaptureSuccess": { + "message": "Ključ autentifikatora je dodan" + }, + "totpCapture": { + "message": "Skenirajte QR kod autentifikatora s trenutne web stranice" + }, + "copyTOTP": { + "message": "Kopiraj ključ autentifikatora (TOTP)" + }, "loggedOut": { "message": "Odjavljen" }, @@ -592,6 +649,9 @@ "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." }, + "addLoginNotificationDescAlt": { + "message": "Pitaj za dodavanje stavke ako nije pronađena u tvojem trezoru. Primjenjuje se na sve prijavljene račune." + }, "showCardsCurrentTab": { "message": "Prikaži platne kartice" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Upitaj za ažuriranje lozinke prijave ako se otkrije promjena na web stranici." }, + "changedPasswordNotificationDescAlt": { + "message": "Pitaj za ažuriranje lozinke za prijavu kada se otkrije promjena na web stranici. Primjenjuje se na sve prijavljene račune." + }, + "enableUsePasskeys": { + "message": "Pitaj za spremanje i korištenje pristupnih ključeva" + }, + "usePasskeysDesc": { + "message": "Pitaj za spremanje novih pristupnih ključeva ili se prijavi pomoću pristupnih ključeva pohranjenih u tvojem trezoru. Primjenjuje se na sve prijavljene račune." + }, "notificationChangeDesc": { "message": "Želiš li ovu lozinku ažurirati u Bitwarden-u?" }, "notificationChangeSave": { "message": "Ažuriraj" }, + "notificationUnlockDesc": { + "message": "Za dovršetak auto-ispune, otključaj svoj trezor." + }, + "notificationUnlock": { + "message": "Otključaj" + }, "enableContextMenuItem": { "message": "Prikaži opcije kotekstualnog izbornika" }, "contextMenuItemDesc": { "message": "Koristi sekundarni klik za pristup generatoru lozinki i pripadajućim prijavama trenunte web stranice. " }, + "contextMenuItemDescAlt": { + "message": "Koristi sekundarni klik za pristup generiranju lozinki i odgovarajućim prijavama za mrežno mjesto. Primjenjuje se na sve prijavljene račune." + }, "defaultUriMatchDetection": { "message": "Zadano otkrivanje URI podudaranja", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Promijeni temu boja." }, + "themeDescAlt": { + "message": "Promijeni boju aplikacije. Primjenjuje se na sve prijavljene račune." + }, "dark": { "message": "Tamna", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Značajka nije dostupna" }, - "updateKey": { - "message": "Ne možeš koristiti ovu značajku prije nego ažuriraš ključ za šifriranje." + "encryptionKeyMigrationRequired": { + "message": "Potrebna je migracija ključa za šifriranje. Prijavi se na web trezoru za ažuriranje ključa za šifriranje." }, "premiumMembership": { "message": "Premium članstvo" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB šifriranog prostora za pohranu podataka." }, - "ppremiumSignUpTwoStep": { - "message": "Dodatne mogućnosti za prijavu dvostrukom autentifikacijom kao što su YubiKey, FIDO U2F i Duo." + "premiumSignUpTwoStepOptions": { + "message": "Mogućnosti za prijavu u dva koraka kao što su YubiKey i Duo." }, "ppremiumSignUpReports": { "message": "Higijenu lozinki, zdravlje računa i izvještaje o krađi podatak radi zaštite svojeg trezora." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "URL-ovi okoline su spremljeni." }, + "showAutoFillMenuOnFormFields": { + "message": "Prikaži izbornik za auto-ispunu u poljima obrasca", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Primjenjuje se na sve prijavljene račune." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Isključite postavke upravitelja zaporki ugrađene u preglednik kako biste izbjegli sukobe." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Uredi postavke preglednika." + }, + "autofillOverlayVisibilityOff": { + "message": "Isključeno", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Kada je odabrano polje (u fokusu)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Kada je odabrana ikona auto-ispune", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-ispuna kod učitavanja" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Prikaži prepoznatljivu sliku pored svake prijave." }, + "faviconDescAlt": { + "message": "Prikaži prepoznatljivu sliku pokraj svake prijave. Primjenjuje se na sve prijavljene račune." + }, "enableBadgeCounter": { "message": "Prikaži značku brojača" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Nerispravan PIN." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Otključaj biometrijom" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Vrati stavku" }, - "restoreItemConfirmation": { - "message": "Sigurno želiš vratiti ovu stavku?" - }, "restoredItem": { "message": "Stavka vraćena" }, @@ -1450,7 +1559,7 @@ "message": "Odjava će ukloniti pristup tvom trezoru i zahtijevati mrežnu potvrdu identiteta nakon isteka vremenske neaktivnosti. Sigurno želiš koristiti ovu postavku?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Potvrda akcije vremenske neaktivnosti" + "message": "Potvrda radnje nakon vremenske neaktivnosti" }, "autoFillAndSave": { "message": "Auto-ispuni i spremi" @@ -1462,16 +1571,16 @@ "message": "Auto-ispunjena stavka" }, "insecurePageWarning": { - "message": "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." + "message": "Upozorenje: Ovo je nezaštićena HTTP stranica i svi podaci koje preko nje pošalješ drugi mogu vidjeti i izmijeniti. Ova prijava je prvotno bila spremljena za sigurnu (HTTPS) stranicu." }, "insecurePageWarningFillPrompt": { - "message": "Do you still wish to fill this login?" + "message": "Želiš li i dalje ispuniti ove podatke za prijavu?" }, "autofillIframeWarning": { - "message": "The form is hosted by a different domain than the URI of your saved login. Choose OK to auto-fill anyway, or Cancel to stop." + "message": "Obrazac je na poslužitelju koji se nalazi na drugačijoj domeni od URI-a za koji su spremljeni tvoji podaci za pristup. Odobri za auto-ispunu ili odustani za prekid." }, "autofillIframeWarningTip": { - "message": "To prevent this warning in the future, save this URI, $HOSTNAME$, to your Bitwarden login item for this site.", + "message": "Kako se ovo upozorenje ubuduće ne bi prikazivalo, spremi ovaj URI ( $HOSTNAME$) u svoju stavku za prijavu.", "placeholders": { "hostname": { "content": "$1", @@ -1483,13 +1592,13 @@ "message": "Postavi glavnu lozinku" }, "currentMasterPass": { - "message": "Current master password" + "message": "Trenutna glavna lozinka" }, "newMasterPass": { - "message": "New master password" + "message": "Nova glavna lozinka" }, "confirmNewMasterPass": { - "message": "Confirm new master password" + "message": "Potvrdi novu glavnu lozinku" }, "masterPasswordPolicyInEffect": { "message": "Jedno ili više pravila organizacije zahtijeva da tvoja glavna lozinka ispunjava sljedeće uvjete:" @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Biometrija preglednika nije podržana na ovom uređaju." }, + "biometricsFailedTitle": { + "message": "Biometrija neuspješna" + }, + "biometricsFailedDesc": { + "message": "Biometrija se ne može dovršiti. Pokušaj glavnom lozinkom ili se odjavi i ponovno prijavi. Ako se ovo nastavi, obrati se Bitwarden podršci." + }, "nativeMessaginPermissionErrorTitle": { "message": "Dopuštenje nije dano" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Pravila organizacije utječu na tvoje mogućnosti vlasništva. " }, + "personalOwnershipPolicyInEffectImports": { + "message": "Organizacijsko pravilo onemogućuje uvoz stavki u tvoj osobni trezor." + }, "excludedDomains": { "message": "Izuzete domene" }, "excludedDomainsDesc": { "message": "Bitwarden neće pitati treba li spremiti prijavne podatke za ove domene. Za primjenu promjena, potrebno je osvježiti stranicu." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden neće tražiti spremanje podataka za prijavu za ove domene za sve prijavljene račune. Moraš osvježiti stranicu kako bi promjene stupile na snagu." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ nije valjana domena", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1872,7 +1993,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." }, "updateWeakMasterPasswordWarning": { - "message": "Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Tvoja glavna lozinka ne zadovoljava pravila ove organizacije. Za pristup trezoru moraš odmah ažurirati svoju glavnu lozinku. Ako nastaviš, odjaviti ćeš se iz trenutne sesije te ćeš se morati ponovno prijaviti. Aktivne sesije na drugim uređajima mogu ostati aktivne do jedan sat." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatsko učlanjenje" @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Odaberi mapu..." }, - "ssoCompleteRegistration": { - "message": "Za dovršetak jedinstvene prijave na razini tvrtke (SSO), postavi glavnu lozinku za pristup i zaštitu tvog trezora." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Moraš postaviti glavnu lozinku jer su dopuštenja tvoje organizacije ažurirana.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Tvoja organizacija zahtijeva da postaviš glavnu lozinku.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "sat(i)" @@ -1893,7 +2027,7 @@ "message": "minuta" }, "vaultTimeoutPolicyInEffect": { - "message": "Pravilo tvoje organizacije utječe na istek trezora. Najveće dozvoljeno vrijeme isteka je $HOURS$:$MINUTES$ h.", + "message": "Pravilo tvoje organizacije podesilo je najveće dozvoljeno vrijeme isteka trezora na $HOURS$:$MINUTES$ h.", "placeholders": { "hours": { "content": "$1", @@ -1906,7 +2040,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is $HOURS$ hour(s) and $MINUTES$ minute(s). Your vault timeout action is set to $ACTION$.", + "message": "Pravilo tvoje organizacije utječe na istek trezora. Najveće dozvoljeno vrijeme isteka je $HOURS$:$MINUTES$ h. Tvoja radnja nakon isteka trezora je: $ACTION$.", "placeholders": { "hours": { "content": "$1", @@ -1923,7 +2057,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "Your organization policies have set your vault timeout action to $ACTION$.", + "message": "Pravilo tvoje organizacije podesilo je radnju nakon isteka trezora na: $ACTION$.", "placeholders": { "action": { "content": "$1", @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Izvoz osobnog trezora" }, - "exportingPersonalVaultDescription": { - "message": "Izvest će se samo stavke osobnog trezora povezanog s $EMAIL$. Stavke organizacijskog trezora neće biti uključene.", + "exportingIndividualVaultDescription": { + "message": "Izvest će se samo stavke osobnog trezora povezanog s $EMAIL$. Stavke organizacijskog trezora neće biti uključene. Izvest će se samo informacija o stavci trezora bez pripadajućih podataka o povijesti lozinki i privitaka.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Verzija poslužitelja" }, - "selfHosted": { - "message": "Vlastiti poslužitelj" + "selfHostedServer": { + "message": "vlastiti poslužitelj" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "Obavijest je poslana na tvoj uređaj." }, - "logInInitiated": { - "message": "Pokrenuta prijava" + "loginInitiated": { + "message": "Prijava pokrenuta" }, "exposedMasterPassword": { "message": "Ukradena glavna lozinka" @@ -2180,7 +2314,7 @@ "message": "Kako auto-ispuniti" }, "autofillSelectInfoWithCommand": { - "message": "Odaberi stavku s ove stranice ili koristi prečac $COMMAND$", + "message": "Odaberi stavku s ovog zaslona, upotrijebi prečac $COMMAND$ ili istraži druge opcije u postavkama.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Odaberi stavku s ove stranice ili namjesti prečac u postavkama." + "message": "Odaberi stavku s ovog zaslona ili istraži druge opcije u postavkama." }, "gotIt": { "message": "U redu" @@ -2221,27 +2355,658 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Prijava na" }, "opensInANewWindow": { - "message": "Opens in a new window" + "message": "Otvara u novom prozoru" + }, + "deviceApprovalRequired": { + "message": "Potrebno je odobriti uređaj. Odaberi metodu odobravanja:" + }, + "rememberThisDevice": { + "message": "Zapamti ovaj uređaj" + }, + "uncheckIfPublicDevice": { + "message": "Odznači ako koristiš javni uređaj" + }, + "approveFromYourOtherDevice": { + "message": "Odobri drugim uređajem" + }, + "requestAdminApproval": { + "message": "Zatraži odobrenje administratora" + }, + "approveWithMasterPassword": { + "message": "Odobri glavnom lozinkom" + }, + "ssoIdentifierRequired": { + "message": "Potreban je identifikator organizacije." }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { - "message": "Access denied. You do not have permission to view this page." + "message": "Pristup odbijen. Nemaš prava vidjeti ovu stranicu." }, "general": { - "message": "General" + "message": "Opće" }, "display": { - "message": "Display" + "message": "Prikaz" + }, + "accountSuccessfullyCreated": { + "message": "Račun je uspješno stvoren!" + }, + "adminApprovalRequested": { + "message": "Zatraženo odobrenje administratora" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Tvoj zahtjev je poslan administratoru." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Dobiti ćeš obavijest kada bude odobreno." + }, + "troubleLoggingIn": { + "message": "Problem s prijavom?" + }, + "loginApproved": { + "message": "Prijava odobrena" + }, + "userEmailMissing": { + "message": "Nedostaje e-pošta korisnika" + }, + "deviceTrusted": { + "message": "Uređaj pouzdan" + }, + "inputRequired": { + "message": "Potreban je unos." + }, + "required": { + "message": "obavezno" + }, + "search": { + "message": "Traži" + }, + "inputMinLength": { + "message": "Unos mora sadržavati najmanje $COUNT$ znakova.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Unos ne smije imati više od $COUNT$ znakova.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Ovi znakovi nisu dozvoljeni: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Unos mora biti najmanje $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Unos ne smije biti više od $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "Jedna ili više adresa e-pošte nije valjana" + }, + "inputTrimValidator": { + "message": "Unos ne smije biti prazan.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Nije unesena adresa e-pošte." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ polje/a treba tvoju pažnju.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Odaberi --" + }, + "multiSelectPlaceholder": { + "message": "-- Upiši za filtriranje --" + }, + "multiSelectLoading": { + "message": "Dohvaćanje opcija..." + }, + "multiSelectNotFound": { + "message": "Nije pronađena niti jedna stavka" + }, + "multiSelectClearAll": { + "message": "Očisti sve" + }, + "plusNMore": { + "message": "+ još $QUANTITY$", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Podizbornik" + }, + "toggleCollapse": { + "message": "Sažmi/Proširi", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Uvesti svoje podatke u Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Zaštititi svoje LastPass podatke i uvesti ih u Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Spremi kao nekriptiranu datoteku", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Uvezi u Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Uvoženje...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Podaci su uspješno uvezeni!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Greška pri uvozu. Provjerite konzolu za detalje.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Došlo je do mrežne greške tijekom uvoza.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domene" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Stavke za koje je potrebna glavna lozinka neće se auto-ispuniti kod učitavanja stranice. Auto-ispuna pri učitavanju stranice je isključena.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-ispuna kod učitavanja stranice koristi zadane postavke.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Isključi traženje glavne lozinke za promjenu ovog polja", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skoči na sadržaj" + }, + "bitwardenOverlayButton": { + "message": "Tipka izbornika Bitwarden auto-ispune", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "U/isključivanje izbornika Bitwarden auto-ispune", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Izbornik Bitwarden auto-ispune", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Otklučaj svoj račun za prikaz podudarnih prijava", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Otključaj račun", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Unesi vjerodajnice za", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Djelomično korisničko ime", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Nema stavki za prikaz", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Nova stavka", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Dodaj novu stavku trezora", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Dostupan je Bitwarden izbornik auto-ispune. Pritisni tipku sa strelicom prema dolje za odabir.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Uključi" + }, + "ignore": { + "message": "Zanemari" + }, + "importData": { + "message": "Uvezi podatke", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Greška prilikom uvoza" + }, + "importErrorDesc": { + "message": "Postoji problem s podacima za uvoz. Potrebno je razriješiti doljenavedene greške u izvornoj datoteci i pokušati ponovno." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Popravi navedene greške i pokušaj ponovo." + }, + "description": { + "message": "Opis" + }, + "importSuccess": { + "message": "Uvoz podataka u trezor je uspio" + }, + "importSuccessNumberOfItems": { + "message": "Ukupno je uvezeno $AMOUNT$ stavaka.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Ukupno" + }, + "importWarning": { + "message": "Uvoziš podatke u $ORGANIZATION$. Tvoji podaci možda će biti podijeljeni s članovima ove organizacije. Želiš li svejedno uvesti podatke?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Podaci nisu ispravno formatirani. Provjeri uvoznu datoteku i pokušaj ponovno." + }, + "importNothingError": { + "message": "Ništa nije uvezeno." + }, + "importEncKeyError": { + "message": "Greška u dešifriranju izvozne datoteke. Ovaj ključ za šifriranje ne odgovara ključu za šifriranje korištenom pri izvozu datoteke." + }, + "invalidFilePassword": { + "message": "Nesipravna lozinka datoteke. Unesi lozinku izvozne datoteke." + }, + "importDestination": { + "message": "Odredište uvoza" + }, + "learnAboutImportOptions": { + "message": "Više o mogućnostima uvoza" + }, + "selectImportFolder": { + "message": "Odaberi mapu" + }, + "selectImportCollection": { + "message": "Odaberi zbirku" + }, + "importTargetHint": { + "message": "Odaberi ovu opciju ako sadržaj uvezene datoteke želiš spremiti u $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Datoteka sadrži nedodijeljene stavke." + }, + "selectFormat": { + "message": "Odaberi format datoteke za uvoz" + }, + "selectImportFile": { + "message": "Odaberi datoteku za uvoz" + }, + "chooseFile": { + "message": "Odaberi datoteku" + }, + "noFileChosen": { + "message": "Nije odabrana datoteka" + }, + "orCopyPasteFileContents": { + "message": "ili kopiraj/zalijepi sadržaj uvozne datoteke" + }, + "instructionsFor": { + "message": "$NAME$ upute", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Potvrdi uvoz trezora" + }, + "confirmVaultImportDesc": { + "message": "Ova je datoteka zaštićena lozinkom. Unesi lozinku za nastavak uvoza." + }, + "confirmFilePassword": { + "message": "Potvrdi lozinku datoteke" + }, + "typePasskey": { + "message": "Pristupni ključ" + }, + "passkeyNotCopied": { + "message": "Pristupni ključ neće biti kopiran" + }, + "passkeyNotCopiedAlert": { + "message": "Pristupni ključ se neće kopirati u kloniranu stavku. Želiš li nastaviti klonirati ovu stavku?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Ishodišna stranica zahtijeva verifikaciju. Ova značajka još nije implementirana za račune bez glavne lozinke." + }, + "logInWithPasskey": { + "message": "Prijava pristupnim ključem?" + }, + "passkeyAlreadyExists": { + "message": "Za ovu aplikaciju već postoji pristupni ključ." + }, + "noPasskeysFoundForThisApplication": { + "message": "Za ovu aplikaciju nema pristupnih ključeva." + }, + "noMatchingPasskeyLogin": { + "message": "Nema odgovarajuće prijavu za ovu stranicu." + }, + "confirm": { + "message": "Autoriziraj" + }, + "savePasskey": { + "message": "Spremi pristupni ključ" + }, + "savePasskeyNewLogin": { + "message": "Spremi pristupni ključ kao novu prijavu" + }, + "choosePasskey": { + "message": "Odaberi prijavu za spremanje ovog pristupnog ključa" + }, + "passkeyItem": { + "message": "Stavka pristupnog ključa" + }, + "overwritePasskey": { + "message": "Prebriši pristupni ključ?" + }, + "overwritePasskeyAlert": { + "message": "Ova stavka već sadrži pristupni ključ. Sigurno želiš prebrisati trenutni pristupni ključ?" + }, + "featureNotSupported": { + "message": "Značajka još nije podržana" + }, + "yourPasskeyIsLocked": { + "message": "Za korištenje pristpnog ključa potrebna je autentifikacija. Potvrdi svoj identitet." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifaktorska autentifikacija otkazana" + }, + "noLastPassDataFound": { + "message": "Nisu nađeni LastPass podaci" + }, + "incorrectUsernameOrPassword": { + "message": "Neispravno korisničko ime ili lozinka" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifaktorska autentifikacija nije uspjela" + }, + "includeSharedFolders": { + "message": "Uključi dijeljene mape" + }, + "lastPassEmail": { + "message": "LastPass e-pošta" + }, + "importingYourAccount": { + "message": "Uvoz tvog računa..." + }, + "lastPassMFARequired": { + "message": "Potrebna LastPass multifaktorska autenfikacija" + }, + "lastPassMFADesc": { + "message": "Unesi svoj jednokratni kôd iz aplikacije za autentifikaciju" + }, + "lastPassOOBDesc": { + "message": "Odobri svoj zahtjev za prijavu u svojoj aplikaciji za autentifikaciju ili unesi jednokratni kôd." + }, + "passcode": { + "message": "Šifra" + }, + "lastPassMasterPassword": { + "message": "LastPass glavna lozinka" + }, + "lastPassAuthRequired": { + "message": "Potrebna LastPass autentifikacija" + }, + "awaitingSSO": { + "message": "Čekanje SSO autentifikacije" + }, + "awaitingSSODesc": { + "message": "Prijavi se koristeći pristupne podatke svoje tvrtke." + }, + "seeDetailedInstructions": { + "message": "Detaljne upute za pomoć pronađi na našoj stranici za pomoć na", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Uvezi direktno iz LastPass-a" + }, + "importFromCSV": { + "message": "Uvezi iz CSV-a" + }, + "lastPassTryAgainCheckEmail": { + "message": "Pokušaj ponovno ili pogledaj e-poštu od LastPass-a za potvrdu." + }, + "collection": { + "message": "Zbirka" + }, + "lastPassYubikeyDesc": { + "message": "Umetni YubiKey pridružen svojem LastPass računu u USB priključak račuanala, a zatim dodirni njegovu tipku." + }, + "switchAccount": { + "message": "Promijeni račun" + }, + "switchAccounts": { + "message": "Promijeni račune" + }, + "switchToAccount": { + "message": "Promijeni na račun" + }, + "activeAccount": { + "message": "Aktivni račun" + }, + "availableAccounts": { + "message": "Dostupni računi" + }, + "accountLimitReached": { + "message": "Dosegnuto je ograničenje računa. Odjavite se s računa da biste dodali drugi." + }, + "active": { + "message": "Aktivan" + }, + "locked": { + "message": "Zaključan" + }, + "unlocked": { + "message": "Otključan" + }, + "server": { + "message": "Poslužitelj" + }, + "hostedAt": { + "message": "domaćin na" + }, + "useDeviceOrHardwareKey": { + "message": "Koristite svoj uređaj ili hardverski ključ" + }, + "justOnce": { + "message": "Samo jednom" + }, + "alwaysForThisSite": { + "message": "Uvijek za ovu stranicu" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ dodano u izuzete domene.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/hu/messages.json b/apps/browser/src/_locales/hu/messages.json index e7b04d0b02..5c10efc3ae 100644 --- a/apps/browser/src/_locales/hu/messages.json +++ b/apps/browser/src/_locales/hu/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Automatikus kitöltés" }, + "autoFillLogin": { + "message": "Automatikus kitöltés bejelentkezés" + }, + "autoFillCard": { + "message": "Automatikus kitöltés kártya" + }, + "autoFillIdentity": { + "message": "Automatikus kitöltés személyazonosság" + }, "generatePasswordCopied": { "message": "Jelszó generálás (másolt)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Nincsenek egyező bejelentkezések." }, + "noCards": { + "message": "Nincsenek kártyák" + }, + "noIdentities": { + "message": "Nincsenek személyazonosságok" + }, + "addLoginMenu": { + "message": "Bejelentkezés hozzáadása" + }, + "addCardMenu": { + "message": "Kártya hozzáadása" + }, + "addIdentityMenu": { + "message": "Személyazonossság hozzáadása" + }, "unlockVaultMenu": { "message": "Széf kinyitása" }, @@ -143,7 +167,7 @@ "message": "A folytatáshoz meg kell erősíteni a személyazonosságot." }, "account": { - "message": "Felhasználó" + "message": "Fiók" }, "changeMasterPassword": { "message": "Mesterjelszó módosítása" @@ -244,6 +268,9 @@ "length": { "message": "Hossz" }, + "passwordMinLength": { + "message": "Minimum jelszó hosszúság" + }, "uppercase": { "message": "Nagybetűs (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Jelszó" }, + "totp": { + "message": "Hitelesítő titkos kulcs" + }, "passphrase": { "message": "Kulcskifejezés" }, @@ -338,6 +368,12 @@ "other": { "message": "Egyéb" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Állítsunk be egy feloldási módot a széf időkifutási műveletének módosításához." + }, + "unlockMethodNeeded": { + "message": "Feloldási mód beállítása a Beállításokban" + }, "rateExtension": { "message": "Bővítmény értékelése" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Zárolás most" }, + "lockAll": { + "message": "Összes zárolása" + }, "immediately": { "message": "Azonnal" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Felhasználódat létrehoztuk. Most már be tudsz jelentkezni." }, + "youSuccessfullyLoggedIn": { + "message": "A bejelentkezés sikeres volt." + }, + "youMayCloseThisWindow": { + "message": "Most már bezárható ez az ablak." + }, "masterPassSent": { "message": "Elküldtünk neked egy mesterjelszó emlékeztetődet tartalmazó E-mailt." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Nem sikerült automatikusan kitölteni a bejelentkezést ezen a weboldalon. Helyette másold/illeszt be a felhasználóneved és/vagy a jelszavadat." }, + "totpCaptureError": { + "message": "Az aktuális weboldalól nem lehet szkennelni a QR kódot." + }, + "totpCaptureSuccess": { + "message": "A hitelesítő kulcs hozzáadásra került." + }, + "totpCapture": { + "message": "Hitelesítő QR kód szkennelése az aktuális weboldalról" + }, + "copyTOTP": { + "message": "Hitelesítő kód másolása (TOTP)" + }, "loggedOut": { "message": "Kijelentkezett" }, @@ -510,7 +567,7 @@ "message": "A kétlépcsős bejelentkezés biztonságosabbá teszi a fiókot azáltal, hogy ellenőrizni kell a bejelentkezést egy másik olyan eszközzel mint például biztonsági kulcs, hitelesítő alkalmazás, SMS, telefon hívás vagy email. A kétlépcsős bejelentkezést a bitwarden.com webes széfben lehet engedélyezni. Felkeressük a webhelyet most?" }, "editedFolder": { - "message": "A mappa módosításra került." + "message": "A mappa mentésre került." }, "deleteFolderConfirmation": { "message": "Biztos, hogy törölni akarod ezt a mappát?" @@ -559,7 +616,7 @@ "message": "Biztosan törlésre kerüljön ezt az elem?" }, "deletedItem": { - "message": "Az elem törlésre került." + "message": "Az elem a lomtárba került." }, "overwritePassword": { "message": "Jelszó felülírása" @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "A \"Bejelentkezés értesítés hozzáadása\" automatikusan felajánlja a bejelentkezés széfbe mentését az első bejelentkezéskor." }, + "addLoginNotificationDescAlt": { + "message": "Egy elem hozzáadásának kérése, ha az nem található a széfben. Minden bejelentkezett fiókra vonatkozik." + }, "showCardsCurrentTab": { "message": "Kártyák megjelenítése a Fül oldalon" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "A bejelentkezési jelszó frissítésének kérése a webhelyen történő változás érzékelésekor." }, + "changedPasswordNotificationDescAlt": { + "message": "A bejelentkezési jelszó frissítésének kérése, ha változást lett érzékelve egy webhelyen. Minden bejelentkezett fiókra vonatkozik." + }, + "enableUsePasskeys": { + "message": "Kérés a hozzáférési kulcs mentésére és használatára" + }, + "usePasskeysDesc": { + "message": "Kérés az új hozzáféréi kulcsok mentésére vagy bejelentkezés a széfben tárolt hozzáférési kulcsokkal. Minden bejelentkezett fiókra vonatkozik." + }, "notificationChangeDesc": { "message": "Frissítésre kerüljön a jelszó a Bitwardenben?" }, "notificationChangeSave": { "message": "Frissítés" }, + "notificationUnlockDesc": { + "message": "A Bitwarden széf feloldása az automatikus kitöltési kérés teljesítéséhez." + }, + "notificationUnlock": { + "message": "Feloldás" + }, "enableContextMenuItem": { "message": "Helyi menü opciók megjelenítése" }, "contextMenuItemDesc": { "message": "Másodlagos kattintással férhetünk hozzá a webhely jelszó-generálásához és a egyező bejelentkezésekhez." }, + "contextMenuItemDescAlt": { + "message": "Másodlagos kattintással eléérhető a jelszógenerálás és a megfelelő bejelentkezési adatok a webhelyhez. Minden bejelentkezett fiókra vonatkozik." + }, "defaultUriMatchDetection": { "message": "Alapértelmezett URI egyezés érzékelés", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Az alkalmazás színtémájának megváltoztatása." }, + "themeDescAlt": { + "message": "Az alkalmazás színtéma módosítása. Minden bejelentkezett fiókra vonatkozik." + }, "dark": { "message": "Sötét", "description": "Dark color" @@ -760,10 +841,10 @@ "message": "A naximális fájlméret 500 MB." }, "featureUnavailable": { - "message": "Ez a funkció nem érhető el." + "message": "A funkció nem érhető el." }, - "updateKey": { - "message": "Ez a funkció nem használható, amíg nem frissíted a titkosítási kulcsod." + "encryptionKeyMigrationRequired": { + "message": "Titkosítási kulcs migráció szükséges. Jelentkezzünk be a webes széfen keresztül a titkosítási kulcs frissítéséhez." }, "premiumMembership": { "message": "Prémium tagság" @@ -778,7 +859,7 @@ "message": "Tagság frissítése" }, "premiumNotCurrentMember": { - "message": "Jelenleg nincs prémium tagság." + "message": "Jelenleg nem vagyunk prémium tag." }, "premiumSignUpAndGet": { "message": "Regisztráció a prémium tagságra az alábbi funkciókért:" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB titkosított tárhely a fájlmellékleteknek." }, - "ppremiumSignUpTwoStep": { - "message": "További két lépcsős bejelentkezés lehetőségek, mint például YubiKey, FIDO U2F és Duo." + "premiumSignUpTwoStepOptions": { + "message": "Saját kétlépcsős bejelentkezési lehetőségek mint a YubiKey és a Duo." }, "ppremiumSignUpReports": { "message": "Jelszó higiénia, fiók biztonság és adatszivárgási jelentések a széf biztonsága érdekében." @@ -808,7 +889,7 @@ "message": "A prémium tagság megvásárolható a bitwarden.com webes széfben. Szeretnénk felkeresni a webhelyet most?" }, "premiumCurrentMember": { - "message": "Jelenleg a prémium tagság érvényben van." + "message": "Prémium tag vagyunk!" }, "premiumCurrentMemberThanks": { "message": "Köszönjük a Bitwarden támogatását." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "A környezeti webcímek mentésre kerültek." }, + "showAutoFillMenuOnFormFields": { + "message": "Automatikus kitöltés menü megjelenítése az űrlapmezőkön", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Minden bejelentkezett fiókra vonatkozik." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Az ütközések elkerülése érdekében kapcsoljuk ki a böngésző beépített jelszókezelő beállításait." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "A böngésző beállítások szerkesztése." + }, + "autofillOverlayVisibilityOff": { + "message": "Ki", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Ha az automatikus kitöltés menü került kiválasztásra", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Automatikus kitöltés oldalbetöltésnél" }, @@ -985,7 +1091,7 @@ "message": "Alapértelmezett beállítások bejelentkezési elemekhez" }, "defaultAutoFillOnPageLoadDesc": { - "message": "Az Automatikus kitöltés engedélyezése az oldalbetöltéskor engedélyezheti vagy letilthatja a funkciót az egyes bejelentkezési elemeknél. Ez az alapértelmezett beállítás a bejelentkezési elemeknéll, amelyek nincsenek külön konfigurálva." + "message": "Az egyes bejelentkezési elemeknél kikapcsolhatjuk oldalbetöltéskor az automatikus kitöltést az elem Szerkesztés nézetében." }, "itemAutoFillOnPageLoad": { "message": "Automatikus kitöltés oldal betöltésnél (Ha engedélyezett az opcióknál)" @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Felismerhető kép megjelenítése minden bejelentkezés mellett." }, + "faviconDescAlt": { + "message": "Minden bejelentkezés mellett egy felismerhető kép megjelenítése. Minden bejelentkezett fiókra vonatkozik." + }, "enableBadgeCounter": { "message": "Számláló jelvény megjelenítése" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "A pinkód érvénytelen." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Túl sok az érvénytelen PIN beviteli kísérlet. Kijelentkezés történik." + }, "unlockWithBiometrics": { "message": "Biometrikus feloldás" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Elem visszaállítása" }, - "restoreItemConfirmation": { - "message": "Biztosan visszaállításra kerüljön ezt az elem?" - }, "restoredItem": { "message": "Visszaállított elem" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "A böngésző biometrikus adatait ez az eszköz nem támogatja." }, + "biometricsFailedTitle": { + "message": "A biometria nem sikerült." + }, + "biometricsFailedDesc": { + "message": "A biometrikus adatokat nem lehet kitölteni, fontoljuk meg a mesterjelszó használatát vagy a kijelentkezést. Ha ez továbbra is fennáll, forduljunk a Bitwarden ügyfélszolgálatához." + }, "nativeMessaginPermissionErrorTitle": { "message": "A jogosultság nincs megadva." }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "A szervezeti házirend befolyásolja a tulajdonosi opciókat." }, + "personalOwnershipPolicyInEffectImports": { + "message": "A szervezeti politika blokkolta az elemek importálását az egyedi széfbe." + }, "excludedDomains": { "message": "Kizárt domainek" }, "excludedDomainsDesc": { "message": "A Bitwarden nem fogja kérni a domainek bejelentkezési adatainak mentését. A változások életbe lépéséhez frissíteni kell az oldalt." }, + "excludedDomainsDescAlt": { + "message": "A Bitwarden nem kéri a bejelentkezési adatok mentését ezeknél a tartományoknál az összes bejelentkezési fiókra vonatkozva. A változtatások életbe lépéséhez frissíteni kell az oldalt." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ nem érvényes domain.", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Mappa választása..." }, - "ssoCompleteRegistration": { - "message": "Az SSO-val történő bejelentkezés befejezéséhez mesterjelszót kell beállítani a széf eléréséhez és védelméhez." + "noFoldersFound": { + "message": "Nem találhatók mappák.", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "A szervezeti engedélyek frissítésre kerültek, ezért be kell állítani egy mesterjelszót.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "A szervezet megköveteli egy mesterjelszó beállítását.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Ellenőrzés szükséges", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Óra" @@ -1893,7 +2027,7 @@ "message": "Perc" }, "vaultTimeoutPolicyInEffect": { - "message": "A szervezeti házirendek hatással vannak a széf időkorlátjára. A széf időkorlátja legfeljebb $HOURS$ óra és $MINUTES$ perc lehet.", + "message": "A szervezeti szabályzata $HOURS$ órára és $MINUTES$ percre állította be a maximálisan megengedett széf időtúllépést.", "placeholders": { "hours": { "content": "$1", @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Személyes széf exportálása" }, - "exportingPersonalVaultDescription": { - "message": "Csak $EMAIL$ email címmel társított személyes széf elemek kerülnek exportálásra. Ebbe nem kerülnek be a szervezeti széf elemek.", + "exportingIndividualVaultDescription": { + "message": "$EMAIL$ email címhez társított egyedi széfek kerülnek csak exportálásra. A szervezeti széf elemei nem lesznek benne. Csak a széf információk kerülnek exportálásra és nem tartalmazzák a kapcsolódó mellékleteket.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Szerver verzió" }, - "selfHosted": { - "message": "Saját kiszolgáló" + "selfHostedServer": { + "message": "saját üzemeltetésű" }, "thirdParty": { "message": "Harmadik fél" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Egy értesítés lett elküldve az eszközre." }, - "logInInitiated": { + "loginInitiated": { "message": "A bejelentkezés elindításra került." }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Az automatikus kitöltés működése" }, "autofillSelectInfoWithCommand": { - "message": "Válasszunk egy elemet ezen az oldalon vagy használjuk a parancsikont: $COMMAND$.", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Válasszunk egy elemet ezen az oldalon vagy állítsunk be parancsikont a beállításokban." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Rendben" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Régió" + "loggingInOn": { + "message": "Bejelentkezés:" }, "opensInANewWindow": { "message": "Megnyitás új ablakban" }, + "deviceApprovalRequired": { + "message": "Az eszköz jóváhagyása szükséges. Válasszunk egy jóváhagyási lehetőséget lentebb:" + }, + "rememberThisDevice": { + "message": "Eszköz megjegyzése" + }, + "uncheckIfPublicDevice": { + "message": "Töröljük a jelölést, ha nyilvános eszközt használunk." + }, + "approveFromYourOtherDevice": { + "message": "Jóváhagyás másik eszközzel" + }, + "requestAdminApproval": { + "message": "Adminisztrátori jóváhagyás kérés" + }, + "approveWithMasterPassword": { + "message": "Jóváhagyás mesterjelszóval" + }, + "ssoIdentifierRequired": { + "message": "A szervezeti SSO azonosító megadása szükséges." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "A hozzáférés megtagadásra került. Nincs jogosultság az oldal megtekintésére." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Megjelenítés" + }, + "accountSuccessfullyCreated": { + "message": "A fiók sikeresen létrehozásra került." + }, + "adminApprovalRequested": { + "message": "Adminisztrátori jóváhagyás kérés történt" + }, + "adminApprovalRequestSentToAdmins": { + "message": "A kérés elküldésre került az adminisztrátornak." + }, + "youWillBeNotifiedOnceApproved": { + "message": "A jóváhagyás után értesítés érkezik." + }, + "troubleLoggingIn": { + "message": "Probléma van a bejelentkezéssel?" + }, + "loginApproved": { + "message": "A bejelentkezés jóváhagyásra került." + }, + "userEmailMissing": { + "message": "A felhasználói email cím hiányzik." + }, + "deviceTrusted": { + "message": "Az eszköz megbízható." + }, + "inputRequired": { + "message": "Az adatbevitel kötelező." + }, + "required": { + "message": "kötelező" + }, + "search": { + "message": "Keresés" + }, + "inputMinLength": { + "message": "A bevitel legyen legalább $COUNT$ karakter hosszú.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "A bevitel nem haladhatja meg $COUNT$ karakter hosszt.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "A következő karakterek nem engedélyezettek: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "A beviteli érték legyen legalább $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "A beviteli érték ne haladja meg $MAX$ értéket.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 vagy több email cím érvénytelen." + }, + "inputTrimValidator": { + "message": "A bevitel nem tartalmazhat csak fehér szóköz karaktert.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Az megadott bevitel nem email cím." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ mező fentebb figyelmet érdemel.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Választás --" + }, + "multiSelectPlaceholder": { + "message": "-- Gépelés a szűréshez --" + }, + "multiSelectLoading": { + "message": "Az opciók beolvasása folyamatban can..." + }, + "multiSelectNotFound": { + "message": "Nem található elem." + }, + "multiSelectClearAll": { + "message": "Összes törlése" + }, + "plusNMore": { + "message": "+ $QUANTITY$ további", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Almenü" + }, + "toggleCollapse": { + "message": "Összezárás váltás", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Adatok importálása a Bitwardenbe?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "A LastPass adatok megvédése és importálása a Bitwardenbe?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Mentés titkosítatlan fájlként", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importálás a Bitwardenbe", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importálás...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Az adatok sikeresen importálásra kerültek.", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Hiba történt az importálás során. A részletekért ellenőrizzük a konzolt.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Hálózati hiba történt az importálás során.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Áldomain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "A mesterjelszót újra bekérő elemeket nem lehet automatikusan kitölteni az oldal betöltésekor. Az automatikus kitöltés az oldal betöltésekor kikapcsolásra kerül.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Az automatikus kitöltés az oldal betöltésekor az alapértelmezett beállítás használatára lett beállítva.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Kapcsoljuk ki a mesterjelszó újbóli bekérését a mező szerkesztéséhez.", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Ugrás a tartalomra" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden automatikus kitöltési menü", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Fiók feloldása", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Töltse kia hitelesítő adatokat", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Részleges felhasználónév", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Nincsenek megjeleníthető elemek", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Új elem", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Elem hozzáadása", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Bekapcsolás" + }, + "ignore": { + "message": "Mellőz" + }, + "importData": { + "message": "Adatok importálása", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Importálási hiba" + }, + "importErrorDesc": { + "message": "Probléma merült fel az importálni próbált adatokkal. Oldjuk fel a forrásfájlban alább felsorolt hibákat és próbáljuk újra." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Oldjuk fel a hibákat lentebb és próbáljuk újra." + }, + "description": { + "message": "Leírás" + }, + "importSuccess": { + "message": "Az adatok sikeresen importálásra kerültek." + }, + "importSuccessNumberOfItems": { + "message": "Összesen $AMOUNT$ elem lett importálva.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Próbáluk újra" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Ehhez a művelethez ellenőrzés szükséges. A folytatáshoz állítsunk be egy PIN kódot." + }, + "setPin": { + "message": "PIN kód beállítása" + }, + "verifyWithBiometrics": { + "message": "Ellenőrzés biometrikusan" + }, + "awaitingConfirmation": { + "message": "Várakozás megerősítésre" + }, + "couldNotCompleteBiometrics": { + "message": "Nem sikerült kitölteni a biometrikus adatokat." + }, + "needADifferentMethod": { + "message": "Más módszerre van szükség?" + }, + "useMasterPassword": { + "message": "Mesterjelszó használata" + }, + "usePin": { + "message": "PIN kód használata" + }, + "useBiometrics": { + "message": "Biometria használata" + }, + "enterVerificationCodeSentToEmail": { + "message": "Az emailben elküldött ellenőrző kód megadása." + }, + "resendCode": { + "message": "Kód újraküldése" + }, + "total": { + "message": "Összesen" + }, + "importWarning": { + "message": "Adatokat importálunk $ORGANIZATION$ fájlba. Az adatok megosztásra kerülhetnek a szervezet tagjaival. Folytatni akarjuk?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Indítsuk el a DUO-t és kövessük a lépéseket a bejelentkezés befejezéséhez." + }, + "duoRequiredForAccount": { + "message": "A fiókhoz kétlépcsős DUO bejelentkezés szükséges." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "A bejelentkezés befejezéséhez nyissuk meg a kiterjesztést." + }, + "popoutExtension": { + "message": "Felugró bővítmény" + }, + "launchDuo": { + "message": "DUO indítása" + }, + "importFormatError": { + "message": "Az adatok nincsenek megfelelően formázva. Ellenőrizzük az importálás fájlt és próbáljuk újra." + }, + "importNothingError": { + "message": "Semmi nem lett importálva." + }, + "importEncKeyError": { + "message": "Hiba történt az exportált fájl visszafejtése során. A titkosítási kulcs nem egyezik meg az adatok exportálásához használt titkosítási kulccsal." + }, + "invalidFilePassword": { + "message": "A fájl jelszó érvénytelen. Használjuk az exportfájl létrehozásakor megadott jelszót." + }, + "importDestination": { + "message": "Importálás leírás" + }, + "learnAboutImportOptions": { + "message": "Információ az importálási opciókról" + }, + "selectImportFolder": { + "message": "Mappa kiválasztása" + }, + "selectImportCollection": { + "message": "Gyűjtemény kiválasztása" + }, + "importTargetHint": { + "message": "Válasszuk ezt a lehetőséget, ha azt akarjuk, hogy az importált fájl tartalma $DESTINATION$ helyre kerüljön", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "A fájl hozzá nem rendelt elemeket tartalmaz." + }, + "selectFormat": { + "message": "Válasszuk ki az importáló fájl formátumát" + }, + "selectImportFile": { + "message": "Válasszuk ki az import fájlt" + }, + "chooseFile": { + "message": "Fájl kiválasztása" + }, + "noFileChosen": { + "message": "Nincs kiválasztott fájl." + }, + "orCopyPasteFileContents": { + "message": "vagy vágólapon vigyük be fájl tartalmat" + }, + "instructionsFor": { + "message": "$NAME$ utasítások", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Széf importálás megerősítése" + }, + "confirmVaultImportDesc": { + "message": "Ez a fájl jelszóval védett. Adjuk meg a fájl jelszót az adatok importálásához." + }, + "confirmFilePassword": { + "message": "Fájl jelszó megerősítés" + }, + "typePasskey": { + "message": "Hozzáférési kulcs" + }, + "passkeyNotCopied": { + "message": "A hozzáférési kulcs nem kerül másolásra." + }, + "passkeyNotCopiedAlert": { + "message": "A hozzáférési kulcs nem kerül másolásra a klónozott elembe. Folytatjuk ennek az elemnek a klónozását?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "A kezdeményező hely által megkövetelt ellenőrzés. Ez a szolgáltatás még nincs megvalósítva mesterjelszó nélküli fiókok esetén." + }, + "logInWithPasskey": { + "message": "Bejelentkezés hozzáférési kulccsal?" + }, + "passkeyAlreadyExists": { + "message": "Az alkalmazáshoz már létezik hozzáférési kulcs." + }, + "noPasskeysFoundForThisApplication": { + "message": "Az alkalmazáshoz nem található hozzáférési kulcs." + }, + "noMatchingPasskeyLogin": { + "message": "Nincs megfelelő bejelentkezés ehhez a webhelyhez." + }, + "confirm": { + "message": "Megerősítés" + }, + "savePasskey": { + "message": "Hozzáférési kulcs mentése" + }, + "savePasskeyNewLogin": { + "message": "Hozzáférési kulcs mentése új bejelentkezésként" + }, + "choosePasskey": { + "message": "Bejelentkezés választás a hozzáférési kulcs mentéséhez" + }, + "passkeyItem": { + "message": "Hozzáférési kulcs elem" + }, + "overwritePasskey": { + "message": "Bejelentkezési kulcs felülírása?" + }, + "overwritePasskeyAlert": { + "message": "Ez az elem már tartalmaz egy hozzáférési kulcsot. Biztosan felülírásra kerüljön az aktuális hozzáférési kulcs?" + }, + "featureNotSupported": { + "message": "Nem támogatott funkció" + }, + "yourPasskeyIsLocked": { + "message": "A hozzáférési kulcs használatához hitelesítés szükséges. A személyazonosság ellenőrzése szükséges a folytatáshoz." + }, + "multifactorAuthenticationCancelled": { + "message": "A többtényezős hitelesítés megszakításra került." + }, + "noLastPassDataFound": { + "message": "Nem található LastPass adat." + }, + "incorrectUsernameOrPassword": { + "message": "Helytelen felhasználónév vagy jelszó" + }, + "incorrectPassword": { + "message": "Helytelen jelszó" + }, + "incorrectCode": { + "message": "Helytelen kód" + }, + "incorrectPin": { + "message": "Helytelen PIN kód" + }, + "multifactorAuthenticationFailed": { + "message": "A többtényezős hitelesítés sikertelen volt." + }, + "includeSharedFolders": { + "message": "Megosztott mappák is" + }, + "lastPassEmail": { + "message": "LastPass email cím" + }, + "importingYourAccount": { + "message": "A iók importálása folyamatban van..." + }, + "lastPassMFARequired": { + "message": "LastPass többtényezős hitelesítés szükséges" + }, + "lastPassMFADesc": { + "message": "Adjuk meg az egyszeri jelszót a hitelesítő alkalmazásból" + }, + "lastPassOOBDesc": { + "message": "Hagyjuk jóvá a bejelentkezési kérést a hitelesítő alkalmazásban vagy írjunk be egy egyszeri jelszót." + }, + "passcode": { + "message": "Jelszó" + }, + "lastPassMasterPassword": { + "message": "LastPass mesterjelszó" + }, + "lastPassAuthRequired": { + "message": "LastPass hitelesítés szükséges" + }, + "awaitingSSO": { + "message": "Várakozás SSO hitelesítésre" + }, + "awaitingSSODesc": { + "message": "Folytassuk a bejelentkezést a cég hitelesítő adataival." + }, + "seeDetailedInstructions": { + "message": "Tekintsük meg a részletes utasításokat a súgó oldalon:", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Importálás közvetlenül a LastPassból" + }, + "importFromCSV": { + "message": "Importálás CSV-ből" + }, + "lastPassTryAgainCheckEmail": { + "message": "Próbáljuk újra,vagy keressünk egy emailt a LastPasstól a személyazonosság igazolásához." + }, + "collection": { + "message": "Gyűjtemény" + }, + "lastPassYubikeyDesc": { + "message": "Illesszük be a LastPass-fiókhoz társított YubiKey eszközt a számítógép USB portjába, majd érintsük meg annak gombját." + }, + "switchAccount": { + "message": "Fiók váltása" + }, + "switchAccounts": { + "message": "Fiókok váltása" + }, + "switchToAccount": { + "message": "Váltás fiókra" + }, + "activeAccount": { + "message": "Aktív fiók" + }, + "availableAccounts": { + "message": "Elérhető fiókok" + }, + "accountLimitReached": { + "message": "A fiók korlát elérésre került. Jelentkezzünk ki egy fiókból egy másik hozzáadásához." + }, + "active": { + "message": "aktív" + }, + "locked": { + "message": "zárolt" + }, + "unlocked": { + "message": "feloldott" + }, + "server": { + "message": "szerver" + }, + "hostedAt": { + "message": "tárolva:" + }, + "useDeviceOrHardwareKey": { + "message": "Saját eszköz vagy hardverkulcs használata" + }, + "justOnce": { + "message": "Csak egyszer" + }, + "alwaysForThisSite": { + "message": "Ennél a webhelynél mindig" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ bekerült a kizárt tartományokba.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Általános formátumok", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Legyen a Bitwarden az alapértelmezett jelszókezelő?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ennek az opciónak a figyelmen kívül hagyása ütközést okozhat a Bitwarden automatikus kitöltési menü és a böngésző között.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Legyen a Bitwarden az alapértelmezett jelszókezelő", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "A Bitwarden nem állítható be alapértelmezett jelszókezelőként.", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Ki kell osztani a böngésző adatvédelmi jogosultságait a Bitwardennek az alapértelmezett jelszókezelőként történő beállításhoz.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Legyen alapértelmezett", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "A hitelesítések sikeresen mentésre kerültek.", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "A hitelesítések sikeresen frissítésre kerültek.", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Hiba történt a hitelesítések mentésekor. A részletekért ellenőrizzük a konzolt.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Jelszó eltávolítása" + }, + "passkeyRemoved": { + "message": "A jelszó eltávolításra került." + }, + "unassignedItemsBanner": { + "message": "Megjegyzés: A nem hozzá nem rendelt szervezeti elemek már nem láthatók az Összes széf nézetben és csak az Adminisztrátori konzolon keresztül érhetők el. Rendeljük ezeket az elemeket egy gyűjteményhez az Adminisztrátor konzolból, hogy láthatóvá tegyük azokat." } } diff --git a/apps/browser/src/_locales/id/messages.json b/apps/browser/src/_locales/id/messages.json index 84c3938f09..810d603047 100644 --- a/apps/browser/src/_locales/id/messages.json +++ b/apps/browser/src/_locales/id/messages.json @@ -20,7 +20,7 @@ "message": "Masuk" }, "enterpriseSingleSignOn": { - "message": "Sistem Masuk Tunggal Perusahaan" + "message": "SSO Perusahaan" }, "cancel": { "message": "Batal" @@ -91,6 +91,15 @@ "autoFill": { "message": "Isi otomatis" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Membuat Kata Sandi (tersalin)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Tidak ada info masuk yang cocok." }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Buka brankas Anda" }, @@ -244,6 +268,9 @@ "length": { "message": "Panjang" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Huruf besar (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Kata Sandi" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Frasa Sandi" }, @@ -338,6 +368,12 @@ "other": { "message": "Lainnya" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Nilai Ekstensi" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Kunci Sekarang" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Segera" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Akun baru Anda telah dibuat! Sekarang Anda bisa masuk." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "Kami telah mengirimi Anda email dengan petunjuk sandi utama Anda." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Tidak dapat mengisi otomatis item yang dipilih pada laman ini. Salin dan tempel informasinya sebagai gantinya." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Keluar" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "\"Notifikasi Penambahan Info Masuk\" secara otomatis akan meminta Anda untuk menyimpan info masuk baru ke brankas Anda saat Anda masuk untuk pertama kalinya." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Apakah Anda ingin memperbarui kata sandi ini di Bitwarden?" }, "notificationChangeSave": { "message": "Iya, Perbarui Sekarang" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "Deteksi Kecocokan URI Bawaan", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Ubah tema warna aplikasi." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Gelap", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Fitur Tidak Tersedia" }, - "updateKey": { - "message": "Anda tidak dapat menggunakan fitur ini sampai Anda memperbarui kunci enkripsi Anda." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Keanggotaan Premium" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB penyimpanan berkas yang dienkripsi." }, - "ppremiumSignUpTwoStep": { - "message": "Pilihan info masuk dua langkah tambahan seperti YubiKey, FIDO U2F, dan Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Kebersihan kata sandi, kesehatan akun, dan laporan kebocoran data untuk tetap menjaga keamanan brankas Anda." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "URL dari semua lingkungan telah disimpan." }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Aktifkan Isi-Otomatis Saat Memuat Laman" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Kode PIN tidak valid." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Buka kunci dengan biometrik" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Pulihkan Item" }, - "restoreItemConfirmation": { - "message": "Apakah Anda yakin ingin memulihkan item ini?" - }, "restoredItem": { "message": "Item Yang Dipulihkan" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Biometrik peramban tidak didukung di perangkat ini." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Izin tidak diberikan" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Kebijakan organisasi memengaruhi opsi kepemilikan Anda." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Domain yang Dikecualikan" }, "excludedDomainsDesc": { "message": "Bitwarden tidak akan meminta untuk menyimpan detail login untuk domain ini. Anda harus menyegarkan halaman agar perubahan diterapkan." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ bukan domain yang valid", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Pilih Folder..." }, - "ssoCompleteRegistration": { - "message": "Untuk menyelesaikan masuk dengan SSO, harap setel kata sandi utama untuk mengakses dan melindungi brankas Anda." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Jam" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/it/messages.json b/apps/browser/src/_locales/it/messages.json index 53552ae2ff..86a6bf054e 100644 --- a/apps/browser/src/_locales/it/messages.json +++ b/apps/browser/src/_locales/it/messages.json @@ -3,11 +3,11 @@ "message": "Bitwarden" }, "extName": { - "message": "Bitwarden - Gestore di Password Gratis", + "message": "Bitwarden - Password Manager Gratis", "description": "Extension name, MUST be less than 40 characters (Safari restriction)" }, "extDesc": { - "message": "Un gestore di password sicuro e gratis per tutti i tuoi dispositivi.", + "message": "Un password manager sicuro e gratis per tutti i tuoi dispositivi.", "description": "Extension description" }, "loginOrCreateNewAccount": { @@ -91,6 +91,15 @@ "autoFill": { "message": "Riempimento automatico" }, + "autoFillLogin": { + "message": "Riempi automaticamente login" + }, + "autoFillCard": { + "message": "Riempi automaticamente carta" + }, + "autoFillIdentity": { + "message": "Riempi automaticamente identità" + }, "generatePasswordCopied": { "message": "Genera password e copiala" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Nessun login corrispondente" }, + "noCards": { + "message": "Nessuna carta" + }, + "noIdentities": { + "message": "Nessuna identità" + }, + "addLoginMenu": { + "message": "Aggiungi login" + }, + "addCardMenu": { + "message": "Aggiungi carta" + }, + "addIdentityMenu": { + "message": "Aggiungi identità" + }, "unlockVaultMenu": { "message": "Sblocca la tua cassaforte" }, @@ -244,6 +268,9 @@ "length": { "message": "Lunghezza" }, + "passwordMinLength": { + "message": "Lunghezza minima della password" + }, "uppercase": { "message": "Maiuscole (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Password" }, + "totp": { + "message": "Segreto di autenticazione" + }, "passphrase": { "message": "Frase segreta" }, @@ -338,6 +368,12 @@ "other": { "message": "Altro" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Imposta un metodo di sblocco per modificare l'azione timeout cassaforte." + }, + "unlockMethodNeeded": { + "message": "Imposta un metodo di sblocco in Impostazioni" + }, "rateExtension": { "message": "Valuta l'estensione" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Blocca ora" }, + "lockAll": { + "message": "Blocca tutto" + }, "immediately": { "message": "Immediatamente" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Il tuo nuovo account è stato creato! Ora puoi eseguire l'accesso." }, + "youSuccessfullyLoggedIn": { + "message": "Hai effettuato l'accesso" + }, + "youMayCloseThisWindow": { + "message": "Puoi chiudere questa finestra" + }, "masterPassSent": { "message": "Ti abbiamo inviato una email con il tuo suggerimento per la password principale." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Impossibile riempire automaticamente questo elemento nella pagina. Copia e incolla le credenziali." }, + "totpCaptureError": { + "message": "Impossibile scansionare il codice QR da questa pagina web" + }, + "totpCaptureSuccess": { + "message": "Chiave di autenticazione aggiunta" + }, + "totpCapture": { + "message": "Scansiona il codice QR dell'autenticatore da questa pagina web" + }, + "copyTOTP": { + "message": "Copia la chiave di autenticazione (TOTP)" + }, "loggedOut": { "message": "Disconnesso" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Chiedi di aggiungere un nuovo elemento se non ce n'è uno nella tua cassaforte." }, + "addLoginNotificationDescAlt": { + "message": "Chiedi di creare un nuovo elemento se non ce n'è uno nella tua cassaforte. Si applica a tutti gli account sul dispositivo." + }, "showCardsCurrentTab": { "message": "Mostra le carte nella sezione Scheda" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Chiedi di aggiornare la password di un login quando rileviamo che è cambiata su un sito web." }, + "changedPasswordNotificationDescAlt": { + "message": "Chiedi di aggiornare la password salvata quando viene modificata su un sito web. Si applica a tutti gli account sul dispositivo." + }, + "enableUsePasskeys": { + "message": "Chiedi di salvare e usare le passkey" + }, + "usePasskeysDesc": { + "message": "Chiedi di salvare nuove passkey o accedere con passkey salvate nella tua cassaforte. Si applica a tutti gli account connessi." + }, "notificationChangeDesc": { "message": "Vuoi aggiornare questa password in Bitwarden?" }, "notificationChangeSave": { "message": "Aggiorna" }, + "notificationUnlockDesc": { + "message": "Sblocca la tua cassaforte di Bitwarden per completare la richiesta di riempimento automatico." + }, + "notificationUnlock": { + "message": "Sblocca" + }, "enableContextMenuItem": { "message": "Mostra opzioni nel menu contestuale" }, "contextMenuItemDesc": { - "message": "Utilizza un secondo clic per accedere alla generazione di password e login corrispondenti per il sito web. " + "message": "Usa un clic secondario per generare nuove password e riempire automaticamente i login nei siti web." + }, + "contextMenuItemDescAlt": { + "message": "Chiedi di aggiornare la password salvata quando viene modificata su un sito web. Si applica a tutti gli account sul dispositivo. Si applica a tutti gli account sul dispositivo." }, "defaultUriMatchDetection": { "message": "Rilevamento corrispondenza URI predefinito", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Cambia lo schema di colori dell'app." }, + "themeDescAlt": { + "message": "Cambia il colore del tema dell'estensione. Si applica a tutti gli account sul dispositivo." + }, "dark": { "message": "Scuro", "description": "Dark color" @@ -675,13 +756,13 @@ "message": "Conferma esportazione della cassaforte" }, "exportWarningDesc": { - "message": "Questa esportazione contiene i dati della tua cassaforte in un formato non criptato. Non salvare o inviare il file esportato attraverso canali non protetti (come le email). Eliminalo immediatamente dopo l'utilizzo." + "message": "Questa esportazione contiene i dati della tua cassaforte in un formato non crittografato. Non salvare o inviare il file esportato attraverso canali non protetti (come le email). Eliminalo immediatamente dopo l'utilizzo." }, "encExportKeyWarningDesc": { - "message": "Questa esportazione cripta i tuoi dati usando la chiave di criptografia del tuo account. Se cambi la chiave di criptografia del tuo account, non potrai più decifrare il file esportato e dovrai eseguire una nuova esportazione." + "message": "Questa esportazione crittografa i tuoi dati usando la chiave di crittografia del tuo account. Se cambi la chiave di crittografia del tuo account, non potrai più decifrare il file esportato e dovrai eseguire una nuova esportazione." }, "encExportAccountWarningDesc": { - "message": "Le chiavi di criptografia dell'account sono uniche per ogni account Bitwarden, quindi non puoi importare un file di esportazione criptato in un account diverso." + "message": "Le chiavi di crittografia dell'account sono uniche per ogni account Bitwarden, quindi non puoi importare un file di esportazione crittato in un account diverso." }, "exportMasterPassword": { "message": "Inserisci la tua password principale per esportare i dati della tua cassaforte." @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Funzionalità non disponibile" }, - "updateKey": { - "message": "Non puoi usare questa funzionalità finché non aggiorni la tua chiave di criptografia." + "encryptionKeyMigrationRequired": { + "message": "Migrazione della chiave di crittografia obbligatoria. Accedi tramite la cassaforte web per aggiornare la tua chiave di crittografia." }, "premiumMembership": { "message": "Abbonamento Premium" @@ -784,10 +865,10 @@ "message": "Passa a Premium e ottieni:" }, "ppremiumSignUpStorage": { - "message": "1 GB di spazio di archiviazione criptato per gli allegati." + "message": "1 GB di spazio di archiviazione crittografato per gli allegati." }, - "ppremiumSignUpTwoStep": { - "message": "Più opzioni di verifica in due passaggi come YubiKey, FIDO U2F, e Duo." + "premiumSignUpTwoStepOptions": { + "message": "Opzioni di verifica in due passaggi proprietarie come YubiKey e Duo." }, "ppremiumSignUpReports": { "message": "Sicurezza delle password, integrità dell'account, e rapporti su violazioni di dati per mantenere sicura la tua cassaforte." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "URL dell'ambiente salvati" }, + "showAutoFillMenuOnFormFields": { + "message": "Mostra il menu di riempimento automatico nei campi di modulo", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Si applica a tutti gli account sul dispositivo." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Disattiva il password manager del tuo browser per evitare conflitti con Bitwarden." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Modifica le impostazioni del browser." + }, + "autofillOverlayVisibilityOff": { + "message": "No", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Quando il campo è selezionato", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Quando l'icona di riempimento automatico è selezionata", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Riempi automaticamente al caricamento della pagina" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Mostra un piccolo logo riconoscibile accanto a ogni login." }, + "faviconDescAlt": { + "message": "Mostra un piccolo logo riconoscibile accanto a ogni login. Si applica a tutti gli account connessi." + }, "enableBadgeCounter": { "message": "Mostra badge contatore" }, @@ -1342,7 +1451,7 @@ "description": "ex. Date this password was updated" }, "neverLockWarning": { - "message": "Sei sicuro di voler usare l'opzione \"Mai\"? Impostare le opzioni di blocco su \"Mai\" salverà la chiave di criptografia della cassaforte sul tuo dispositivo. Se utilizzi questa opzione, assicurati di mantenere il tuo dispositivo adeguatamente protetto." + "message": "Sei sicuro di voler usare l'opzione \"Mai\"? Impostare le opzioni di blocco su \"Mai\" salverà la chiave di crittografia della cassaforte sul tuo dispositivo. Se usi questa opzione, assicurati di mantenere il tuo dispositivo adeguatamente protetto." }, "noOrganizationsList": { "message": "Non appartieni a nessuna organizzazione. Le organizzazioni ti consentono di condividere elementi con altri in modo sicuro." @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Codice PIN non valido." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Troppi tentativi di inserimento del PIN falliti. Uscendo dall'account..." + }, "unlockWithBiometrics": { "message": "Sblocca con i dati biometrici" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Ripristina elemento" }, - "restoreItemConfirmation": { - "message": "Sei sicuro di voler ripristinare questo elemento?" - }, "restoredItem": { "message": "Elemento ripristinato" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "L'autenticazione biometrica del browser non è supportata su questo dispositivo." }, + "biometricsFailedTitle": { + "message": "Autenticazione biometrica fallita" + }, + "biometricsFailedDesc": { + "message": "L'autenticazione biometrica non può essere completata, prova a usare una password principale o a uscire. Se il problema persiste, contatta l'assistenza di Bitwarden." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permesso non fornito" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Una politica dell'organizzazione sta influenzando le tue opzioni di proprietà." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Una politica dell'organizzazione ti impedisce di importare elementi nella tua cassaforte individuale." + }, "excludedDomains": { "message": "Domini esclusi" }, "excludedDomainsDesc": { "message": "Bitwarden non ti chiederà di aggiungere nuovi login per questi domini. Ricorda di ricaricare la pagina perché le modifiche abbiano effetto." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden non chiederà di salvare le credenziali di accesso per questi domini per tutti gli account sul dispositivo. Ricarica la pagina affinché le modifiche abbiano effetto." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ non è un dominio valido", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Seleziona cartella..." }, - "ssoCompleteRegistration": { - "message": "Per completare l'accesso con SSO, imposta una password principale per accedere e proteggere la cassaforte." + "noFoldersFound": { + "message": "Nessuna cartella trovata", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Le autorizzazioni della tua organizzazione sono state aggiornate, obbligandoti a impostare una password principale.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "La tua organizzazione ti obbliga di impostare di una password principale.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verifica necessaria", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Ore" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Esportazione cassaforte personale" }, - "exportingPersonalVaultDescription": { - "message": "Solo gli elementi della cassaforte personale associati a $EMAIL$ saranno esportati. Gli elementi della cassaforte dell'organizzazione non saranno inclusi.", + "exportingIndividualVaultDescription": { + "message": "Solo gli elementi della cassaforte personale associati a $EMAIL$ saranno esportati. Gli elementi della cassaforte dell'organizzazione non saranno inclusi. Solo le informazioni sugli elementi della cassaforte saranno esportate e non includeranno gli allegati.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Versione Server" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Terze parti" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "Una notifica è stata inviata al tuo dispositivo." }, - "logInInitiated": { - "message": "Login avviato" + "loginInitiated": { + "message": "Accesso avviato" }, "exposedMasterPassword": { "message": "Password principale violata" @@ -2180,7 +2314,7 @@ "message": "Come riempire automaticamente" }, "autofillSelectInfoWithCommand": { - "message": "Seleziona un elemento da questa pagina o usa la scorciatoia: $COMMAND$", + "message": "Seleziona un elemento da questa schermata, usa la scorciatoia $COMMAND$, o esplora altre opzioni nelle impostazioni.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Seleziona un elemento da questa pagina o imposta una scorciatoia nelle impostazioni." + "message": "Seleziona un elemento da questa schermata o esplora altre opzioni nelle impostazioni." }, "gotIt": { "message": "Ok" @@ -2221,19 +2355,36 @@ } } }, - "region": { - "message": "Regione" + "loggingInOn": { + "message": "Accedendo su" }, "opensInANewWindow": { "message": "Si apre in una nuova finestra" }, - "eu": { - "message": "UE", - "description": "European Union" + "deviceApprovalRequired": { + "message": "Approvazione del dispositivo obbligatoria. Seleziona un'opzione di approvazione:" }, - "us": { - "message": "US", - "description": "United States" + "rememberThisDevice": { + "message": "Ricorda questo dispositivo" + }, + "uncheckIfPublicDevice": { + "message": "Deseleziona se stai usando un dispositivo pubblico" + }, + "approveFromYourOtherDevice": { + "message": "Approva dall'altro tuo dispositivo" + }, + "requestAdminApproval": { + "message": "Richiedi approvazione dell'amministratore" + }, + "approveWithMasterPassword": { + "message": "Approva con password principale" + }, + "ssoIdentifierRequired": { + "message": "Identificatore SSO dell'organizzazione obbligatorio." + }, + "eu": { + "message": "EU", + "description": "European Union" }, "accessDenied": { "message": "Accesso negato. Non hai i permessi necessari per visualizzare questa pagina." @@ -2243,5 +2394,619 @@ }, "display": { "message": "Schermo" + }, + "accountSuccessfullyCreated": { + "message": "Account creato!" + }, + "adminApprovalRequested": { + "message": "Approvazione dell'amministratore richiesta" + }, + "adminApprovalRequestSentToAdmins": { + "message": "La tua richiesta è stata inviata al tuo amministratore." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Riceverai una notifica una volta approvato." + }, + "troubleLoggingIn": { + "message": "Problemi ad accedere?" + }, + "loginApproved": { + "message": "Accesso approvato" + }, + "userEmailMissing": { + "message": "Email utente mancante" + }, + "deviceTrusted": { + "message": "Dispositivo fidato" + }, + "inputRequired": { + "message": "Input obbligatorio." + }, + "required": { + "message": "obbligatorio" + }, + "search": { + "message": "Cerca" + }, + "inputMinLength": { + "message": "L'input deve essere lungo almeno $COUNT$ caratteri.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "L'input non deve essere più lungo di $COUNT$ caratteri.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Questi caratteri non sono permessi: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Il valore immesso deve essere almeno $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Il valore immesso non deve superare $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "Una o più email non sono valide" + }, + "inputTrimValidator": { + "message": "L'input non può contenere solo spazi.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "L'input non è un indirizzo email." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ campi qui sopra richiedono la tua attenzione.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Seleziona --" + }, + "multiSelectPlaceholder": { + "message": "-- Digita per filtrare --" + }, + "multiSelectLoading": { + "message": "Ottenendo opzioni..." + }, + "multiSelectNotFound": { + "message": "Nessun elemento trovato" + }, + "multiSelectClearAll": { + "message": "Cancella tutto" + }, + "plusNMore": { + "message": "+$QUANTITY$ in più", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Sottomenu" + }, + "toggleCollapse": { + "message": "Comprimi/espandi", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Importare i tuoi dati su Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Proteggere i tuoi dati LastPass e importarli su Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Salva come file non crittografato", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importa su Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importazione in corso...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Dati importati!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Errore durante l'importazione. Controlla la console per i dettagli.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Errore di connessione durante l'importazione.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Dominio alias" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Gli elementi che richiedono di inserire di nuovo la password principale non possono essere riempiti automaticamente al caricamento della pagina.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Riempimento automatico al caricamento della pagina impostato con l'impostazione predefinita.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Disattiva l'inserimento della password principale di nuovo per modificare questo campo", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Vai al contenuto" + }, + "bitwardenOverlayButton": { + "message": "Pulsante del menu di riempimento automatico di Bitwarden", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Attiva/disattiva il menu di riempimento automatico di Bitwarden", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Menu di riempimento automatico di Bitwarden", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Sblocca il tuo account per visualizzare i login corrispondenti", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Sblocca account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Riempi le credenziali per", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Nome utente parziale", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Nessun elemento trovato", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Nuovo elemento", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Aggiungi un nuovo elemento alla cassaforte", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Il menu di riempimento automatico di Bitwarden è disponibile. Premi il tasto freccia giù per selezionare.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Attiva" + }, + "ignore": { + "message": "Ignora" + }, + "importData": { + "message": "Importa dati", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Errore di importazione" + }, + "importErrorDesc": { + "message": "Si è verificato un problema con i dati che hai provato a importare. Risolvi questi errori nel file e riprova." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Correggi gli errori qui sotto e riprova." + }, + "description": { + "message": "Descrizione" + }, + "importSuccess": { + "message": "Dati importati" + }, + "importSuccessNumberOfItems": { + "message": "$AMOUNT$ elementi sono stati importati.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Riprova" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verifica necessaria per questa azione. Imposta un PIN per continuare." + }, + "setPin": { + "message": "Imposta PIN" + }, + "verifyWithBiometrics": { + "message": "Verifica con i dati biometrici" + }, + "awaitingConfirmation": { + "message": "In attesa di conferma" + }, + "couldNotCompleteBiometrics": { + "message": "Impossibile completare i dati biometrici." + }, + "needADifferentMethod": { + "message": "Usa un altro metodo?" + }, + "useMasterPassword": { + "message": "Usa password principale" + }, + "usePin": { + "message": "Usa PIN" + }, + "useBiometrics": { + "message": "Usa dati biometrici" + }, + "enterVerificationCodeSentToEmail": { + "message": "Inserisci il codice di verifica che è stato inviato alla tua email." + }, + "resendCode": { + "message": "Invia codice di nuovo" + }, + "total": { + "message": "Totale" + }, + "importWarning": { + "message": "Stai importando dati in $ORGANIZATION$. I tuoi dati potrebbero essere condivisi con i membri di questa organizzazione. Vuoi procedere?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Avvia DUO e segui i passaggi per finire di accedere." + }, + "duoRequiredForAccount": { + "message": "Per il tuo account è richiesta la verifica in due passaggi DUO." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Apri l'estensione in un popup per completare l'accesso." + }, + "popoutExtension": { + "message": "Estrai estensione" + }, + "launchDuo": { + "message": "Avvia DUO" + }, + "importFormatError": { + "message": "I dati non sono formattati correttamente. Controlla il file di importazione e riprova." + }, + "importNothingError": { + "message": "Non è stato importato niente." + }, + "importEncKeyError": { + "message": "Errore durante la decrittografia del file esportato. La chiave di crittografia non corrisponde alla chiave di crittografia usata per esportare i dati." + }, + "invalidFilePassword": { + "message": "Password errata, usa la password che hai inserito alla creazione del file di esportazione." + }, + "importDestination": { + "message": "Destinazione dell'importazione" + }, + "learnAboutImportOptions": { + "message": "Ulteriori informazioni sulle tue opzioni di importazione" + }, + "selectImportFolder": { + "message": "Seleziona una cartella" + }, + "selectImportCollection": { + "message": "Seleziona una raccolta" + }, + "importTargetHint": { + "message": "Seleziona questa opzione se vuoi che i contenuti del file di importazione siano spostati in una $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Il file contiene elementi non assegnati." + }, + "selectFormat": { + "message": "Seleziona il formato del file da importare" + }, + "selectImportFile": { + "message": "Seleziona il file da importare" + }, + "chooseFile": { + "message": "Seleziona file" + }, + "noFileChosen": { + "message": "Nessun file selezionato" + }, + "orCopyPasteFileContents": { + "message": "oppure copia e incolla il contenuto del file da importare" + }, + "instructionsFor": { + "message": "Istruzioni per $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Conferma importazione della cassaforte" + }, + "confirmVaultImportDesc": { + "message": "Questo file è protetto da password. Inserisci la password del file per importare i dati." + }, + "confirmFilePassword": { + "message": "Conferma password del file" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "La passkey non sarà copiata" + }, + "passkeyNotCopiedAlert": { + "message": "La passkey non sarà copiata nell'elemento clonato. Vuoi continuare a clonare questo elemento?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verifica richiesta dal sito web. Questa funzionalità non è ancora implementata per gli account senza password principale." + }, + "logInWithPasskey": { + "message": "Accedi con passkey?" + }, + "passkeyAlreadyExists": { + "message": "Esiste già una passkey per questa applicazione." + }, + "noPasskeysFoundForThisApplication": { + "message": "Nessuna passkey trovata per questa applicazione." + }, + "noMatchingPasskeyLogin": { + "message": "Non hai un elemento corrispondente per questo sito." + }, + "confirm": { + "message": "Conferma" + }, + "savePasskey": { + "message": "Salva passkey" + }, + "savePasskeyNewLogin": { + "message": "Salva la passkey come nuovo elemento" + }, + "choosePasskey": { + "message": "Scegli un elemento in cui salvare questa passkey" + }, + "passkeyItem": { + "message": "Passkey" + }, + "overwritePasskey": { + "message": "Sovrascrivi passkey?" + }, + "overwritePasskeyAlert": { + "message": "Questo elemento contiene già una passkey. Sei sicuro di voler sovrascrivere la passkey corrente?" + }, + "featureNotSupported": { + "message": "Funzionalità non ancora supportata" + }, + "yourPasskeyIsLocked": { + "message": "Autenticazione obbligatoria per usare una passkey. Verifica la tua identità per continuare." + }, + "multifactorAuthenticationCancelled": { + "message": "Verifica in due passaggi annullata" + }, + "noLastPassDataFound": { + "message": "Nessun dato di LastPass trovato" + }, + "incorrectUsernameOrPassword": { + "message": "Nome utente o password errati" + }, + "incorrectPassword": { + "message": "Password errata" + }, + "incorrectCode": { + "message": "Codice errato" + }, + "incorrectPin": { + "message": "PIN errato" + }, + "multifactorAuthenticationFailed": { + "message": "Verifica in due passaggi non riuscita" + }, + "includeSharedFolders": { + "message": "Includi cartelle condivise" + }, + "lastPassEmail": { + "message": "Email di LastPass" + }, + "importingYourAccount": { + "message": "Importazione del tuo account..." + }, + "lastPassMFARequired": { + "message": "Verifica in due passaggi di LastPass obbligatoria" + }, + "lastPassMFADesc": { + "message": "Inserisci il codice di verifica dalla tua app di autenticazione" + }, + "lastPassOOBDesc": { + "message": "Approva la richiesta di accesso nella tua app di autenticazione o inserisci un codice di accesso una tantum." + }, + "passcode": { + "message": "Codice di verifica" + }, + "lastPassMasterPassword": { + "message": "Password principale di LastPass" + }, + "lastPassAuthRequired": { + "message": "Autenticazione di LastPass obbligatoria" + }, + "awaitingSSO": { + "message": "In attesa di autenticazione SSO" + }, + "awaitingSSODesc": { + "message": "Continua ad accedere utilizzando le tue credenziali aziendali." + }, + "seeDetailedInstructions": { + "message": "Consulta le istruzioni dettagliate sul nostro sito di assistenza su", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Importa direttamente da LastPass" + }, + "importFromCSV": { + "message": "Importa da CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Riprova o cerca un'email di LastPass per verificare la tua identità." + }, + "collection": { + "message": "Raccolta" + }, + "lastPassYubikeyDesc": { + "message": "Inserisci la tua YubiKey associata al tuo account LastPass nella porta USB del computer, poi premi il suo bottone." + }, + "switchAccount": { + "message": "Cambia account" + }, + "switchAccounts": { + "message": "Cambia account" + }, + "switchToAccount": { + "message": "Passa all'account" + }, + "activeAccount": { + "message": "Account attivo" + }, + "availableAccounts": { + "message": "Account disponibili" + }, + "accountLimitReached": { + "message": "Limite di account raggiunto. Esci da un account per aggiungerne un altro." + }, + "active": { + "message": "attivo" + }, + "locked": { + "message": "bloccato" + }, + "unlocked": { + "message": "sbloccato" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted in" + }, + "useDeviceOrHardwareKey": { + "message": "Usa il tuo dispositivo o la chiave hardware" + }, + "justOnce": { + "message": "Solo una volta" + }, + "alwaysForThisSite": { + "message": "Sempre per questo sito" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ aggiunto ai domini esclusi.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Formati comuni", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Rendere Bitwarden il tuo password manager predefinito?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Se questa opzione è disattivata potrebbe causare conflitti tra il menu di riempimento automatico di Bitwarden e quello del tuo browser.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Rendi Bitwarden il tuo password manager predefinito", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Impossibile impostare Bitwarden come password manager predefinito", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Concedi le autorizzazioni sulla privacy del browser a Bitwarden per impostarlo come password manager predefinito.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Rendi predefinito", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credenziali salvate!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credenziali aggiornate!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Errore durante il salvataggio delle credenziali. Controlla la console per più dettagli.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Rimuovi passkey" + }, + "passkeyRemoved": { + "message": "Passkey rimossa" + }, + "unassignedItemsBanner": { + "message": "Avviso: gli elementi dell'organizzazione non assegnati non sono più visibili nella visualizzazione Tutte le Cassaforti su tutti i dispositivi e sono ora accessibili solo tramite la Console di amministrazione. Assegna questi elementi ad una raccolta dalla Console di amministrazione per renderli visibili." } } diff --git a/apps/browser/src/_locales/ja/messages.json b/apps/browser/src/_locales/ja/messages.json index 3bfcffd034..eb78a7205f 100644 --- a/apps/browser/src/_locales/ja/messages.json +++ b/apps/browser/src/_locales/ja/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "自動入力" }, + "autoFillLogin": { + "message": "自動入力ログイン" + }, + "autoFillCard": { + "message": "自動入力カード" + }, + "autoFillIdentity": { + "message": "自動入力 ID" + }, "generatePasswordCopied": { "message": "パスワードを生成 (コピー)" }, @@ -98,7 +107,22 @@ "message": "カスタムフィールド名をコピー" }, "noMatchingLogins": { - "message": "一致するログインがありません。" + "message": "一致するログイン認証情報がありません。" + }, + "noCards": { + "message": "カードなし" + }, + "noIdentities": { + "message": "ID なし" + }, + "addLoginMenu": { + "message": "ログイン情報を追加" + }, + "addCardMenu": { + "message": "カードを追加" + }, + "addIdentityMenu": { + "message": "ID を追加" }, "unlockVaultMenu": { "message": "保管庫のロックを解除" @@ -244,6 +268,9 @@ "length": { "message": "長さ" }, + "passwordMinLength": { + "message": "パスワードの最低文字数" + }, "uppercase": { "message": "大文字(A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "パスワード" }, + "totp": { + "message": "認証シークレット" + }, "passphrase": { "message": "パスフレーズ" }, @@ -338,6 +368,12 @@ "other": { "message": "その他" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "保管庫のタイムアウト動作を変更するには、ロック解除方法を設定してください。" + }, + "unlockMethodNeeded": { + "message": "設定でロック解除方法をセットアップ" + }, "rateExtension": { "message": "拡張機能の評価" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "今すぐロック" }, + "lockAll": { + "message": "すべてロック" + }, "immediately": { "message": "すぐに" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "新しいアカウントを作成しました!今すぐログインできます。" }, + "youSuccessfullyLoggedIn": { + "message": "ログインに成功しました" + }, + "youMayCloseThisWindow": { + "message": "ウィンドウを閉じて大丈夫です" + }, "masterPassSent": { "message": "あなたのマスターパスワードのヒントを記載したメールを送信しました。" }, @@ -476,6 +521,18 @@ "autofillError": { "message": "選択したアイテムをこのページで自動入力できませんでした。コピーして貼り付けてください。" }, + "totpCaptureError": { + "message": "現在のウェブページから QR コードをスキャンできません" + }, + "totpCaptureSuccess": { + "message": "認証キーを追加しました" + }, + "totpCapture": { + "message": "現在のウェブページから認証 QR コードをスキャンする" + }, + "copyTOTP": { + "message": "認証キーのコピー (TOTP)" + }, "loggedOut": { "message": "ログアウトしました" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "初めてログインしたとき保管庫にログイン情報を保存するよう「ログイン情報を追加」通知を自動的に表示します。" }, + "addLoginNotificationDescAlt": { + "message": "保管庫にアイテムが見つからない場合は、アイテムを追加するよう要求します。ログインしているすべてのアカウントに適用されます。" + }, "showCardsCurrentTab": { "message": "タブページにカードを表示" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "ウェブサイトで変更があったとき、ログイン情報のパスワードを更新するか尋ねます" }, + "changedPasswordNotificationDescAlt": { + "message": "ウェブサイトで変更が検出された場合、ログインパスワードを更新するように求めます。ログインしているすべてのアカウントに適用されます。" + }, + "enableUsePasskeys": { + "message": "パスキーの保存と使用を尋ねる" + }, + "usePasskeysDesc": { + "message": "新しいパスキーを保存するか、保管庫に保存されているパスキーでログインするよう要求します。ログインしているすべてのアカウントに適用されます。" + }, "notificationChangeDesc": { "message": "Bitwarden でこのパスワードを更新しますか?" }, "notificationChangeSave": { "message": "今すぐ更新する" }, + "notificationUnlockDesc": { + "message": "Bitwarden 保管庫をロック解除して自動入力リクエストを完了してください。" + }, + "notificationUnlock": { + "message": "ロック解除" + }, "enableContextMenuItem": { "message": "コンテキストメニューオプションを表示" }, "contextMenuItemDesc": { "message": "コンテキストメニューでパスワード生成やログイン情報の入力をできるようにします" }, + "contextMenuItemDescAlt": { + "message": "コンテキストメニューを使用して、ウェブサイトのパスワード生成と一致するログインにアクセスします。ログインしているすべてのアカウントに適用されます。" + }, "defaultUriMatchDetection": { "message": "デフォルトの URI 一致検出方法", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "アプリのテーマカラーを変更します。" }, + "themeDescAlt": { + "message": "アプリのカラーテーマを変更します。ログインしているすべてのアカウントに適用されます。" + }, "dark": { "message": "ダーク", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "サービスが利用できません" }, - "updateKey": { - "message": "暗号キーを更新するまでこの機能は使用できません。" + "encryptionKeyMigrationRequired": { + "message": "暗号化キーの移行が必要です。暗号化キーを更新するには、ウェブ保管庫からログインしてください。" }, "premiumMembership": { "message": "プレミアム会員" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1GB の暗号化されたファイルストレージ" }, - "ppremiumSignUpTwoStep": { - "message": "YubiKey、FIDO U2F、Duoなどの追加の2段階認証ログインオプション" + "premiumSignUpTwoStepOptions": { + "message": "YubiKey、Duo などのプロプライエタリな2段階認証オプション。" }, "ppremiumSignUpReports": { "message": "保管庫を安全に保つための、パスワードやアカウントの健全性、データ侵害に関するレポート" @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "環境 URL を保存しました。" }, + "showAutoFillMenuOnFormFields": { + "message": "フォーム項目に自動入力メニューを表示", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "ログインしているすべてのアカウントに適用されます。" + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "競合を避けるために、ブラウザーのパスワード管理設定をオフにしてください。" + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "ブラウザーの設定を編集してください。" + }, + "autofillOverlayVisibilityOff": { + "message": "オフ", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "項目を選択しているとき (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "自動入力アイコンを選択しているとき", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "ページ読み込み時の自動入力を有効化" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "ログイン情報の隣にアイコン画像を表示します" }, + "faviconDescAlt": { + "message": "各ログインの横に認識可能な画像を表示します。すべてのログイン済みアカウントに適用されます。" + }, "enableBadgeCounter": { "message": "バッジカウンターを表示" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "PIN コードが間違っています。" }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "無効な PIN 入力の試行回数が多すぎます。ログアウトします。" + }, "unlockWithBiometrics": { "message": "生体認証でロック解除" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "アイテムをリストア" }, - "restoreItemConfirmation": { - "message": "このアイテムをリストアしますか?" - }, "restoredItem": { "message": "リストアされたアイテム" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "このデバイスではブラウザの生体認証に対応していません。" }, + "biometricsFailedTitle": { + "message": "生体認証に失敗しました" + }, + "biometricsFailedDesc": { + "message": "生体認証を完了できません。マスターパスワードを使うかログアウトしてください。それでも直らない場合は、Bitwarden サポートまでお問い合わせください。" + }, "nativeMessaginPermissionErrorTitle": { "message": "権限が提供されていません" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "組織のポリシーが所有者のオプションに影響を与えています。" }, + "personalOwnershipPolicyInEffectImports": { + "message": "組織のポリシーにより、個々の保管庫へのアイテムのインポートがブロックされました。" + }, "excludedDomains": { "message": "除外するドメイン" }, "excludedDomainsDesc": { "message": "Bitwarden はこれらのドメインのログイン情報を保存するよう尋ねません。変更を有効にするにはページを更新する必要があります。" }, + "excludedDomainsDescAlt": { + "message": "Bitwarden はログインしているすべてのアカウントで、これらのドメインのログイン情報を保存するよう要求しません。 変更を有効にするにはページを更新する必要があります。" + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ は有効なドメインではありません", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "フォルダーを選択..." }, - "ssoCompleteRegistration": { - "message": "SSO ログインを完了するには、保管庫にアクセス・保護するためのマスターパスワードを設定してください。" + "noFoldersFound": { + "message": "フォルダーが見つかりません", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "組織の権限が更新され、マスターパスワードの設定が必要になりました。", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "あなたの組織では、マスターパスワードの設定を義務付けています。", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "認証が必要です", + "description": "Default title for the user verification dialog." }, "hours": { "message": "時間" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "個人保管庫のエクスポート" }, - "exportingPersonalVaultDescription": { - "message": "$EMAIL$ に関連付けられた個人用保管庫アイテムのみがエクスポートされます。組織用保管庫アイテムは含まれません。", + "exportingIndividualVaultDescription": { + "message": "$EMAIL$ に関連付けられた個人の保管庫アイテムのみがエクスポートされます。組織の保管庫アイテムは含まれません。 保管庫アイテム情報のみがエクスポートされ、関連する添付ファイルはエクスポートされません。", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "サーバーのバージョン" }, - "selfHosted": { - "message": "セルフホスト" + "selfHostedServer": { + "message": "自己ホスト型" }, "thirdParty": { "message": "サードパーティー" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "デバイスに通知を送信しました。" }, - "logInInitiated": { + "loginInitiated": { "message": "ログイン開始" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "自動入力する方法" }, "autofillSelectInfoWithCommand": { - "message": "このページからアイテムを選択するか、ショートカットを使用してください: $COMMAND$", + "message": "この画面からアイテムを選択するか、ショートカット $COMMAND$を使用するか、設定で他のオプションを確認してください。", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "このページからアイテムを選択するか、設定でショートカットを設定してください。" + "message": "この画面からアイテムを選択するか、設定で他のオプションを確認してください。" }, "gotIt": { "message": "了解" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "リージョン" + "loggingInOn": { + "message": "ログイン先" }, "opensInANewWindow": { "message": "新しいウィンドウで開く" }, + "deviceApprovalRequired": { + "message": "デバイスの承認が必要です。以下から承認オプションを選択してください:" + }, + "rememberThisDevice": { + "message": "このデバイスを記憶する" + }, + "uncheckIfPublicDevice": { + "message": "パブリックデバイスを使用している場合はチェックしないでください" + }, + "approveFromYourOtherDevice": { + "message": "他のデバイスから承認する" + }, + "requestAdminApproval": { + "message": "管理者の承認を要求する" + }, + "approveWithMasterPassword": { + "message": "マスターパスワードで承認する" + }, + "ssoIdentifierRequired": { + "message": "組織の SSO ID が必要です。" + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "米国", - "description": "United States" - }, "accessDenied": { "message": "アクセスが拒否されました。このページを表示する権限がありません。" }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "表示" + }, + "accountSuccessfullyCreated": { + "message": "アカウントを正常に作成しました!" + }, + "adminApprovalRequested": { + "message": "管理者の承認を要求しました" + }, + "adminApprovalRequestSentToAdmins": { + "message": "要求を管理者に送信しました。" + }, + "youWillBeNotifiedOnceApproved": { + "message": "承認されると通知されます。 " + }, + "troubleLoggingIn": { + "message": "ログインできない場合" + }, + "loginApproved": { + "message": "ログインが承認されました" + }, + "userEmailMissing": { + "message": "ユーザーのメールアドレスがありません" + }, + "deviceTrusted": { + "message": "信頼されたデバイス" + }, + "inputRequired": { + "message": "入力が必要です。" + }, + "required": { + "message": "必須" + }, + "search": { + "message": "検索" + }, + "inputMinLength": { + "message": "$COUNT$ 文字以上でなければなりません。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "$COUNT$ 文字を超えてはいけません。", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "次の文字は許可されていません: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "入力値は少なくとも$MIN$桁でなければなりません。", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "入力値は$MAX$桁を超えてはいけません。", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1つ以上のメールアドレスが無効です" + }, + "inputTrimValidator": { + "message": "値を空白のみにしないでください。", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "入力したものはメールアドレスではありません。" + }, + "fieldsNeedAttention": { + "message": "上記の $COUNT$ 点を確認してください。", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- 選択 --" + }, + "multiSelectPlaceholder": { + "message": "-- 入力して絞り込み --" + }, + "multiSelectLoading": { + "message": "オプションを取得中..." + }, + "multiSelectNotFound": { + "message": "アイテムが見つかりません" + }, + "multiSelectClearAll": { + "message": "すべてクリア" + }, + "plusNMore": { + "message": "+ $QUANTITY$ 個以上", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "サブメニュー" + }, + "toggleCollapse": { + "message": "開く/閉じる", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Bitwarden にデータをインポートしますか?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "LastPass データを Bitwarden にインポートしますか?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "暗号化されていないファイルとして保存", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Bitwarden にインポート", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "インポート中...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "データをインポートしました!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "インポート中にエラーが発生しました。詳細はコンソールを確認してください。", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "インポート中にネットワークエラーが発生しました。", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "エイリアスドメイン" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "マスターパスワードの再入力を促すアイテムは、ページ読み込み時に自動入力できません。ページ読み込み時の自動入力をオフにしました。", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "ページ読み込み時の自動入力はデフォルトの設定を使うよう設定しました。", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "このフィールドを編集するには、マスターパスワードの再入力をオフにしてください", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "コンテンツへ移動" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden 自動入力メニューボタン", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Bitwarden 自動入力メニューの切り替え", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden 自動入力メニュー", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "一致するログイン情報を表示するには、アカウントのロックを解除してください", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "アカウントのロックを解除", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "資格情報を入力:", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "部分的なユーザー名", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "表示するアイテムがありません", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "新しいアイテム", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "新しい保管庫アイテムを追加", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden 自動入力メニューがあります。下矢印キーを押すと選択できます。", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "オンにする" + }, + "ignore": { + "message": "無視" + }, + "importData": { + "message": "データのインポート", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "インポート エラー" + }, + "importErrorDesc": { + "message": "インポートしようとしたデータに問題がありました。以下のエラーをソースファイルで解決し、もう一度やり直してください。" + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "以下のエラーを解決してやり直してください。" + }, + "description": { + "message": "説明" + }, + "importSuccess": { + "message": "データをインポートしました" + }, + "importSuccessNumberOfItems": { + "message": "合計 $AMOUNT$ 件のアイテムをインポートしました。", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "再試行" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "この操作には認証が必要です。続行するには PIN を設定してください。" + }, + "setPin": { + "message": "PIN を設定" + }, + "verifyWithBiometrics": { + "message": "生体認証による確認" + }, + "awaitingConfirmation": { + "message": "確認中" + }, + "couldNotCompleteBiometrics": { + "message": "生体認証を完了できませんでした。" + }, + "needADifferentMethod": { + "message": "別の方法が必要ですか?" + }, + "useMasterPassword": { + "message": "マスターパスワードを使用" + }, + "usePin": { + "message": "PIN を使用" + }, + "useBiometrics": { + "message": "生体認証を使用" + }, + "enterVerificationCodeSentToEmail": { + "message": "メールアドレスに送信された認証コードを入力してください。" + }, + "resendCode": { + "message": "コードを再送信する" + }, + "total": { + "message": "合計" + }, + "importWarning": { + "message": "$ORGANIZATION$にデータをインポートしています。データはこの組織のメンバーと共有される可能性があります。続行しますか?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "ログインを完了するには DUO を起動し手順に従ってください。" + }, + "duoRequiredForAccount": { + "message": "アカウントには Duo 二段階認証が必要です。" + }, + "popoutTheExtensionToCompleteLogin": { + "message": "ログインを完了するために拡張機能を開きます。" + }, + "popoutExtension": { + "message": "拡張機能のポップアップ" + }, + "launchDuo": { + "message": "DUO を起動" + }, + "importFormatError": { + "message": "データが正しい形式ではありません。インポートするファイルを確認してやり直してください。" + }, + "importNothingError": { + "message": "何もインポートされませんでした。" + }, + "importEncKeyError": { + "message": "エクスポートされたファイルの復号でエラーが発生しました。暗号化キーが、データをエクスポートするために使用された暗号化キーと一致しません。" + }, + "invalidFilePassword": { + "message": "無効なファイルパスワードです。エクスポートファイルを作成したときに入力したパスワードを使用してください。" + }, + "importDestination": { + "message": "インポート先" + }, + "learnAboutImportOptions": { + "message": "インポートオプションの詳細" + }, + "selectImportFolder": { + "message": "フォルダーを選択" + }, + "selectImportCollection": { + "message": "コレクションを選択" + }, + "importTargetHint": { + "message": "インポートしたファイルコンテンツを $DESTINATION$ に移動したい場合は、このオプションを選択してください。", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "割り当てられていないアイテムがファイルに含まれています。" + }, + "selectFormat": { + "message": "インポートするファイルの形式を選択" + }, + "selectImportFile": { + "message": "インポートするファイルを選択" + }, + "chooseFile": { + "message": "ファイルを選択" + }, + "noFileChosen": { + "message": "ファイルが選択されていません" + }, + "orCopyPasteFileContents": { + "message": "またはインポートするファイルの中身をコピーして貼り付け" + }, + "instructionsFor": { + "message": "$NAME$ 向けの説明", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "保管庫のインポートの確認" + }, + "confirmVaultImportDesc": { + "message": "このファイルはパスワードで保護されています。インポートするファイルのパスワードを入力してください。" + }, + "confirmFilePassword": { + "message": "ファイルパスワードの確認" + }, + "typePasskey": { + "message": "パスキー" + }, + "passkeyNotCopied": { + "message": "パスキーはコピーされません" + }, + "passkeyNotCopiedAlert": { + "message": "パスキーは複製されたアイテムにコピーされません。このアイテムを複製しますか?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "開始サイトでの認証が必要です。この機能はマスターパスワードのないアカウントではまだ対応していません。" + }, + "logInWithPasskey": { + "message": "パスキーでログインしますか?" + }, + "passkeyAlreadyExists": { + "message": "このアプリにはすでにパスキーが存在します。" + }, + "noPasskeysFoundForThisApplication": { + "message": "このアプリにはパスキーがありません。" + }, + "noMatchingPasskeyLogin": { + "message": "このサイトに一致するログイン情報がありません。" + }, + "confirm": { + "message": "確認" + }, + "savePasskey": { + "message": "パスキーを保存" + }, + "savePasskeyNewLogin": { + "message": "パスキーを新しいログイン情報として保存" + }, + "choosePasskey": { + "message": "このパスキーを保存するログイン情報を選択してください" + }, + "passkeyItem": { + "message": "パスキーアイテム" + }, + "overwritePasskey": { + "message": "パスキーを上書きしますか?" + }, + "overwritePasskeyAlert": { + "message": "このアイテムにはすでにパスキーが含まれています。現在のパスキーを上書きしてもよろしいですか?" + }, + "featureNotSupported": { + "message": "機能は未対応です" + }, + "yourPasskeyIsLocked": { + "message": "パスキーを使用するには認証が必要です。続行するには本人確認を行ってください。" + }, + "multifactorAuthenticationCancelled": { + "message": "多要素認証がキャンセルされました" + }, + "noLastPassDataFound": { + "message": "LastPass データが見つかりません" + }, + "incorrectUsernameOrPassword": { + "message": "ユーザー名またはパスワードが間違っています" + }, + "incorrectPassword": { + "message": "パスワードが違います" + }, + "incorrectCode": { + "message": "コードが違います" + }, + "incorrectPin": { + "message": "PIN が正しくありません" + }, + "multifactorAuthenticationFailed": { + "message": "多要素認証に失敗しました" + }, + "includeSharedFolders": { + "message": "共有フォルダーを含める" + }, + "lastPassEmail": { + "message": "LastPass メールアドレス" + }, + "importingYourAccount": { + "message": "アカウントをインポートしています..." + }, + "lastPassMFARequired": { + "message": "LastPass の多要素認証が必要です" + }, + "lastPassMFADesc": { + "message": "認証アプリに表示されているワンタイムパスコードを入力してください" + }, + "lastPassOOBDesc": { + "message": "認証アプリでログイン要求を承認するか、ワンタイムパスコードを入力してください。" + }, + "passcode": { + "message": "パスコード" + }, + "lastPassMasterPassword": { + "message": "LastPass マスターパスワード" + }, + "lastPassAuthRequired": { + "message": "LastPass 認証が必要です" + }, + "awaitingSSO": { + "message": "SSO 認証を待機中" + }, + "awaitingSSODesc": { + "message": "会社の資格情報を使用してログインを続けてください。" + }, + "seeDetailedInstructions": { + "message": "詳細な手順はこちらをご覧ください:", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "LastPass から直接インポート" + }, + "importFromCSV": { + "message": "CSV からインポート" + }, + "lastPassTryAgainCheckEmail": { + "message": "もう一度お試しいただくか、LastPass からのメールを探して認証してください。" + }, + "collection": { + "message": "コレクション" + }, + "lastPassYubikeyDesc": { + "message": "LastPass アカウントに関連付けられた YubiKey を USB ポートに挿入し、ボタンをタッチしてください。" + }, + "switchAccount": { + "message": "アカウントの切り替え" + }, + "switchAccounts": { + "message": "アカウントの切り替え" + }, + "switchToAccount": { + "message": "アカウントに切り替え" + }, + "activeAccount": { + "message": "アクティブなアカウント" + }, + "availableAccounts": { + "message": "利用可能なアカウント" + }, + "accountLimitReached": { + "message": "アカウントの制限に達しました。別のアカウントを追加するにはまずログアウトしてください。" + }, + "active": { + "message": "アクティブ" + }, + "locked": { + "message": "ロック中" + }, + "unlocked": { + "message": "ロック解除済み" + }, + "server": { + "message": "サーバー" + }, + "hostedAt": { + "message": "ホスト" + }, + "useDeviceOrHardwareKey": { + "message": "デバイスまたはハードウェアキーを使用してください" + }, + "justOnce": { + "message": "今回だけ" + }, + "alwaysForThisSite": { + "message": "このサイトでは常に" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ を除外ドメインに追加しました。", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "一般的な形式", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Bitwarden をデフォルトのパスワードマネージャーにしますか?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "このオプションを無視すると、Bitwarden の自動入力メニューとブラウザの自動入力メニューが競合する可能性があります。", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Bitwarden をデフォルトのパスワードマネージャーにする", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Bitwarden をデフォルトのパスワードマネージャーとして設定できません", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Bitwarden をデフォルトのパスワードマネージャーとして設定するには、ブラウザのプライバシー権限を付与する必要があります。", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "デフォルトにする", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "認証情報を保存しました!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "認証情報を更新しました!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "資格情報の保存中にエラーが発生しました。詳細はコンソールを確認してください。", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "パスキーを削除" + }, + "passkeyRemoved": { + "message": "パスキーを削除しました" + }, + "unassignedItemsBanner": { + "message": "注意: 割り当てられていない組織項目は、すべての保管庫のビューでは表示されなくなり、管理コンソールからのみアクセスできます。 管理コンソールからコレクションにこれらのアイテムを割り当てると、表示するようにできます。" } } diff --git a/apps/browser/src/_locales/ka/messages.json b/apps/browser/src/_locales/ka/messages.json index e13a6c5e03..66dae59f4c 100644 --- a/apps/browser/src/_locales/ka/messages.json +++ b/apps/browser/src/_locales/ka/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "თვითშევსება" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "სიგრძე" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "პაროლი" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Passphrase" }, @@ -338,6 +368,12 @@ "other": { "message": "სხვა" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "დაუყონებლივ" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Your new account has been created! You may now log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We've sent you an email with your master password hint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Ask to add an item if one isn't found in your vault." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, "notificationChangeSave": { "message": "Update" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "Default URI match detection", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Dark", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Invalid PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restore item" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Item restored" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/km/messages.json b/apps/browser/src/_locales/km/messages.json index 9e46b55f19..dc91c1e6a9 100644 --- a/apps/browser/src/_locales/km/messages.json +++ b/apps/browser/src/_locales/km/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-fill" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "Length" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Password" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Passphrase" }, @@ -338,6 +368,12 @@ "other": { "message": "Other" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Immediately" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Your new account has been created! You may now log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We've sent you an email with your master password hint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Ask to add an item if one isn't found in your vault." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, "notificationChangeSave": { "message": "Update" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "Default URI match detection", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Dark", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Invalid PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restore item" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Item restored" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/kn/messages.json b/apps/browser/src/_locales/kn/messages.json index 9cbabce794..68fe45999d 100644 --- a/apps/browser/src/_locales/kn/messages.json +++ b/apps/browser/src/_locales/kn/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "ಸ್ವಯಂ ಭರ್ತಿ" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "ಪಾಸ್ವರ್ಡ್ ರಚಿಸಿ (ನಕಲಿಸಲಾಗಿದೆ)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "ಹೊಂದಾಣಿಕೆಯ ಲಾಗಿನ್‌ಗಳು ಇಲ್ಲ." }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "ಉದ್ದ" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "ಪಾಸ್ವರ್ಡ್" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "ಪಾಸ್ಫ್ರೇಸ್" }, @@ -338,6 +368,12 @@ "other": { "message": "ಇತರೆ" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "ವಿಸ್ತರಣೆಯನ್ನು ರೇಟ್ ಮಾಡಿ" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "ಈಗ ಲಾಕ್ ಮಾಡಿ" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "ತಕ್ಷಣ" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "ನಿಮ್ಮ ಹೊಸ ಖಾತೆಯನ್ನು ರಚಿಸಲಾಗಿದೆ! ನೀವು ಈಗ ಲಾಗ್ ಇನ್ ಮಾಡಬಹುದು." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಸುಳಿವಿನೊಂದಿಗೆ ನಾವು ನಿಮಗೆ ಇಮೇಲ್ ಕಳುಹಿಸಿದ್ದೇವೆ." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "ಈ ಪುಟದಲ್ಲಿ ಆಯ್ದ ಐಟಂ ಅನ್ನು ಸ್ವಯಂ ಭರ್ತಿ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಬದಲಿಗೆ ಮಾಹಿತಿಯನ್ನು ನಕಲಿಸಿ ಮತ್ತು ಅಂಟಿಸಿ." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "ಲಾಗ್ ಔಟ್" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "\"ಲಾಗಿನ್ ಅಧಿಸೂಚನೆಯನ್ನು ಸೇರಿಸಿ\" ನೀವು ಮೊದಲ ಬಾರಿಗೆ ಪ್ರವೇಶಿಸಿದಾಗಲೆಲ್ಲಾ ಹೊಸ ಲಾಗಿನ್‌ಗಳನ್ನು ನಿಮ್ಮ ವಾಲ್ಟ್‌ಗೆ ಉಳಿಸಲು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕೇಳುತ್ತದೆ." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "ಈ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಬಿಟ್ವರ್ಡ್ನಲ್ಲಿ ನವೀಕರಿಸಲು ನೀವು ಬಯಸುತ್ತೀರಾ?" }, "notificationChangeSave": { "message": "ಹೌದು, ಈಗ ನವೀಕರಿಸಿ" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "ಡೀಫಾಲ್ಟ್ ಯುಆರ್ಐ ಹೊಂದಾಣಿಕೆ ಪತ್ತೆ", @@ -649,6 +727,9 @@ "themeDesc": { "message": "ಅಪ್ಲಿಕೇಶನ್‌ನ ಬಣ್ಣ ಥೀಮ್ ಅನ್ನು ಬದಲಾಯಿಸಿ." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "ಡಾರ್ಕ್", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "ವೈಶಿಷ್ಟ್ಯ ಲಭ್ಯವಿಲ್ಲ" }, - "updateKey": { - "message": "ನಿಮ್ಮ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ನವೀಕರಿಸುವವರೆಗೆ ನೀವು ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "ಪ್ರೀಮಿಯಂ ಸದಸ್ಯತ್ವ" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "ಫೈಲ್ ಲಗತ್ತುಗಳಿಗಾಗಿ 1 ಜಿಬಿ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಸಂಗ್ರಹ." }, - "ppremiumSignUpTwoStep": { - "message": "ಹೆಚ್ಚುವರಿ ಎರಡು-ಹಂತದ ಲಾಗಿನ್ ಆಯ್ಕೆಗಳಾದ ಯೂಬಿಕೆ, ಎಫ್‌ಐಡಿಒ ಯು 2 ಎಫ್, ಮತ್ತು ಡ್ಯುವೋ." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿರಿಸಲು ಪಾಸ್ವರ್ಡ್ ನೈರ್ಮಲ್ಯ, ಖಾತೆ ಆರೋಗ್ಯ ಮತ್ತು ಡೇಟಾ ಉಲ್ಲಂಘನೆ ವರದಿಗಳು." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "ಪರಿಸರ URL ಗಳನ್ನು ಉಳಿಸಲಾಗಿದೆ." }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "ಪುಟ ಲೋಡ್‌ನಲ್ಲಿ ಸ್ವಯಂ ಭರ್ತಿ ಸಕ್ರಿಯಗೊಳಿಸಿ" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "ಅಮಾನ್ಯ ಪಿನ್ ಕೋಡ್." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "ಬಯೋಮೆಟ್ರಿಕ್ಸ್‌ನೊಂದಿಗೆ ಅನ್ಲಾಕ್ ಮಾಡಿ" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "ಐಟಂ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಿ" }, - "restoreItemConfirmation": { - "message": "ಈ ಐಟಂ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" - }, "restoredItem": { "message": "ಐಟಂ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲಾಗಿದೆ" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "ಬ್ರೌಸರ್ ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಈ ಸಾಧನದಲ್ಲಿ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "ಅನುಮತಿ ಒದಗಿಸಲಾಗಿಲ್ಲ" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "ಸಂಸ್ಥೆಯ ನೀತಿಯು ನಿಮ್ಮ ಮಾಲೀಕತ್ವದ ಆಯ್ಕೆಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತಿದೆ." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "ಹೊರತುಪಡಿಸಿದ ಡೊಮೇನ್ಗಳು" }, "excludedDomainsDesc": { "message": "ಬಿಟ್ವಾರ್ಡ್ ಈ ಡೊಮೇನ್ಗಳಿಗಾಗಿ ಲಾಗಿನ್ ವಿವರಗಳನ್ನು ಉಳಿಸಲು ಕೇಳುವುದಿಲ್ಲ. ಬದಲಾವಣೆಗಳನ್ನು ಜಾರಿಗೆ ತರಲು ನೀವು ಪುಟವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಬೇಕು." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ ಮಾನ್ಯವಾದ ಡೊಮೇನ್ ಅಲ್ಲ", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/ko/messages.json b/apps/browser/src/_locales/ko/messages.json index c23673320d..689e618929 100644 --- a/apps/browser/src/_locales/ko/messages.json +++ b/apps/browser/src/_locales/ko/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "자동 완성" }, + "autoFillLogin": { + "message": "로그인 자동 완성" + }, + "autoFillCard": { + "message": "카드 자동 완성" + }, + "autoFillIdentity": { + "message": "신원 자동 완성" + }, "generatePasswordCopied": { "message": "비밀번호 생성 및 클립보드에 복사" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "사용할 수 있는 로그인이 없습니다." }, + "noCards": { + "message": "카드 없음" + }, + "noIdentities": { + "message": "신원 없음" + }, + "addLoginMenu": { + "message": "로그인 추가" + }, + "addCardMenu": { + "message": "카드 추가" + }, + "addIdentityMenu": { + "message": "신원 추가" + }, "unlockVaultMenu": { "message": "보관함 잠금 해제" }, @@ -196,7 +220,7 @@ "message": "도움말 및 의견" }, "helpCenter": { - "message": "Bitwarden Help center" + "message": "Bitwarden 도움말 센터" }, "communityForums": { "message": "Explore Bitwarden community forums" @@ -244,6 +268,9 @@ "length": { "message": "길이" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "대문자 (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "비밀번호" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "패스프레이즈" }, @@ -338,6 +368,12 @@ "other": { "message": "기타" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "확장 프로그램 평가" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "지금 잠그기" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "즉시" }, @@ -418,7 +457,7 @@ "message": "브라우저 다시 시작 시" }, "never": { - "message": "잠그지 않음" + "message": "안함" }, "security": { "message": "보안" @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "계정 생성이 완료되었습니다! 이제 로그인하실 수 있습니다." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "마스터 비밀번호 힌트가 담긴 이메일을 보냈습니다." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "선택한 항목을 이 페이지에서 자동 완성할 수 없습니다. 대신 정보를 직접 복사 / 붙여넣기하여 사용하십시오." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "로그아웃됨" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "\"로그인 추가 알림\"을 사용하면 새 로그인을 사용할 때마다 보관함에 그 로그인을 추가할 것인지 물어봅니다." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Bitwarden에 저장되어 있는 비밀번호를 이 비밀번호로 변경하시겠습니까?" }, "notificationChangeSave": { "message": "예, 지금 변경하겠습니다." }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "기본 URI 일치 인식", @@ -649,6 +727,9 @@ "themeDesc": { "message": "애플리케이션의 색상 테마를 변경합니다." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "어두운 테마", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "기능 사용할 수 없음" }, - "updateKey": { - "message": "이 기능을 사용하려면 암호화 키를 업데이트해야 합니다." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "프리미엄 멤버십" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1GB의 암호화된 파일 저장소." }, - "ppremiumSignUpTwoStep": { - "message": "YubiKey나 FIDO U2F, Duo 등의 추가적인 2단계 인증 옵션." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "보관함을 안전하게 유지하기 위한 암호 위생, 계정 상태, 데이터 유출 보고서" @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "환경 URL 값을 저장했습니다." }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "페이지 로드 시 자동 완성 사용" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "잘못된 PIN 코드입니다." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "생체 인식을 사용하여 잠금 해제" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "항목 복원" }, - "restoreItemConfirmation": { - "message": "정말 이 항목을 복원하시겠습니까?" - }, "restoredItem": { "message": "복원된 항목" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "이 기기에서는 생체 인식이 지원되지 않습니다." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "권한이 부여되지 않음" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "조직의 정책이 소유권 설정에 영향을 미치고 있습니다." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "제외된 도메인" }, "excludedDomainsDesc": { "message": "Bitwarden은 이 도메인들에 대해 로그인 정보를 저장할 것인지 묻지 않습니다. 페이지를 새로고침해야 변경된 내용이 적용됩니다." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ 도메인은 유효한 도메인이 아닙니다.", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "폴더 선택..." }, - "ssoCompleteRegistration": { - "message": "SSO 로그인을 하기 위해서 보관함에 접근하고 보호할 수 있도록 마스터 비밀번호를 설정해주세요." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "시" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "개인 보관함을 내보내는 중" }, - "exportingPersonalVaultDescription": { - "message": "오직 $EMAIL$와 연관된 개인 보관함의 항목만 내보내집니다. 조직 보관함의 항목은 포함되지 않습니다.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/lt/messages.json b/apps/browser/src/_locales/lt/messages.json index 682cd40c52..c99d128915 100644 --- a/apps/browser/src/_locales/lt/messages.json +++ b/apps/browser/src/_locales/lt/messages.json @@ -38,10 +38,10 @@ "message": "Pagrindinis slaptažodis" }, "masterPassDesc": { - "message": "Pagrindinis slaptažodis yra slaptažodis, kurį naudojate norėdami pasiekti savo saugyklą. Labai svarbu nepamiršti pagrindinio slaptažodžio. Negalėsite atkurti slaptažodį, jei jį pamiršote." + "message": "Pagrindinis slaptažodis yra slaptažodis, kurį naudojate norėdami pasiekti savo saugyklą. Labai svarbu nepamiršti pagrindinio slaptažodžio. Nėra galimybių atkurti slaptažodį, jei jį pamiršite." }, "masterPassHintDesc": { - "message": "Pagrindinio slaptažodžio užuomina gali padėti prisiminti slaptažodį, jei jį pamiršite." + "message": "Pagrindinio slaptažodžio užuomina gali padėti Jums prisiminti slaptažodį, jei jį pamiršite." }, "reTypeMasterPass": { "message": "Pakartokite pagrindinį slaptažodį" @@ -74,7 +74,7 @@ "message": "Kopijuoti slaptažodį" }, "copyNote": { - "message": "Kopijuoti pastabas" + "message": "Kopijuoti pastabą" }, "copyUri": { "message": "Kopijuoti nuorodą" @@ -91,20 +91,44 @@ "autoFill": { "message": "Automatinis užpildymas" }, + "autoFillLogin": { + "message": "Prisijungimo automatinis užpildymas" + }, + "autoFillCard": { + "message": "Kortelės automatinis užpildymas" + }, + "autoFillIdentity": { + "message": "Tapatybės automatinis užpildymas" + }, "generatePasswordCopied": { - "message": "Kurti slaptažodį (paruoštas įterpti)" + "message": "Sukurti slaptažodį (nukopijuotas)" }, "copyElementIdentifier": { - "message": "Kopijuoti pritaikyto laukelio pavadinimą" + "message": "Nukopijuoti pasirinktinio laukelio pavadinimą" }, "noMatchingLogins": { - "message": "Nėra atitinkančių prisijungimų." + "message": "Nėra atitinkančių prisijungimų" + }, + "noCards": { + "message": "Nėra kortelių" + }, + "noIdentities": { + "message": "Nėra tapatybių" + }, + "addLoginMenu": { + "message": "Pridėti prisijungimą" + }, + "addCardMenu": { + "message": "Pridėti kortelę" + }, + "addIdentityMenu": { + "message": "Pridėti tapatybę" }, "unlockVaultMenu": { - "message": "Atrakinti saugyklą" + "message": "Atrakinti Jūsų saugyklą" }, "loginToVaultMenu": { - "message": "Prisijungti prie saugyklos" + "message": "Prisijungti prie Jūsų saugyklos" }, "autoFillInfo": { "message": "Nėra galimų prisijungimų prie dabartinio naršyklės skirtuko." @@ -149,11 +173,11 @@ "message": "Keisti pagrindinį slaptažodį" }, "fingerprintPhrase": { - "message": "Dalijimosi slaptažodis", + "message": "Pirštų atspaudų frazė", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "yourAccountsFingerprint": { - "message": "Jūsų paskiros dalijimosi slaptažodis", + "message": "Jūsų paskyros pirštų atspaudų frazė", "description": "A 'fingerprint phrase' is a unique 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": { @@ -175,34 +199,34 @@ "message": "Perkelti" }, "addFolder": { - "message": "Pridėti katalogą" + "message": "Pridėti aplankalą" }, "name": { "message": "Pavadinimas" }, "editFolder": { - "message": "Redaguoti aplanką" + "message": "Redaguoti aplankalą" }, "deleteFolder": { - "message": "Šalinti katalogą" + "message": "Šalinti aplankalą" }, "folders": { - "message": "Aplankai" + "message": "Aplankalai" }, "noFolders": { - "message": "Aplankų nėra" + "message": "Nėra aplankalų, kuriuos būtų galima išvardyti." }, "helpFeedback": { "message": "Pagalba ir atsiliepimai" }, "helpCenter": { - "message": "Bitwarden pagalbos centras" + "message": "„Bitwarden“ Pagalbos centras" }, "communityForums": { - "message": "Naršyti Bitwarden bendruomenės forumus" + "message": "Naršyti „Bitwarden“ bendruomenės forumus" }, "contactSupport": { - "message": "Susisiekti su Bitwarden palaikymo komanda" + "message": "Susisiekti su „Bitwarden“ palaikymo komanda" }, "sync": { "message": "Sinchronizuoti" @@ -211,7 +235,7 @@ "message": "Sinchronizuoti saugyklą dabar" }, "lastSync": { - "message": "Sinchronizuota:" + "message": "Paskutinis sinchronizavimas:" }, "passGen": { "message": "Slaptažodžių generatorius" @@ -221,19 +245,19 @@ "description": "Short for 'Password Generator'." }, "passGenInfo": { - "message": "Automatiškai sukurkite patikimus, unikalius slaptažodžius." + "message": "Automatiškai generuokite stiprius, unikalius prisijungimo slaptažodžius." }, "bitWebVault": { "message": "„Bitwarden“ žiniatinklio saugykla" }, "importItems": { - "message": "Importuoti duomenis" + "message": "Importuoti elementus" }, "select": { "message": "Pasirinkti" }, "generatePassword": { - "message": "Kurti slaptažodį" + "message": "Sugeneruoti slaptažodį" }, "regeneratePassword": { "message": "Generuoti slaptažodį iš naujo" @@ -244,6 +268,9 @@ "length": { "message": "Ilgis" }, + "passwordMinLength": { + "message": "Minimalus slaptažodžio ilgis" + }, "uppercase": { "message": "Didžiosiomis (A-Z)" }, @@ -251,7 +278,7 @@ "message": "Mažosiomis (a-z)" }, "numbers": { - "message": "Skaitmuo (0-9)" + "message": "Skaitmenys (0-9)" }, "specialCharacters": { "message": "Specialieji simboliai (!@#$%^&*)" @@ -291,7 +318,7 @@ "message": "Nėra rodytinų elementų." }, "itemInformation": { - "message": "Informacija" + "message": "Elemento informacija" }, "username": { "message": "Vartotojo vardas" @@ -299,6 +326,9 @@ "password": { "message": "Slaptažodis" }, + "totp": { + "message": "Autentifikatoriaus paslaptis" + }, "passphrase": { "message": "Slaptafrazė" }, @@ -338,6 +368,12 @@ "other": { "message": "Kita" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Nustatyk atrakinimo būdą, kad pakeistum saugyklos laiko limito veiksmą." + }, + "unlockMethodNeeded": { + "message": "Nustatykite nustatymuose atrakinimo metodą" + }, "rateExtension": { "message": "Įvertinkite šį plėtinį" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Užrakinti dabar" }, + "lockAll": { + "message": "Užrakinti viską" + }, "immediately": { "message": "Nedelsiant" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Jūsų paskyra sukurta! Galite prisijungti." }, + "youSuccessfullyLoggedIn": { + "message": "Jūs sėkmingai prisijungėte" + }, + "youMayCloseThisWindow": { + "message": "Galite uždaryti šį langą" + }, "masterPassSent": { "message": "Išsiuntėme jums el. laišką su pagrindinio slaptažodžio užuomina." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Nepavyko automatiškai užpildyti pasirinkto elemento šiame puslapyje. Nukopijuokite ir įklijuokite informaciją." }, + "totpCaptureError": { + "message": "Nepavyko nuskaityti QR kodo iš dabartinio tinklalapio" + }, + "totpCaptureSuccess": { + "message": "Pridėtas autentifikatoriaus raktas" + }, + "totpCapture": { + "message": "Nuskaitykite autentifikatoriaus QR kodą iš dabartinio tinklalapio" + }, + "copyTOTP": { + "message": "Kopijuoti Autentifikatoriaus raktą (TOTP)" + }, "loggedOut": { "message": "Atsijungta" }, @@ -504,10 +561,10 @@ "message": "Keisti pagrindinį slaptažodį" }, "changeMasterPasswordConfirmation": { - "message": "Pagrindinį slaptažodį galite pakeisti bitwarden.com žiniatinklio saugykloje. Ar norite dabar apsilankyti svetainėje?" + "message": "Pagrindinį slaptažodį galite pakeisti „bitwarden.com“ žiniatinklio saugykloje. Ar norite dabar apsilankyti svetainėje?" }, "twoStepLoginConfirmation": { - "message": "Prisijungus dviem veiksmais, jūsų paskyra tampa saugesnė, reikalaujant patvirtinti prisijungimą naudojant kitą įrenginį, pvz., Saugos raktą, autentifikavimo programą, SMS, telefono skambutį ar el. Paštą. Dviejų žingsnių prisijungimą galima įjungti „bitwarden.com“ interneto saugykloje. Ar norite dabar apsilankyti svetainėje?" + "message": "Prisijungus dviem veiksmais, jūsų paskyra tampa saugesnė, reikalaujant patvirtinti prisijungimą naudojant kitą įrenginį, pvz., saugos raktą, autentifikavimo programėlę, SMS, telefono skambutį ar el. paštą. Dviejų žingsnių prisijungimą galima įjungti „bitwarden.com“ interneto saugykloje. Ar norite dabar apsilankyti svetainėje?" }, "editedFolder": { "message": "Katalogas atnaujintas" @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Prisijungimo pridėjimo pranešimas automatiškai Jūs paragina išsaugoti naujus prisijungimus Jūsų saugykloje, kuomet prisijungiate pirmą kartą." }, + "addLoginNotificationDescAlt": { + "message": "Paprašykite pridėti elementą, jei jo nerasta Jūsų saugykloje. Taikoma visoms prisijungusioms paskyroms." + }, "showCardsCurrentTab": { "message": "Rodyti korteles skirtuko puslapyje" }, @@ -613,7 +673,7 @@ "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "notificationAddDesc": { - "message": "Ar Bitwarden turėtų įsiminti šį slaptažodį už tave?" + "message": "Ar „Bitwarden“ turėtų įsiminti šį slaptažodį už Jus?" }, "notificationAddSave": { "message": "Išsaugoti" @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Paprašyti atnaujinti prisijungimo slaptažodį, kai pakeitimas aptiktas svetainėje." }, + "changedPasswordNotificationDescAlt": { + "message": "Paprašykite atnaujinti prisijungimo slaptažodį, kai svetainėje aptinkamas pakeitimas. Taikoma visoms prisijungusioms paskyroms." + }, + "enableUsePasskeys": { + "message": "Paprašykite išsaugoti ir naudoti prieigos raktus" + }, + "usePasskeysDesc": { + "message": "Paprašykite išsaugoti naujus prieigos raktus arba prisijungti naudodant saugykloje saugomus prieigos raktus. Taikoma visoms prisijungusioms paskyroms." + }, "notificationChangeDesc": { - "message": "Ar nori atnaujinti šį slaptažodį Bitwarden?" + "message": "Ar nori atnaujinti šį slaptažodį „Bitwarden“ programėlėje?" }, "notificationChangeSave": { "message": "Atnaujinti" }, + "notificationUnlockDesc": { + "message": "Atrakinkite savo „Bitwarden“ saugyklą, kad užbaigtumėte automatinio užpildymo užklausą." + }, + "notificationUnlock": { + "message": "Atrakinti" + }, "enableContextMenuItem": { "message": "Rodyti kontekstinio meniu pasririnkimus" }, "contextMenuItemDesc": { "message": "Naudokite antrinį paspaudimą, kad patekti į svetainės slaptažodžio generavimo ir prisijungimo atitikimo parinktis. " }, + "contextMenuItemDescAlt": { + "message": "Naudokite antrinį paspaudimą, kad pasiektumėte slaptažodžio generavimą ir atitinkančius svetainės prisijungimus. Taikoma visoms prisijungusioms paskyroms." + }, "defaultUriMatchDetection": { "message": "Numatytojo URI atitikimo aptikimas", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Pakeisti programos spalvos temą" }, + "themeDescAlt": { + "message": "Pakeiskite programėlės spalvų temą. Taikoma visoms prisijungusioms paskyroms." + }, "dark": { "message": "Tamsi", "description": "Dark color" @@ -681,7 +762,7 @@ "message": "Šis duomenų exportavimas užšifruoja jūsų duomenis naudodamas jūsų prieigos kodų raktu. Jei jūs kada nuspręsite pakeisti prieigos kodų raktą, jūs turėtumėte per naują eksportuoti duomenis, nes kitaip, jūs negalėsite iššifruoti išeksportuotų duomenų." }, "encExportAccountWarningDesc": { - "message": "Prieigos kodų raktai yra unikalūs kiekvienai Bitwarden vartotojo paskyrai, taigi jums nepavyktų importuoti užkoduotų eksportuotų duomenų į kitą prieigą." + "message": "Paskyros šifravimo raktai yra unikalūs kiekvienai „Bitwarden“ vartotojo paskyrai, todėl negalite importuoti užšifruoto eksportavimo į kitą paskyrą." }, "exportMasterPassword": { "message": "Įveskite pagrindinį slaptažodį norint išsinešti saugyklos duomenis." @@ -693,7 +774,7 @@ "message": "Sužinoti apie organizacijas" }, "learnOrgConfirmation": { - "message": "Bitwarden leidžia jums dalintis savo saugyklos elementais su kitais vartotojais organizacijoje. Ar jūs norėtumėte apsilankyti bitwarden.com puslapyje, kad sužinoti daugiau?" + "message": "„Bitwarden“ leidžia dalytis saugyklos elementais su kitais naudojantis organizacija. Ar norėtumėte apsilankyti „bitwarden.com“ svetainėje ir sužinoti daugiau?" }, "moveToOrganization": { "message": "Perkelti į organizaciją" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Funkcija neprieinama" }, - "updateKey": { - "message": "Negali naudotis šia funkcija, kol neatnaujinsi šifravimo raktą." + "encryptionKeyMigrationRequired": { + "message": "Reikalinga šifravimo rakto migracija. Prisijunkite per žiniatinklio saugyklą, kad atnaujintumėte šifravimo raktą." }, "premiumMembership": { "message": "Premium narystė" @@ -772,7 +853,7 @@ "message": "Tvarkyti narystę" }, "premiumManageAlert": { - "message": "Galite tvarkyti savo narystę internete per bitwarden.com. Ar norite aplankyti šį puslapį dabar?" + "message": "Savo narystę galite tvarkyti „bitwarden.com“ žiniatinklio saugykloje. Ar norite apsilankyti svetainėje dabar?" }, "premiumRefresh": { "message": "Atnaujinti narystę" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB užšifruotos vietos diske bylų prisegimams." }, - "ppremiumSignUpTwoStep": { - "message": "Papildomos dviejų žingsių prisijungimo opcijos, tokios kaip YubiKey, FIDO U2F ir Duo." + "premiumSignUpTwoStepOptions": { + "message": "Patentuotos dviejų žingsnių prisijungimo parinktys, tokios kaip YubiKey ir Duo." }, "ppremiumSignUpReports": { "message": "Slaptažodžio higiena, prieigos sveikata ir duomenų nutekinimo ataskaitos, kad tavo saugyklas būtų saugus." @@ -805,13 +886,13 @@ "message": "Įsigyti Premium" }, "premiumPurchaseAlert": { - "message": "Gali įsigyti Premium narystę bitwarden.com interneto saugykloje. Ar nori aplankyti svetainėje dabar?" + "message": "Galite įsigyti „Premium“ narystę „bitwarden.com“ žiniatinklio saugykloje. Ar norite apsilankyti svetainėje dabar?" }, "premiumCurrentMember": { "message": "Tu esi Premium narys!" }, "premiumCurrentMemberThanks": { - "message": "Dėkojame, kad remiate Bitwarden." + "message": "Dėkojame, kad palaikote „Bitwarden“." }, "premiumPrice": { "message": "Visa tai tik už $PRICE$ / metus!", @@ -940,7 +1021,7 @@ "message": "Savarankiškai sukurta aplinka" }, "selfHostedEnvironmentFooter": { - "message": "Nurodyk pagrindinį URL adresą savo patalpose esančio Bitwarden diegimo." + "message": "Nurodykite vietinio priglobto „Bitwarden“ diegimo bazinį URL." }, "customEnvironment": { "message": "Individualizuota aplinka" @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Aplinkos URL adresai išsaugoti" }, + "showAutoFillMenuOnFormFields": { + "message": "Rodyti automatinio pildymo meniu formos laukeliuose", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Taikoma visoms prisijungusioms paskyroms." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Išjunkite naršyklėje integruotus slaptažodžių tvarkyklės nustatymus, kad išvengtumėte konfliktų." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Redaguoti naršyklės nustatymus." + }, + "autofillOverlayVisibilityOff": { + "message": "Išjungta", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Kai pasirinktas laukelis (fokusuotas)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Kai pasirinkta automatinio užpildymo piktograma", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Automatiškai užpildyti užsikrovus puslapiui" }, @@ -976,28 +1082,28 @@ "message": "Jei aptikta prisijungimo forma, automatiškai užpildyti, kai kraunamas tinklalapis." }, "experimentalFeature": { - "message": "Compromised or untrusted websites can exploit auto-fill on page load." + "message": "Pažeistos arba nepatikimos svetainės gali išnaudoti automatinį užpildymą įkeliant puslapį." }, "learnMoreAboutAutofill": { "message": "Sužinokite daugiau apie automatinį užpildymą" }, "defaultAutoFillOnPageLoad": { - "message": "Default autofill setting for login items" + "message": "Numatytasis automatinio užpildymo nustatymas prisijungimo elementams" }, "defaultAutoFillOnPageLoadDesc": { - "message": "You can turn off auto-fill on page load for individual login items from the item's Edit view." + "message": "Galite išjungti automatinį pildymą įkeliant puslapį atskiriems prisijungimo elementams, elemento redagavimo rodinyje." }, "itemAutoFillOnPageLoad": { - "message": "Auto-fill on page load (if set up in Options)" + "message": "Automatinis pildymas įkeliant puslapį (jei nustatyta Parinktyse)" }, "autoFillOnPageLoadUseDefault": { "message": "Naudoti numatytuosius nustatymus" }, "autoFillOnPageLoadYes": { - "message": "Auto-fill on page load" + "message": "Automatinis užpildymas įkeliant puslapį" }, "autoFillOnPageLoadNo": { - "message": "Do not auto-fill on page load" + "message": "Nepildyti automatiškai įkeliant puslapį" }, "commandOpenPopup": { "message": "Atidaryti saugyklą naujame lange" @@ -1006,22 +1112,22 @@ "message": "Atidaryti saugyklą šoninėje juostoje" }, "commandAutofillDesc": { - "message": "Auto-fill the last used login for the current website" + "message": "Automatiškai užpildykite paskutinį naudotą dabartinės svetainės prisijungimą" }, "commandGeneratePasswordDesc": { - "message": "Generate and copy a new random password to the clipboard" + "message": "Sugeneruokite ir nukopijuokite naują atsitiktinį slaptažodį į iškarpinę" }, "commandLockVaultDesc": { "message": "Užrakinti saugyklą" }, "privateModeWarning": { - "message": "Private mode support is experimental and some features are limited." + "message": "Privataus režimo palaikymas yra eksperimentinis, o kai kurios funkcijos yra ribotos." }, "customFields": { - "message": "Custom fields" + "message": "Pasirinktiniai laukai" }, "copyValue": { - "message": "Copy value" + "message": "Kopijuoti vertę" }, "value": { "message": "Reikšmė" @@ -1030,7 +1136,7 @@ "message": "Naujas pasirinktis laukelis" }, "dragToSort": { - "message": "Drag to sort" + "message": "Rūšiuok, kad surūšiuotum" }, "cfTypeText": { "message": "Tekstas" @@ -1050,22 +1156,25 @@ "description": "This describes a value that is 'linked' (tied) to another value." }, "popup2faCloseMessage": { - "message": "Clicking outside the popup window to check your email for your verification code will cause this popup to close. Do you want to open this popup in a new window so that it does not close?" + "message": "Paspaudę už iššokančio lango, kad patikrintum, ar el. paštu gausi patvirtinimo kodą, uždarys šį iššokantį langą. Ar nori atidaryti šį iššokantį langą naujame lange, kad jis neužsidarytų?" }, "popupU2fCloseMessage": { - "message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?" + "message": "Ši naršyklė negali apdoroti U2F prašymų šiame iššokančiame lange. Ar nori atidaryti šį iššokantį langą naujame lange, kad galėtum prisijungti naudodamas (-a) U2F?" }, "enableFavicon": { "message": "Rodyti tinklalapių ikonėles" }, "faviconDesc": { - "message": "Show a recognizable image next to each login." + "message": "Rodyti atpažįstamą vaizdą šalia kiekvieno prisijungimo." + }, + "faviconDescAlt": { + "message": "Rodyti atpažįstamą vaizdą šalia kiekvieno prisijungimo. Taikoma visoms prisijungusioms paskyroms." }, "enableBadgeCounter": { - "message": "Show badge counter" + "message": "Rodyti ženkliukų skaitiklį" }, "badgeCounterDesc": { - "message": "Indicate how many logins you have for the current web page." + "message": "Nurodoma, kiek prisijungimų turi dabartiniame žiniatinklio puslapyje." }, "cardholderName": { "message": "Mokėjimo kortelės savininko vardas" @@ -1143,7 +1252,7 @@ "message": "Dr" }, "mx": { - "message": "Mx" + "message": "Neutralinis (-i)" }, "firstName": { "message": "Vardas" @@ -1267,7 +1376,7 @@ } }, "passwordSafe": { - "message": "This password was not found in any known data breaches. It should be safe to use." + "message": "Šis slaptažodis nebuvo rastas per jokius žinomus duomenų pažeidimus. Jis turėtų būti saugus naudoti." }, "baseDomain": { "message": "Bazinis domenas", @@ -1288,7 +1397,7 @@ "message": "Prasideda" }, "regEx": { - "message": "Regular expression", + "message": "Reguliari išraiška", "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { @@ -1296,18 +1405,18 @@ "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { - "message": "Default match detection", + "message": "Numatytasis atitikties aptikimas", "description": "Default URI match detection for auto-fill." }, "toggleOptions": { "message": "Perjungti opcijas" }, "toggleCurrentUris": { - "message": "Toggle current URIs", + "message": "Perjunkite dabartinius URI", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { - "message": "Current URI", + "message": "Dabartinis URI", "description": "The URI of one of the current open tabs in the browser." }, "organization": { @@ -1321,7 +1430,7 @@ "message": "Visi elementai" }, "noPasswordsInList": { - "message": "There are no passwords to list." + "message": "Slaptažodžių sąraše nėra." }, "remove": { "message": "Pašalinti" @@ -1342,13 +1451,13 @@ "description": "ex. Date this password was updated" }, "neverLockWarning": { - "message": "Are you sure you want to use the \"Never\" option? Setting your lock options to \"Never\" stores your vault's encryption key on your device. If you use this option you should ensure that you keep your device properly protected." + "message": "Ar tikrai norite naudoti parinktį „Niekada“? Nustačius užrakto parinktis į „Niekada“, saugyklos šifravimo raktas išsaugomas įrenginyje. Jei naudojate šią parinktį, turėtumėte užtikrinti, kad jūsų įrenginys būtų tinkamai apsaugotas." }, "noOrganizationsList": { - "message": "You do not belong to any organizations. Organizations allow you to securely share items with other users." + "message": "Jūs nepriklausote jokiai organizacijai. Organizacijos leidžia Jums saugiai bendrinti elementus su kitais vartotojais." }, "noCollectionsInList": { - "message": "There are no collections to list." + "message": "Kolekcijų sąraše nėra." }, "ownership": { "message": "Nuosavybė" @@ -1372,7 +1481,7 @@ "message": "Silpnas pagrindinis slaptažodis" }, "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": "Jūsų pasirinktas pagrindinis slaptažodis yra silpnas. Turėtumėte naudoti stiprų pagrindinį slaptažodį (arba slaptafrazę), kad tinkamai apsaugotumėte savo „Bitwarden“ paskyrą. Ar tikrai norite naudoti šį pagrindinį slaptažodį?" }, "pin": { "message": "PIN", @@ -1390,17 +1499,20 @@ "invalidPin": { "message": "Neteisingas PIN kodas." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Per daug netinkamų PIN kodo įvedimo bandymų. Atsijungima." + }, "unlockWithBiometrics": { "message": "Atrakinti naudojant biometrinius duomenis" }, "awaitDesktop": { - "message": "Awaiting confirmation from desktop" + "message": "Laukiama patvirtinimo iš darbalaukio" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden desktop application to set up biometrics for browser." + "message": "Patvirtinkite naudodami biometrinius duomenis „Bitwarden“ darbalaukio programoje, kad nustatytumėte naršyklės biometrinius duomenis." }, "lockWithMasterPassOnRestart": { - "message": "Lock with master password on browser restart" + "message": "Užrakinkite pagrindiniu slaptažodžiu paleidus naršyklę iš naujo" }, "selectOneCollection": { "message": "Turite pasirinkti bent vieną kategoriją." @@ -1412,10 +1524,10 @@ "message": "Klonuoti" }, "passwordGeneratorPolicyInEffect": { - "message": "One or more organization policies are affecting your generator settings." + "message": "Viena ar daugiau organizacijos politikų turi įtakos Jūsų generatoriaus nustatymams." }, "vaultTimeoutAction": { - "message": "Vault timeout action" + "message": "Vault skirtojo laiko veiksmas" }, "lock": { "message": "Užrakinti", @@ -1440,38 +1552,35 @@ "restoreItem": { "message": "Atkurti elementą" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Elementas atkurtas" }, "vaultTimeoutLogOutConfirmation": { - "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" + "message": "Atsijungus bus pašalinta visa Jūsų prieiga prie saugyklos, o pasibaigus skirtajam laikotarpiui bus reikalinga autentifikacija internetu. Ar tikrai norite naudoti šį nustatymą?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout action confirmation" + "message": "Laiko pabaigos veiksmo patvirtinimas" }, "autoFillAndSave": { "message": "Automatiškai užpildyti ir išsaugoti" }, "autoFillSuccessAndSavedUri": { - "message": "Item auto-filled and URI saved" + "message": "Elementas automatiškai užpildytas ir URI išsaugotas" }, "autoFillSuccess": { - "message": "Item auto-filled " + "message": "Elementas užpildytas automatiškai " }, "insecurePageWarning": { - "message": "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." + "message": "Įspėjimas: Tai – neapsaugotas HTTP puslapis, todėl bet kokią pateiktą informaciją gali matyti ir keisti kiti asmenys. Šis prisijungimas iš pradžių buvo išsaugotas saugiame (HTTPS) puslapyje." }, "insecurePageWarningFillPrompt": { - "message": "Do you still wish to fill this login?" + "message": "Ar vis tiek norite užpildyti šį prisijungimą?" }, "autofillIframeWarning": { - "message": "The form is hosted by a different domain than the URI of your saved login. Choose OK to auto-fill anyway, or Cancel to stop." + "message": "Formą priglobia kitas domenas nei išsaugoto prisijungimo URI. Pasirinkite „Gerai“, kad vis tiek pildytumėte automatiškai arba „Atšaukti“, kad sustabdytumėte." }, "autofillIframeWarningTip": { - "message": "To prevent this warning in the future, save this URI, $HOSTNAME$, to your Bitwarden login item for this site.", + "message": "Norėdami išvengti šio įspėjimo ateityje išsaugokite šį URI $HOSTNAME$, Jūsų „Bitwarden“, šios svetainės, prisijungimo elemente.", "placeholders": { "hostname": { "content": "$1", @@ -1483,19 +1592,19 @@ "message": "Pagrindinio slaptažodžio nustatymas" }, "currentMasterPass": { - "message": "Current master password" + "message": "Dabartinis pagrindinis slaptažodis" }, "newMasterPass": { - "message": "New master password" + "message": "Naujas pagrindinis slaptažodis" }, "confirmNewMasterPass": { - "message": "Confirm new master password" + "message": "Patvirtinti naują pagrindinį slaptažodį" }, "masterPasswordPolicyInEffect": { - "message": "One or more organization policies require your master password to meet the following requirements:" + "message": "Viena ar daugiau organizacijos politikos reikalauja, kad tavo pagrindinis slaptažodis atitiktų šiuos reikalavimus:" }, "policyInEffectMinComplexity": { - "message": "Minimum complexity score of $SCORE$", + "message": "Minimalus sudėtingumo balas $SCORE$", "placeholders": { "score": { "content": "$1", @@ -1531,13 +1640,13 @@ } }, "masterPasswordPolicyRequirementsNotMet": { - "message": "Your new master password does not meet the policy requirements." + "message": "Tavo naujasis pagrindinis slaptažodis neatitinka politikos reikalavimų." }, "acceptPolicies": { - "message": "By checking this box you agree to the following:" + "message": "Pažymėdami šį laukelį, sutinkate su šiais dalykais:" }, "acceptPoliciesRequired": { - "message": "Terms of Service and Privacy Policy have not been acknowledged." + "message": "Paslaugų teikimo sąlygos ir privatumo politika nebuvo pripažinti." }, "termsOfService": { "message": "Paslaugų teikimo paslaugos" @@ -1546,43 +1655,43 @@ "message": "Privatumo politika" }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "Jūsų slaptažodžio užuomina negali būti tokia pati kaip Jūsų slaptažodis." }, "ok": { "message": "Gerai" }, "desktopSyncVerificationTitle": { - "message": "Desktop sync verification" + "message": "Darbalaukio sinchronizavimo verifikavimas" }, "desktopIntegrationVerificationText": { - "message": "Please verify that the desktop application shows this fingerprint: " + "message": "Patikrink, ar darbalaukio programoje rodomas šis pirštų atspaudas: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not set up" + "message": "Naršyklės integracija nėra nustatyta" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." + "message": "Naršyklės integravimas nenustatytas Bitwarden darbalaukio programoje. Nustatykite jį darbalaukio programos nustatymuose." }, "startDesktopTitle": { - "message": "Start the Bitwarden desktop application" + "message": "Paleiskite Bitwarden darbalaukio programą" }, "startDesktopDesc": { - "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." + "message": "Reikia paleisti Bitwarden darbalaukio programą prieš naudojant atrakinimą biometriniais duomenimis." }, "errorEnableBiometricTitle": { - "message": "Unable to set up biometrics" + "message": "Nepavyko nustatyti biometrinių duomenų" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "Darbalaukio programa atšaukė veiksmą" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "Darbalaukio programa panaikino saugų ryšio kanalą. Pabandykite pakartoti šią operaciją" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Darbalaukio ryšys nutrauktas" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "Darbalaukio programa yra prisijungusi prie kitos paskyros. Įsitikinkite, kad abi programos yra prisijungusios prie tos pačios paskyros." }, "nativeMessagingWrongUserTitle": { "message": "Paskyros neatitikimas" @@ -1591,7 +1700,7 @@ "message": "Trūksta biometrinių duomenų nustatymų" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be set up in the settings first." + "message": "Pirma reikia nustatymuose nustatyti darbalaukio biometrinius duomenys, prieš juos naudojant naršyklėje." }, "biometricsNotSupportedTitle": { "message": "Biometrika negali būti naudojama" @@ -1599,36 +1708,48 @@ "biometricsNotSupportedDesc": { "message": "Šiame įrenginyje biometrikos negalima naudoti." }, + "biometricsFailedTitle": { + "message": "Biometrika nepavyko" + }, + "biometricsFailedDesc": { + "message": "Biometriniai duomenys negali būti užpildyti, apsvarstyk galimybę naudoti pagrindinį slaptažodį arba atsijungti. Jei tai tęsiasi, kreipkitės į Bitwarden pagalbą." + }, "nativeMessaginPermissionErrorTitle": { "message": "Nesuteiktos teisės" }, "nativeMessaginPermissionErrorDesc": { - "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + "message": "Negalime pateikti biometrinių duomenų naršyklės plėtinyje be leidimo susisiekti su Bitwarden darbalaukio programa. Bandykite dar kartą." }, "nativeMessaginPermissionSidebarTitle": { - "message": "Permission request error" + "message": "Teisių užklausos klaida" }, "nativeMessaginPermissionSidebarDesc": { - "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + "message": "Šio veiksmo negalima atlikti šoninėje juostoje, pabandykite dar kartą atlikti veiksmą iššokančiajame lange." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." + "message": "Dėl įmonės politikos Jums draudžiama saugoti elementus į savo asmeninę saugyklą. Pakeiskite nuosavybės parinktį į organizaciją ir pasirinkite iš galimų rinkinių." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Organizacijos politika turi įtakos Jūsų nuosavybės pasirinkimo galimybėms." + }, + "personalOwnershipPolicyInEffectImports": { + "message": "Organizacijos politika blokavo elementų importavimą į Jūsų individualią saugyklą." }, "excludedDomains": { - "message": "Excluded domains" + "message": "Išskirti domenai" }, "excludedDomainsDesc": { - "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + "message": "„Bitwarden“ neprašys išsaugoti šių domenų prisijungimo duomenų. Turite atnaujinti puslapį, kad pokyčiai pradėtų galioti." + }, + "excludedDomainsDescAlt": { + "message": "„Bitwarden“ neprašys išsaugoti prisijungimo detalių šiems domenams, visose prisijungusiose paskyrose. Turite atnaujinti puslapį, kad pokyčiai pradėtų galioti." }, "excludedDomainsInvalidDomain": { - "message": "$DOMAIN$ is not a valid domain", + "message": "$DOMAIN$ yra klaidingas domenas", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1637,11 +1758,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "searchSends": { - "message": "Search Sends", + "message": "Ieškoti „Sends“", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "addSend": { - "message": "Add Send", + "message": "Pridėti „Send“", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTypeText": { @@ -1699,36 +1820,36 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deleteSendConfirmation": { - "message": "Are you sure you want to delete this Send?", + "message": "Ar tikrai norite ištrinti šį „Send“?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { - "message": "Edit Send", + "message": "Redaguoti „Send“", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTypeHeader": { - "message": "What type of Send is this?", + "message": "Kokio tai tipo „Send“?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNameDesc": { - "message": "A friendly name to describe this Send.", + "message": "Draugiškas pavadinimas, apibūdinantis šį „Send“.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendFileDesc": { "message": "Failas, kurį norite siųsti." }, "deletionDate": { - "message": "Deletion date" + "message": "Ištrynimo data" }, "deletionDateDesc": { - "message": "The Send will be permanently deleted on the specified date and time.", + "message": "Nurodytos datos ir laiko metu „Send“ bus bus ištrinta visam laikui.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { "message": "Galiojimo data" }, "expirationDateDesc": { - "message": "If set, access to this Send will expire on the specified date and time.", + "message": "Jei nustatyta, prieiga prie šio „Send“ nustos galioti nurodyta data ir laikui.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "oneDay": { @@ -1744,36 +1865,36 @@ } }, "custom": { - "message": "Custom" + "message": "Pasirinktinis" }, "maximumAccessCount": { "message": "Maksimalus prisijungimų skaičius" }, "maximumAccessCountDesc": { - "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "message": "Jei nustatyta, vartotojai nebegalės pasiekti šio „Send“, kai bus pasiektas maksimalus prisijungimų skaičius.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendPasswordDesc": { - "message": "Optionally require a password for users to access this Send.", + "message": "Pasirinktinai reikalauti slaptažodžio, kad vartotojai galėtų pasiekti šį „Send“.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNotesDesc": { - "message": "Private notes about this Send.", + "message": "Asmeninės pastabos apie šį „Send“.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Deactivate this Send so that no one can access it.", + "message": "Išjunkite šį „Send“, kad niekas negalėtų jo pasiekti.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { - "message": "Copy this Send's link to clipboard upon save.", + "message": "Išsaugant šį „Send“ nukopijuokite nuorodą į mainų sritį.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTextDesc": { "message": "Tekstas, kurį norite siųsti." }, "sendHideText": { - "message": "Hide this Send's text by default.", + "message": "Pagal numatytuosius nustatymus slėpti šį „Send“ tekstą.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { @@ -1791,7 +1912,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { - "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "message": "Dėl įmonės politikos galite ištrinti tik esamą „Send“.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { @@ -1803,19 +1924,19 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { - "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + "message": "Norėdami pasirinkti failą, atidarykite plėtinį šoninėje juostoje (jei įmanoma) arba iššokkite į naują langą spustelėdami šią reklamjuostę." }, "sendFirefoxFileWarning": { - "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + "message": "Norėdami pasirinkti failą, naudojantis FireFox, atidarykite plėtinį šoninėje juostoje (jei įmanoma) arba iššokkite į naują langą spustelėdami šią reklamjuostę." }, "sendSafariFileWarning": { - "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + "message": "Norėdami pasirinkti failą naudodami „Safari“, iššokkite į naują langą spustelėdami šią reklamjuostę." }, "sendFileCalloutHeader": { "message": "Prieš pradedant" }, "sendFirefoxCustomDatePopoutMessage1": { - "message": "To use a calendar style date picker", + "message": "Norint pasinaudoti kalendoriaus stiliaus datos pasirinkikliu", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" }, "sendFirefoxCustomDatePopoutMessage2": { @@ -1827,25 +1948,25 @@ "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" }, "expirationDateIsInvalid": { - "message": "The expiration date provided is not valid." + "message": "Nurodytas galiojimo laikas negalioja." }, "deletionDateIsInvalid": { - "message": "The deletion date provided is not valid." + "message": "Nurodyta ištrynimo data negalioja." }, "expirationDateAndTimeRequired": { - "message": "An expiration date and time are required." + "message": "Ištrynimo data ir laikas yra privalomi." }, "deletionDateAndTimeRequired": { "message": "Ištrynimo data ir laikas yra privalomi." }, "dateParsingError": { - "message": "There was an error saving your deletion and expiration dates." + "message": "Išsaugant jūsų ištrynimo ir galiojimo datas įvyko klaida." }, "hideEmail": { "message": "Slėpti mano el. pašto adresą nuo gavėjų." }, "sendOptionsPolicyInEffect": { - "message": "One or more organization policies are affecting your Send options." + "message": "Viena ar daugiau organizacijos politikų turi įtakos Jūsų „Send“ nustatymams." }, "passwordPrompt": { "message": "Iš naujo prašoma pagrindinio slaptažodžio" @@ -1860,7 +1981,7 @@ "message": "Reikalingas elektroninio pašto patvirtinimas" }, "emailVerificationRequiredDesc": { - "message": "You must verify your email to use this feature. You can verify your email in the web vault." + "message": "Turite patvirtinti savo el. paštą, kad galėtumėte naudotis šia funkcija. Savo el. pašto adresą galite patvirtinti žiniatinklio saugykloje." }, "updatedMasterPassword": { "message": "Naujasis pagrindinis slaptažodis" @@ -1869,31 +1990,44 @@ "message": "Atnaujinti pagrindinį slaptažodį" }, "updateMasterPasswordWarning": { - "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Jūsų pagrindinis slaptažodis neseniai pakeistas Jūsų organizacijos administratorius. Privalote atnaujinti pagrindinį slaptažodį, kad galėtumėte pasiekti saugyklą. Tęsdami būsite atjungtas nuo dabartinės savo sesijos, todėl turėsite vėl prisijungti. Aktyvios sesijos, kituose įrenginiuose, gali išlikti aktyvios iki vienos valandos." }, "updateWeakMasterPasswordWarning": { - "message": "Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Jūsų pagrindinis slaptažodis neatitinka vieno ar kelių organizacijos slaptažodžiui keliamų reikalavimų. Privalote atnaujinti pagrindinį slaptažodį, kad galėtumėte pasiekti saugyklą. Tęsdami būsite atjungtas nuo dabartinės savo sesijos, todėl turėsite vėl prisijungti. Aktyvios sesijos, kituose įrenginiuose, gali išlikti aktyvios iki vienos valandos." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic enrollment" + "message": "Automatinis registravimas" }, "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." + "message": "Ši organizacija turi įmonės politiką, kuri automatiškai įtrauks Jus į slaptažodžio nustatymą iš naujo. Registravimas leis organizacijos administratoriams pakeisti Jūsų pagrindinį slaptažodį." }, "selectFolder": { - "message": "Select folder..." + "message": "Pasirinkti aplankalą..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "Nerasta aplankų.", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Dėl organizacijos leidimų atnaujinimo, Jums reikia nustatyti pagrindinį slaptažodį.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Jūsų organizacija reikalauja Jus nustatyti pagrindinį slaptažodį.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Reikalingas patikrinimas", + "description": "Default title for the user verification dialog." }, "hours": { - "message": "Hours" + "message": "Valandų" }, "minutes": { - "message": "Minutes" + "message": "Minučių" }, "vaultTimeoutPolicyInEffect": { - "message": "Your organization policies have set your maximum allowed vault timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "message": "Jūsų organizacijos politika nustatė Jūsų didžiausią leidžiamą saugyklos laiko limitą į $HOURS$ valandas(-ų) ir $MINUTES$ minutes(-čių).", "placeholders": { "hours": { "content": "$1", @@ -1906,7 +2040,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is $HOURS$ hour(s) and $MINUTES$ minute(s). Your vault timeout action is set to $ACTION$.", + "message": "Jūsų organizacijos politika apriboja Jūsų saugyklos neaktyvumo laiko nustatymus. Maksimalus leidžiamas saugyklos neaktyvumo laikas yra $HOURS$ valanda(-os) ir $MINUTES$ minutė(s). Jūsų saugyklos neaktyvumo laiko veiksmas yra nustatytas $ACTION$.", "placeholders": { "hours": { "content": "$1", @@ -1923,7 +2057,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "Your organization policies have set your vault timeout action to $ACTION$.", + "message": "Jūsų organizacijos politika nustatė Jūsų saugyklos neaktyvumo veiksmą į $ACTION$.", "placeholders": { "action": { "content": "$1", @@ -1932,22 +2066,22 @@ } }, "vaultTimeoutTooLarge": { - "message": "Your vault timeout exceeds the restrictions set by your organization." + "message": "Jūsų saugyklos neaktyvumo laikas viršija Jūsų organizacijos nustatytus apribojimus." }, "vaultExportDisabled": { - "message": "Vault export unavailable" + "message": "Saugyklos eksportavimas nepasiekiamas" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your individual vault." + "message": "Viena ar daugiau organizacijos strategijų neleidžia Jums eksportuoti asmeninės saugyklos." }, "copyCustomFieldNameInvalidElement": { - "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + "message": "Nepavyko nustatyti tinkamo formos elemento. Vietoj to pabandykite patikrinti HTML." }, "copyCustomFieldNameNotUnique": { - "message": "No unique identifier found." + "message": "Unikalus identifikatorius nerastas." }, "convertOrganizationEncryptionDesc": { - "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "message": "$ORGANIZATION$ naudoja SSO su savarankiškai sukurtu raktų serveriu. Pagrindinis slaptažodis nebėra reikalingas norint šios organizacijos nariams prisijungti.", "placeholders": { "organization": { "content": "$1", @@ -1956,7 +2090,7 @@ } }, "leaveOrganization": { - "message": "Leave organization" + "message": "Palikti organizaciją" }, "removeMasterPassword": { "message": "Ištrinti pagrindinį slaptažodį" @@ -1965,22 +2099,22 @@ "message": "Pagrindinis slaptažodis pašalintas" }, "leaveOrganizationConfirmation": { - "message": "Are you sure you want to leave this organization?" + "message": "Ar tikrai norite palikti šią organizaciją?" }, "leftOrganization": { - "message": "You have left the organization." + "message": "Jūs palikote organizaciją." }, "toggleCharacterCount": { - "message": "Toggle character count" + "message": "Perjungti simbolių skaičių" }, "sessionTimeout": { - "message": "Your session has timed out. Please go back and try logging in again." + "message": "Jūsų sesija pasibaigė. Prašome grįžti atgal ir prisijungti iš naujo." }, "exportingPersonalVaultTitle": { - "message": "Exporting individual vault" + "message": "Eksportuojama individuali saugykla" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Bus eksportuoti tik individualūs saugyklos elementai, kurie susiję su $EMAIL$. Organizacijos saugyklos elementai nebus įtraukti. Bus eksportuota tik saugyklos elementų informacija, susiję priedai nebus įtraukti.", "placeholders": { "email": { "content": "$1", @@ -1989,29 +2123,29 @@ } }, "error": { - "message": "Error" + "message": "Klaida" }, "regenerateUsername": { - "message": "Regenerate username" + "message": "Pergeneruoti vartotojo vardą iš naujo" }, "generateUsername": { - "message": "Generate username" + "message": "Generuoti vartotojo vardą" }, "usernameType": { - "message": "Username type" + "message": "Vartotojo prisijungimo vardo tipas" }, "plusAddressedEmail": { - "message": "Plus addressed email", + "message": "Plius adresuotas el. paštas", "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": "Pasinaudokite savo el. pašto teikėjo antrinio adreso galimybėmis." }, "catchallEmail": { - "message": "Catch-all email" + "message": "Viską palaikantis el. paštas" }, "catchallEmailDesc": { - "message": "Use your domain's configured catch-all inbox." + "message": "Naudokite savo domeno sukonfigūruotą viską palaikančią pašto dežutę." }, "random": { "message": "Atsitiktinis" @@ -2020,35 +2154,35 @@ "message": "Atsitiktinis žodis" }, "websiteName": { - "message": "Website name" + "message": "Svetainės pavadinimas" }, "whatWouldYouLikeToGenerate": { "message": "Ką norėtumėte sugeneruoti?" }, "passwordType": { - "message": "Password type" + "message": "Slaptažodžio tipas" }, "service": { - "message": "Service" + "message": "Paslauga" }, "forwardedEmail": { - "message": "Forwarded email alias" + "message": "Persiunčiamas el. pašto slapyvardis" }, "forwardedEmailDesc": { - "message": "Generate an email alias with an external forwarding service." + "message": "Sugeneruoti el. pašto slapyvardį su išorine persiuntimo paslauga." }, "hostname": { - "message": "Hostname", + "message": "Pagrindinio kompiuterio vardas", "description": "Part of a URL." }, "apiAccessToken": { - "message": "API Access Token" + "message": "API Prieigos Raktas" }, "apiKey": { "message": "API raktas" }, "ssoKeyConnectorError": { - "message": "Key connector error: make sure key connector is available and working correctly." + "message": "Rakto jungties klaida: įsitikinkite, kad rakto jungtis yra prieinama ir veikia tinkamai." }, "premiumSubcriptionRequired": { "message": "Reikalingas Premium abonementas" @@ -2057,10 +2191,10 @@ "message": "Organizacija suspenduota." }, "disabledOrganizationFilterError": { - "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Elementai esantys suspenduotose Organizacijose yra neprieinami. Susisiekite su savo Organizacijos savininku." }, "loggingInTo": { - "message": "Logging in to $DOMAIN$", + "message": "Prisijungiama prie $DOMAIN$", "placeholders": { "domain": { "content": "$1", @@ -2069,25 +2203,25 @@ } }, "settingsEdited": { - "message": "Settings have been edited" + "message": "Nustatymai buvo paredaguoti" }, "environmentEditedClick": { "message": "Spauskite čia" }, "environmentEditedReset": { - "message": "to reset to pre-configured settings" + "message": "iš naujo nustatyti iš anksto sukonfigūruotus nustatymus" }, "serverVersion": { - "message": "Server version" + "message": "Serverio versija" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "savarankiškai sukurtas" }, "thirdParty": { "message": "Trečioji šalis" }, "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": "Prisijungta prie trečiosios šalies serverio diegimo $SERVERNAME$. Patikrinkite klaidas naudodami oficialų serverį arba praneškite apie jas trečiosios šalies serveriui.", "placeholders": { "servername": { "content": "$1", @@ -2096,7 +2230,7 @@ } }, "lastSeenOn": { - "message": "last seen on: $DATE$", + "message": "paskutinį kartą matytas: $DATE$", "placeholders": { "date": { "content": "$1", @@ -2126,7 +2260,7 @@ "message": "Prisijungti su įrenginiu turi būti nustatyta Bitwarden aplikacijos nustatymuose. Reikia kito pasirinkimo?" }, "fingerprintPhraseHeader": { - "message": "Fingerprint phrase" + "message": "Pirštų atspaudų frazė" }, "fingerprintMatchInfo": { "message": "Please make sure your vault is unlocked and the Fingerprint phrase matches on the other device." @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { + "loginInitiated": { "message": "Pradėtas prisijungimas" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Kaip automatiškai užpildyti" }, "autofillSelectInfoWithCommand": { - "message": "Pasirink elementą iš šio puslapio arba naudok trumpąjį klavišą: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Įrenginio patvirtinimas reikalingas. Pasirink patvirtinimo būdą toliau:" + }, + "rememberThisDevice": { + "message": "Prisiminti šį įrenginį" + }, + "uncheckIfPublicDevice": { + "message": "Panaikink žymėjimą, jei naudojamas viešasis įrenginys" + }, + "approveFromYourOtherDevice": { + "message": "Patvirtinti iš tavo kito įrenginio" + }, + "requestAdminApproval": { + "message": "Prašyti administratoriaus patvirtinimo" + }, + "approveWithMasterPassword": { + "message": "Patvirtinti su pagrindiniu slaptažodžiu" + }, + "ssoIdentifierRequired": { + "message": "Organizacijos SSO identifikatorius yra reikalingas." + }, "eu": { "message": "ES", "description": "European Union" }, - "us": { - "message": "JAV", - "description": "United States" - }, "accessDenied": { "message": "Prieiga uždrausta. Neturi teisės peržiūrėti šį puslapį." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Rodyti" + }, + "accountSuccessfullyCreated": { + "message": "Paskyra sėkmingai sukurta!" + }, + "adminApprovalRequested": { + "message": "Prašymas administratoriaus patvirtinimas" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Tavo prašymas išsiųstas administratoriui." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Tu būsi praneštas (-a), kai bus patvirtinta." + }, + "troubleLoggingIn": { + "message": "Problemos prisijungiant?" + }, + "loginApproved": { + "message": "Patvirtintas prisijungimas" + }, + "userEmailMissing": { + "message": "Trūksta naudotojo el. pašto" + }, + "deviceTrusted": { + "message": "Patikimas įrenginys" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "Elementai nerasti" + }, + "multiSelectClearAll": { + "message": "Išvalyti viską" + }, + "plusNMore": { + "message": "+$QUANTITY$ daugiau", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submeniu" + }, + "toggleCollapse": { + "message": "Perjungti sutrumpinimą", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Importuoti duomenis į Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Apsaugoti LastPass duomenis ir importuoti į Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Išsaugoti kaip neužšifruotą failą", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importuoti į Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importuojama...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Duomenys sėkmingai importuoti.", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Klaida importuojant. Išsamesnės informacijos patikrink konsolėje.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Importuojant įvyko tinklo klaida.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Domeno slapyvardis" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Elementai su pagrindinio slaptažodžio raginimu negali būti automatiškai užpildyti įkeliant puslapį. Automatinis pildymas, įkeliant puslapį, išjungtas.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Automatinis pildymas įkeliant puslapį nustatytas naudoti numatytąjį nustatymą.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Išjunkite pagrindinio slaptažodžio raginimą, jei norite redaguoti šį lauką", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Pereiti prie turinio" + }, + "bitwardenOverlayButton": { + "message": "„Bitwarden“ automatinio pildymo meniu mygtukas", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Perjungti „Bitwarden“ automatinio pildymo meniu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "„Bitwarden“ automatinio pildymo meniu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Atrakinkite savo paskyrą, kad pamatytumėte atitinkamus prisijungimus", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Atrakinti paskyrą", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Užpildykite prisijungimo duomenis", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Dalinis vartotojo vardas", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Nėra elementų, kuriuos būtų galima parodyti", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Naujas elementas", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Pridėti naują saugyklos elementą", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Galimas „Bitwarden“ automatinio pildymo meniu. Norėdami pasirinkti, paspauskite rodyklės žemyn klavišą.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Įjungti" + }, + "ignore": { + "message": "Ignoruoti" + }, + "importData": { + "message": "Importuoti duomenis", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Importavimo klaida" + }, + "importErrorDesc": { + "message": "Kilo problema su duomenimis, kuriuos bandėte importuoti. Prašome pataisyti klaidas, išvardytas apačioje, esančiam pradiniame faile ir pabandyti iš naujo." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Ištaisykite klaidas ir pabandykite iš naujo." + }, + "description": { + "message": "Aprašymas" + }, + "importSuccess": { + "message": "Duomenys sėkmingai importuoti" + }, + "importSuccessNumberOfItems": { + "message": "Iš viso importuoti $AMOUNT$ elementai.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Bandyti dar kartą" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Šiam veiksmui reikalingas patikrinimas. Norėdamas (-a) tęsti, nustatyk PIN." + }, + "setPin": { + "message": "Nustatyti PIN" + }, + "verifyWithBiometrics": { + "message": "Patikrininti su biometrinius duomenis" + }, + "awaitingConfirmation": { + "message": "Laukiama patvirtinimo" + }, + "couldNotCompleteBiometrics": { + "message": "Nepavyko atlikti biometrinių duomenų." + }, + "needADifferentMethod": { + "message": "Reikia kito metodo?" + }, + "useMasterPassword": { + "message": "Naudoti pagrindinį slaptažodį" + }, + "usePin": { + "message": "Naudoti PIN" + }, + "useBiometrics": { + "message": "Naudoti biometrinius duomenis" + }, + "enterVerificationCodeSentToEmail": { + "message": "Įvesk į el. paštą atsiųstą patikrinimo kodą." + }, + "resendCode": { + "message": "Siųsti kodą dar kartą" + }, + "total": { + "message": "Iš viso" + }, + "importWarning": { + "message": "Jūs importuojate duomenis į $ORGANIZATION$. Jūsų duomenimis gali būti pasidalinta tarp šios organizacijos narių. Ar norite tęsti?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Paleisk DUO ir sek veiksmus, kad baigtum prisijungti." + }, + "duoRequiredForAccount": { + "message": "Tavo paskyrai reikalingas Duo dviejų veiksmų prisijungimas." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Išskleisk plėtinį, kad užbaigtum prisijungimą." + }, + "popoutExtension": { + "message": "Iššokantis plėtinys" + }, + "launchDuo": { + "message": "Paleisti DUO" + }, + "importFormatError": { + "message": "Duomenys neteisingai suformatuoti. Prašome patikrinti savo importuojamą failą ir pabandyti iš naujo." + }, + "importNothingError": { + "message": "Niekas nebuvo importuota." + }, + "importEncKeyError": { + "message": "Kilo klaida iššifruojant eksportuotą failą. Jūsų šifravimo raktas nesutampa su šifravimo raktu, naudotu eksportuoti duomenis." + }, + "invalidFilePassword": { + "message": "Netinkamas failo slaptažodis, prašome naudoti slaptažodį, kurį įvedėte kurdami eksportuojamą failą." + }, + "importDestination": { + "message": "Importavimo paskirties vieta" + }, + "learnAboutImportOptions": { + "message": "Sužinoti apie importavimo parinktis" + }, + "selectImportFolder": { + "message": "Pasirinkti aplankalą" + }, + "selectImportCollection": { + "message": "Pasirinkti rinkinį" + }, + "importTargetHint": { + "message": "Pasirinkite šį pasirinkimą, jei norite, jog importuoto failo turinys, būtų perkeltas į $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Faile yra nepriskirtų elementų." + }, + "selectFormat": { + "message": "Pasirinkti importuojamo failo formatą" + }, + "selectImportFile": { + "message": "Pasirinkti importuojamą failą" + }, + "chooseFile": { + "message": "Pasirinkti failą" + }, + "noFileChosen": { + "message": "Nepasirinktas joks failas" + }, + "orCopyPasteFileContents": { + "message": "arba kopijuokite/įklijuokite importuojamo failo turinį" + }, + "instructionsFor": { + "message": "$NAME$ Instrukcijos", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Patvirtinti saugyklos importavimą" + }, + "confirmVaultImportDesc": { + "message": "Failas yra apsaugotas slaptažodžiu. Norint importuoti duomenis, įveskite failo slaptažodį." + }, + "confirmFilePassword": { + "message": "Patvirtinti failo slaptažodį" + }, + "typePasskey": { + "message": "Prieigos raktas" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Neteisingas slaptažodis" + }, + "incorrectCode": { + "message": "Neteisingas kodas" + }, + "incorrectPin": { + "message": "Neteisingas PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Su LastPass paskyra susietą YubiKey įkišk į kompiuterio USB jungtį, tada paliesk jo mygtuką." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Pasiekiamos paskyros" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Tik kartą" + }, + "alwaysForThisSite": { + "message": "Visada šiam svetainėje" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ pridėta prie neįtraukiamų domenų.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Padaryti Bitwarden savo numatytuoju slaptažodžių tvarkytuvu?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoruojant šią parinktį, gali kilti konfliktų tarp Bitwarden automatinio užpildymo meniu ir naršyklės.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Padaryti Bitwarden savo numatytuoju slaptažodžių tvarkytuvu", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Nepavyksta nustatyti Bitwarden kaip numatytosios slaptažodžių tvarkyklės", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Norėdamas (-a) nustatyti Bitwarden kaip numatytąją slaptažodžių tvarkyklę, turi suteikti Bitwarden naršyklės privatumo leidimus.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Padaryti numatytuoju", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Kredencialai išsaugoti sėkmingai.", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Kredencialai atnaujinti sėkmingai.", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Klaida išsaugant kredencialus. Išsamesnės informacijos patikrink konsolėje.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Pašalinti slaptaraktį" + }, + "passkeyRemoved": { + "message": "Pašalintas slaptaraktis" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/lv/messages.json b/apps/browser/src/_locales/lv/messages.json index 3a13d9872a..c36315d10d 100644 --- a/apps/browser/src/_locales/lv/messages.json +++ b/apps/browser/src/_locales/lv/messages.json @@ -89,10 +89,19 @@ "message": "Ievietot drošības kodu starpliktuvē" }, "autoFill": { - "message": "Automātiskā aizpildīšana" + "message": "Automātiskā aizpilde" + }, + "autoFillLogin": { + "message": "Automātiski aizpildīt pieteikšanos" + }, + "autoFillCard": { + "message": "Automātiski aizpildīt karti" + }, + "autoFillIdentity": { + "message": "Automātiski aizpildīt identitāti" }, "generatePasswordCopied": { - "message": "Veidot paroli (ievietota starpliktuvē)" + "message": "Izveidot paroli (tiks ievietota starpliktuvē)" }, "copyElementIdentifier": { "message": "Pavairot pielāgotā lauka nosaukumu" @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Nav atbilstošu pieteikšanās vienumu" }, + "noCards": { + "message": "Nav karšu" + }, + "noIdentities": { + "message": "Nav identitāšu" + }, + "addLoginMenu": { + "message": "Pievienot pieteikšanās vienumu" + }, + "addCardMenu": { + "message": "Pievienot karti" + }, + "addIdentityMenu": { + "message": "Pievienot identitāti" + }, "unlockVaultMenu": { "message": "Atslēgt glabātavu" }, @@ -140,7 +164,7 @@ "message": "Apstiprināšanas kods" }, "confirmIdentity": { - "message": "Apstiprināt identitāti, lai turpinātu." + "message": "Jāapstiprina identitāte, lai turpinātu." }, "account": { "message": "Konts" @@ -244,6 +268,9 @@ "length": { "message": "Garums" }, + "passwordMinLength": { + "message": "Mazākais pieļaujamais paroles garums" + }, "uppercase": { "message": "Lielie burti (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Parole" }, + "totp": { + "message": "Autentificētāja noslēpums" + }, "passphrase": { "message": "Paroles vārdkopa" }, @@ -338,6 +368,12 @@ "other": { "message": "Cits" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Jāuzstāda atslēgšanas veids, lai mainītu glabātavas noildzes darbību." + }, + "unlockMethodNeeded": { + "message": "Jāuzstāda atslēgšanas veids iestatījumos" + }, "rateExtension": { "message": "Novērtēt paplašinājumu" }, @@ -345,13 +381,13 @@ "message": "Lūgums apsvērt palīdzēt mums ar labu atsauksmi." }, "browserNotSupportClipboard": { - "message": "Tīmekļa pārlūks neatbalsta vienkāršu starpliktuves kopēšanu. Tā vietā tas pašrocīgi jāievieto starpliktuvē." + "message": "Pārlūks neatbalsta vienkāršo ievietošanu starpliktuvē. Tā vietā tas jāievieto starpliktuvē pašrocīgi." }, "verifyIdentity": { "message": "Apstiprināt identitāti" }, "yourVaultIsLocked": { - "message": "Glabātava ir slēgta. Nepieciešams norādīt galveno paroli, lai turpinātu." + "message": "Glabātava ir aizslēgta. Jāapstiprina identitāte, lai turpinātu." }, "unlock": { "message": "Atslēgt" @@ -378,6 +414,9 @@ "lockNow": { "message": "Aizslēgt" }, + "lockAll": { + "message": "Aizslēgt visu" + }, "immediately": { "message": "Nekavējoties" }, @@ -424,7 +463,7 @@ "message": "Drošība" }, "errorOccurred": { - "message": "Radusies kļūda" + "message": "Atgadījās kļūda" }, "emailRequired": { "message": "E-pasta adrese ir nepieciešama." @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Jaunais konts ir izveidots. Tagad vari pieteikties." }, + "youSuccessfullyLoggedIn": { + "message": "Pieteikšanās bija veiksmīga" + }, + "youMayCloseThisWindow": { + "message": "Šo logu var aizvērt" + }, "masterPassSent": { "message": "Mēs nosūtījām galvenās paroles norādi e-pastā." }, @@ -464,7 +509,7 @@ "message": "Nederīgs apstiprinājuma kods" }, "valueCopied": { - "message": "$VALUE$ ievietota starpliktuvē", + "message": "$VALUE$ ir starpliktuvē", "description": "Value has been copied to the clipboard.", "placeholders": { "value": { @@ -476,6 +521,18 @@ "autofillError": { "message": "Neizdevās automātiski aizpildīt izvēlēto vienumu šajā lapā. Tā vietā informācija ir jāievieto starpliktuvē un jāielīmē pašrocīgi." }, + "totpCaptureError": { + "message": "Neizdevās nolasīt kvadrātkodu pašreizējā tīmekļa lapā" + }, + "totpCaptureSuccess": { + "message": "Autentificētāja atslēga ir pievienota" + }, + "totpCapture": { + "message": "Nolasīt autentificētāja kvadrātkodu pašreizējā tīmekļa lapā" + }, + "copyTOTP": { + "message": "Ievietot starpliktuvē autentificētāja atslēgu (TOTP)" + }, "loggedOut": { "message": "Atteicies" }, @@ -504,10 +561,10 @@ "message": "Mainīt galveno paroli" }, "changeMasterPasswordConfirmation": { - "message": "Galveno paroli ir iespējams mainīt bitwarden.com tīmekļa glabātavā. Vai apmeklēt tīmekļa vietni?" + "message": "Galveno paroli ir iespējams mainīt bitwarden.com tīmekļa glabātavā. Vai tagad apmeklēt tīmekļvietni?" }, "twoStepLoginConfirmation": { - "message": "Divpakāpju pieteikšanās padara kontu krietni drošāku, pieprasot apstiprināt pieteikšanos ar tādu citu ierīču vai pakalpojumu starpniecību kā drošības atslēga, autentificētāja lietotne, īsziņa, tālruņa zvans vai e-pasts. Divpakāpju pieteikšanos var iespējot bitwarden.com tīmekļa glabātavā. Vai apmeklēt tīmekļa vietni?" + "message": "Divpakāpju pieteikšanās padara kontu krietni drošāku, pieprasot apstiprināt pieteikšanos ar tādu citu ierīču vai pakalpojumu starpniecību kā drošības atslēga, autentificētāja lietotne, īsziņa, tālruņa zvans vai e-pasts. Divpakāpju pieteikšanos var iespējot bitwarden.com tīmekļa glabātavā. Vai tagad apmeklēt tīmekļvietni?" }, "editedFolder": { "message": "Mape labota" @@ -522,7 +579,7 @@ "message": "Uzsākšanas pamācība" }, "gettingStartedTutorialVideo": { - "message": "Noskaties mūsu uzsākšanas pamācību, lai uzzinātu, kā iegūt vislielāko labumu no pārlūka paplašinājuma." + "message": "Noskaties mūsu uzsākšanas pamācību, lai uzzinātu, kā iegūt vislielāko labumu no pārlūka paplašinājuma!" }, "syncingComplete": { "message": "Sinhronizācija pabeigta" @@ -556,7 +613,7 @@ "message": "Vienums labots" }, "deleteItemConfirmation": { - "message": "Vai tiešām pārvietot vienumu uz atkritni?" + "message": "Vai tiešām pārvietot uz atkritni?" }, "deletedItem": { "message": "Vienums pārvietots uz atkritni" @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Vaicāt pievienot vienumu, ja tāds nav atrodams glabātavā." }, + "addLoginNotificationDescAlt": { + "message": "Vaicāt, vai pievienot vienumu, ja glabātavā tāds nav atrodams. Attiecas uz visiem pieslēgtajiem kontiem." + }, "showCardsCurrentTab": { "message": "Rādīt kartes cilnes lapā" }, @@ -602,14 +662,14 @@ "message": "Rādīt identitātes cilnes pārskatā" }, "showIdentitiesCurrentTabDesc": { - "message": "Attēlot identitātes ciļņu lapā vieglākai aizpildīšanai." + "message": "Attēlot identitātes ciļņu lapā vieglākai aizpildei." }, "clearClipboard": { "message": "Notīrīt starpliktuvi", "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "clearClipboardDesc": { - "message": "Automātiski noņemt kopētās vērtības no starpliktuves.", + "message": "Automātiski noņemt starpliktuvē ievietotās vērtības.", "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "notificationAddDesc": { @@ -622,7 +682,16 @@ "message": "Vaicāt atjaunināt esošu pieteikšanās vienumu" }, "changedPasswordNotificationDesc": { - "message": "Vaicāt atjaunināt pieteikšanās vienuma paroli, ja vietnē ir noteiktas tās izmaiņas." + "message": "Vaicāt atjaunināt pieteikšanās vienuma paroli, ja tīmekļvietnē ir noteiktas tās izmaiņas." + }, + "changedPasswordNotificationDescAlt": { + "message": "Vaicāt, vai atjaunināt pieteikšanās vienuma paroli, kad tīmekļvietnē ir noteikta atšķirība. Attiecas uzvisiem pieslēgtajiem kontiem." + }, + "enableUsePasskeys": { + "message": "Vaicāt, vai saglabāt un izmantot piekļuves atslēgas" + }, + "usePasskeysDesc": { + "message": "Vaicāt, vai saglabāt jaunas piekļuves atslēgas vai pieteikties ar glabātavā esošajām piekļuves atslēgām. Attiecas uz visiem pieslēgtajiem kontiem." }, "notificationChangeDesc": { "message": "Vai atjaunināt šo paroli Bitwarden?" @@ -630,18 +699,27 @@ "notificationChangeSave": { "message": "Jā, atjaunināt" }, + "notificationUnlockDesc": { + "message": "Jāatslēdz Bitwarden glabātava, lai pabeigtu automātiskās aizpildes pieprasījumu." + }, + "notificationUnlock": { + "message": "Atslēgt" + }, "enableContextMenuItem": { "message": "Rādīt konteksta izvēlnes iespējas" }, "contextMenuItemDesc": { - "message": "Izmantot orējo klikšķi, lai piekļūtu paroļu veidošanai un vietnei atbilstošajiem pieteikšanās vienumiem. " + "message": "Izmantot otrējo klikšķi, lai piekļūtu paroļu veidošanai un tīmekļvietnei atbilstošajiem pieteikšanās vienumiem." + }, + "contextMenuItemDescAlt": { + "message": "Izmantot otrējo klikšķi, lai piekļūtu paroļu veidošanai un tīmekļvietnei atbilstošajiem pieteikšanās vienumiem. Attiecas uz visiem pieslēgtajiem kontiem." }, "defaultUriMatchDetection": { "message": "Noklusējuma URI atbilstības noteikšana", "description": "Default URI match detection for auto-fill." }, "defaultUriMatchDetectionDesc": { - "message": "Izvēlēties noklusējuma veidu, kādā tiek apstrādāta pieteikšan'ās vienumu URI atbilstības noteikšana, kad tiek veiktas tādas darbības kā automātiska aizpildīšana." + "message": "Izvēlēties noklusējuma veidu, kādā tiek apstrādāta pieteikšanās vienumu URI atbilstības noteikšana, kad tiek veiktas tādas darbības kā automātiska aizpilde." }, "theme": { "message": "Izskats" @@ -649,6 +727,9 @@ "themeDesc": { "message": "Mainīt lietotnes izskata krāsas." }, + "themeDescAlt": { + "message": "Mainīt lietotnes izskata krāsas. Attiecas uz visiem pieslēgtajiem kontiem." + }, "dark": { "message": "Tumšs", "description": "Dark color" @@ -693,7 +774,7 @@ "message": "Uzzināt par apvienībām" }, "learnOrgConfirmation": { - "message": "Bitwarden nodrošina iespēju kopīgot glabātavas vienumus ar citiem, kad tiek izmantota apvienība. Vai apmeklēt bitwarden.com tīmekļa vietni, lai uzzinātu vairāk?" + "message": "Bitwarden nodrošina iespēju kopīgot glabātavas vienumus ar citiem, kad tiek izmantota apvienība. Vai apmeklēt bitwarden.com tīmekļvietni, lai uzzinātu vairāk?" }, "moveToOrganization": { "message": "Pārvietot uz apvienību" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Iespēja nav pieejama" }, - "updateKey": { - "message": "Jūs nevarat izmantot šo funkciju līdz jūs atjaunojat savu šifrēšanas atslēgu." + "encryptionKeyMigrationRequired": { + "message": "Nepieciešama šifrēšanas atslēgas nomaiņa. Lūgums pieteikties tīmekļa glabātavā, lai atjauninātu savu šifrēšanas atslēgu." }, "premiumMembership": { "message": "Premium dalība" @@ -772,7 +853,7 @@ "message": "Pārvaldīt dalību" }, "premiumManageAlert": { - "message": "Dalību ir iespējams pārvaldīt bitwarden.com tīmekļa glabātavā. Vai apmeklēt tīmekļa vietni?" + "message": "Dalību ir iespējams pārvaldīt bitwarden.com tīmekļa glabātavā. Vai tagad apmeklēt tīmekļvietni?" }, "premiumRefresh": { "message": "Atjaunot dalību" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB šifrētas krātuves datņu pielikumiem." }, - "ppremiumSignUpTwoStep": { - "message": "Tādas papildu divpakāpju pieteikšanās iespējas kā YubiKey, FIDO U2F un Duo." + "premiumSignUpTwoStepOptions": { + "message": "Tādas slēgtā pirmavota divpakāpju pieteikšanās iespējas kā YubiKey un Duo." }, "ppremiumSignUpReports": { "message": "Paroļu higiēnas, konta veselības un datu noplūžu pārskati, lai uzturētu glabātavu drošu." @@ -805,7 +886,7 @@ "message": "Iegādāties Premium" }, "premiumPurchaseAlert": { - "message": "Premium dalību ir iespējams iegādāties bitwarden.com tīmekļa glabātavā. Vai apmeklēt tīmekļa vietni?" + "message": "Premium dalību ir iespējams iegādāties bitwarden.com tīmekļa glabātavā. Vai tagad apmeklēt tīmekļvietni?" }, "premiumCurrentMember": { "message": "Tu esi Premium dalībnieks!" @@ -829,7 +910,7 @@ "message": "Automātiski ievietot TOTP starpliktuvē" }, "disableAutoTotpCopyDesc": { - "message": "Ja pieteikšanās vienumam ir pievienota autentificētāja atslēga, TOTP apstiprinājuma kods tiks automātiski pārkopēts uz starpliktuvi, kad vien tiks automātiski aizpildīta pieteikšanās veidne." + "message": "Ja pieteikšanās vienumam ir pievienota autentificētāja atslēga, TOTP apstiprinājuma kods tiks automātiski ievietots starpliktuvē, kad vien tiks automātiski aizpildīta pieteikšanās veidne." }, "enableAutoBiometricsPrompt": { "message": "Palaižot vaicāt biometriju" @@ -892,7 +973,7 @@ "message": "Šim kontam ir iespējota divpakāpju pieteikšanās, bet šajā pārlūkā netiek atbalstīts neviens no uzstādītajiem divpakāpju pārbaudes nodrošinātājiem." }, "noTwoStepProviders2": { - "message": "Lūgums izmantot atbalstītu tīmekļa pārlūku (piemēram Chrome) un/vai pievienot papildus nodrošinātājus, kas tiek labāk atbalstīti dažādos pārlūkos (piemēram autentificētāja lietotni)." + "message": "Lūgums izmantot atbalstītu tīmekļa pārlūku (piemēram Chrome) un/vai pievienot papildu nodrošinātājus, kas tiek labāk atbalstīti dažādos pārlūkos (piemēram autentificētāja lietotni)." }, "twoStepOptions": { "message": "Divpakāpju pieteikšanās iespējas" @@ -914,21 +995,21 @@ "message": "YubiKey OTP drošības atslēga" }, "yubiKeyDesc": { - "message": "Izmanto YubiKey, lai piekļūtu savam kontam! Darbojas ar YubiKey 4, 4 Nano, 4C un NEO ierīcēm." + "message": "Ir izmantojams YubiKey, lai piekļūtu savam kontam. Darbojas ar YubiKey 4, 4 Nano, 4C un NEO ierīcēm." }, "duoDesc": { - "message": "Apstiprini ar Duo Security, izmantojot Duo Mobile lietotni, īsziņu, tālruņa zvanu vai U2F drošības atslēgu!", + "message": "Ar Duo Security apliecināšanu var veikt ar Duo Mobile lietotni, īsziņu, tālruņa zvanu vai U2F drošības atslēgu.", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "duoOrganizationDesc": { - "message": "Apstiprini ar Duo Security savā apvienībā, izmantojot Duo Mobile lietotni, īsziņu, tālruņa zvanu vai U2F drošības atslēgu!", + "message": "Apliecināšana ar savas apvienības Duo Security, izmantojot Duo Mobile lietotni, īsziņu, tālruņa zvanu vai U2F drošības atslēgu.", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "webAuthnTitle": { "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Izmantot jebkuru WebAuthn atbalstošu drošības atslēgu, lai piekļūtu kontam." + "message": "Ir izmantojama jebkura WebAuthn atbalstošu drošības atslēgu, lai piekļūtu kontam." }, "emailTitle": { "message": "E-pasts" @@ -969,17 +1050,42 @@ "environmentSaved": { "message": "Vides URL ir saglabāti." }, + "showAutoFillMenuOnFormFields": { + "message": "Rādīt automātiskās aizpildes izvēlni veidlapu laukos", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Attiecas uz visiem pieslēgtajiem kontiem." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Jāizslēdz sava pārlūka iebūvētā paroļu pārvaldnieka iestatījumi, lai izvairītos no nesaderībām." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Mainīt pārlūka iestatījumus." + }, + "autofillOverlayVisibilityOff": { + "message": "Izslēgts", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Kad lauks ir atlasīts (atlasot)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Kad tiek atlasīta automātiskās aizpildes ikona", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { - "message": "Iespējot aizpildīšanu lapas ielādes brīdī" + "message": "Automātiski aizpildīt lapas ielādes brīdī" }, "enableAutoFillOnPageLoadDesc": { "message": "Ja tiek noteikta pieteikšanās veidne, tā tiks aizpildīta lapas ielādes brīdī." }, "experimentalFeature": { - "message": "Pārveidotās vai neuzticamās vietnēs automātiskā aizpildīšana lapas ielādes laikā var tikt ļaunprātīgi izmantota." + "message": "Pārveidotās vai neuzticamās tīmekļvietnēs automātiskā aizpilde lapas ielādes laikā var tikt ļaunprātīgi izmantota." }, "learnMoreAboutAutofill": { - "message": "Uzzināt vairāk par automātisko aizpildīšanu" + "message": "Uzzināt vairāk par automātisko aizpildi" }, "defaultAutoFillOnPageLoad": { "message": "Noklusējuma automātiskās aizpildes iestatījums pieteikšanās vienumiem" @@ -1006,7 +1112,7 @@ "message": "Atvērt glabātavu sānu joslā" }, "commandAutofillDesc": { - "message": "Automātiski aizpildīt ar iepriekš izmantoto pieteikšanās vienumu pašreizējā tīmekļa vietnē" + "message": "Automātiski aizpildīt ar iepriekš izmantoto pieteikšanās vienumu pašreizējā tīmekļvietnē" }, "commandGeneratePasswordDesc": { "message": "Izveidot jaunu nejaušu paroli un ievietot to starpliktuvē" @@ -1056,11 +1162,14 @@ "message": "Šis pārlūks nevar apstrādāt U2F pieprasījumus šajā uznirstošajā logā. Vai atvērt to atsevišķā logā, lai varētu pieteikties, izmantojot U2F?" }, "enableFavicon": { - "message": "Rādīt vietņu ikonas" + "message": "Rādīt tīmekļvietņu ikonas" }, "faviconDesc": { "message": "Attēlot atpazīstamu attēlu pie katra pieteikšanās vienuma." }, + "faviconDescAlt": { + "message": "Parādīt atpazīstamu attēlu pie katra pieteikšanās vienuma. Attiecas uz visiem kontiem, kuros ir notikusi pieteikšanās." + }, "enableBadgeCounter": { "message": "Rādīt skaita nozīmīti" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Nederīgs PIN kods." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Pārāk daudz nederīgu PIN ievadīšanas mēģinājumu. Atsakās." + }, "unlockWithBiometrics": { "message": "Atslēgt ar biometriju" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Atjaunot vienumu" }, - "restoreItemConfirmation": { - "message": "Jūs tiešām atjaunot šo vienumu?" - }, "restoredItem": { "message": "Vienums atjaunots" }, @@ -1534,7 +1643,7 @@ "message": "Jaunā galvenā parole neatbilst nosacījumu prasībām." }, "acceptPolicies": { - "message": "Atzīmējot šo rūtiņu, Tu piekrīti sekojošajam:" + "message": "Ar šīs rūtiņas atzīmēšanu tiek piekrists sekojošajam:" }, "acceptPoliciesRequired": { "message": "Nav apstiprināti izmantošanas noteikumi un privātuma nosacījumi." @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Šajā ierīcē netiek atbalstīta pārlūka biometrija." }, + "biometricsFailedTitle": { + "message": "Biometrija neizdevās" + }, + "biometricsFailedDesc": { + "message": "Biometriju nevar pabeigt, jāapsver galvenās paroles izmantošana vai atteikšanās. Ja tas turpinās, lūgums sazināties ar Bitwarden atbalstu." + }, "nativeMessaginPermissionErrorTitle": { "message": "Atļauja nav nodrošināta" }, @@ -1617,31 +1732,37 @@ "personalOwnershipPolicyInEffect": { "message": "Apvienības nosacījumi ietekmē Tavas īpašumtiesību iespējas." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Apvienības nosacījums neļauj ievietot ārējos vienumus savā personīgajā glabātavā." + }, "excludedDomains": { "message": "Izņēmuma domēni" }, "excludedDomainsDesc": { "message": "Bitwarden nevaicās saglabāt pieteikšanās datus šiem domēniem. Ir jāpārlādē lapa, lai izmaiņas iedarbotos." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden nevaicās saglabāt pieteikšanās datus šiem domēniem visiem pieslēgtajiem kontiem. Ir jāpārlādē lapa, lai iedarbotos izmaiņas." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ nav derīgs domēns", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, "send": { - "message": "Sūtījums", + "message": "Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "searchSends": { - "message": "Meklēt Sūtījumus", + "message": "Meklēt Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "addSend": { - "message": "Pievienot Sūtījumu", + "message": "Pievienot Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTypeText": { @@ -1651,11 +1772,11 @@ "message": "Datne" }, "allSends": { - "message": "Visi Sūtījumi", + "message": "Visi Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "maxAccessCountReached": { - "message": "Sasniegts lielākais pieļaujamais piekļuvju skaits", + "message": "Sasniegts lielākais pieļaujamais piekļuves reižu skaits", "description": "This text will be displayed after a Send has been accessed the maximum amount of times." }, "expired": { @@ -1668,7 +1789,7 @@ "message": "Aizsargāts ar paroli" }, "copySendLink": { - "message": "Ievietot \"Send\" saiti starpliktuvē", + "message": "Ievietot Send saiti starpliktuvē", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "removePassword": { @@ -1681,11 +1802,11 @@ "message": "Parole noņemta" }, "deletedSend": { - "message": "Sūtījums dzēsts", + "message": "Send izdzēsts", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { - "message": "Sūtījuma saite", + "message": "Send saite", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "disabled": { @@ -1695,23 +1816,23 @@ "message": "Vai tiešām noņemt paroli?" }, "deleteSend": { - "message": "Dzēst Sūtījumu", + "message": "Izdzēst Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deleteSendConfirmation": { - "message": "Vai tiešām vēlaties dzēst šo Sūtījumu?", + "message": "Vai tiešām izdzēst šo Send?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editSend": { - "message": "Rediģēt Sūtījumu", + "message": "Labot Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTypeHeader": { - "message": "Kāds ir šī Sūtījums veids?", + "message": "Kāds ir šī Send veids?", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNameDesc": { - "message": "Draudzīgs nosaukums, lai raksturotu šo Sūtījumu.", + "message": "Lasāms nosaukums, kas apraksta šo Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendFileDesc": { @@ -1721,14 +1842,14 @@ "message": "Dzēšanas datums" }, "deletionDateDesc": { - "message": "Sūtījums tiks neatgriezeniski dzēsts norādītajā datumā un laikā.", + "message": "Send tiks neatgriezeniski izdzēsts norādītajā datumā un laikā.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { "message": "Derīguma beigu datums" }, "expirationDateDesc": { - "message": "Ja tas ir iestatīts, piekļuve šim Sūtījumam beigsies norādītajā datumā un laikā.", + "message": "Ja iestatīts, piekļuve šim Send beigsies norādītajā datumā un laikā.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "oneDay": { @@ -1747,59 +1868,59 @@ "message": "Pielāgots" }, "maximumAccessCount": { - "message": "Lielākais pieļaujamais piekļuvju skaits" + "message": "Lielākais pieļaujamais piekļuves reižu skaits" }, "maximumAccessCountDesc": { - "message": "Ja tas ir iestatīts, lietotāji vairs nevarēs piekļūt šim Sūtījumam, tiklīdz būs sasniegts maksimālais piekļuves skaits.", + "message": "Ja iestatīts, lietotāji nevarēs piekļūt šim Send, kad tiks sasniegts lielākais pieļaujamais piekļūšanas reižu skaits.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendPasswordDesc": { - "message": "Pēc izvēles pieprasīt paroli, lai lietotāji varētu piekļūt šim Sūtījumam.", + "message": "Pēc izvēles pieprasīt paroli, lai lietotāji varētu piekļūt šim Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNotesDesc": { - "message": "Privātas piezīmes par šo Sūtījumu.", + "message": "Personīgas piezīmes par šo Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Deaktivizēt šo Sūtījumu, lai neviens tam nevarētu piekļūt.", + "message": "Izslēgt šo Send, lai neviens tam nevarētu piekļūt.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { - "message": "Saglabāšanas brīdī ievietot šī \"Send\" saiti starpliktuvē.", + "message": "Saglabāšanas brīdī ievietot šī Send saiti starpliktuvē.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTextDesc": { "message": "Teksts, kuru ir vēlme nosūtīt." }, "sendHideText": { - "message": "Pēc noklusējuma slēpt šī Sūtījuma tekstu.", + "message": "Pēc noklusējuma paslēpt šī Send tekstu.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { "message": "Pašreizējais piekļuvju skaits" }, "createSend": { - "message": "Jauns Sūtījums", + "message": "Jauns Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { "message": "Jauna parole" }, "sendDisabled": { - "message": "Sūtījums noņemts", + "message": "Send noņemts", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { - "message": "Uzņēmuma nosacījumu dēļ ir iespējams izdzēst tikai esošu \"Send\".", + "message": "Uzņēmuma nosacījumu dēļ ir iespējams izdzēst tikai esošu Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Sūtījums izveidots", + "message": "Send izveidots", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Sūtījums saglabāts", + "message": "Send saglabāts", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1812,14 +1933,14 @@ "message": "Lai izvēlētos datni, ja tiek izmantots Safari, paplašinājums ir jāatver jaunā logā, klikšķinot uz šī paziņojuma." }, "sendFileCalloutHeader": { - "message": "Pirms Jūs sākat" + "message": "Pirms sākšanas" }, "sendFirefoxCustomDatePopoutMessage1": { "message": "Lai izmantotu kalendāra veida datumu atlasītāju,", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'" }, "sendFirefoxCustomDatePopoutMessage2": { - "message": "noklikšķiniet šeit", + "message": "klikšķināt šeit", "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'" }, "sendFirefoxCustomDatePopoutMessage3": { @@ -1845,7 +1966,7 @@ "message": "Slēpt e-pasta adresi no saņēmējiem." }, "sendOptionsPolicyInEffect": { - "message": "Viena vai vairākas organizācijas politikas ietekmē jūsu Sūtījuma opcijas." + "message": "Viens vai vairāki apvienības nosacījumi ietekmē Send iespējas." }, "passwordPrompt": { "message": "Galvenās paroles pārvaicāšana" @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Izvēlēties mapi..." }, - "ssoCompleteRegistration": { - "message": "Lai pabeigtu vienotās pieteikšanās uzstādīšanu, ir jānorāda galvenā parole, lai piekļūtu glabātavai un aizsargātu to." + "noFoldersFound": { + "message": "Nav atrasta neviena mape", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Apvienības atļaujas tika atjauninātas, un tās pieprasa iestatīt galveno paroli.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Apvienība pieprasa iestatīt galveno paroli.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Nepieciešams apliecinājums", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Stundas" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Izdod personīgo glabātavu" }, - "exportingPersonalVaultDescription": { - "message": "Tiks izdoti tikai personīgie glabātavas vienumi, kas ir saistīti ar $EMAIL$. Apvienības glabātavas vienumi netiks iekļauti.", + "exportingIndividualVaultDescription": { + "message": "Tiks izgūti tikai atsevišķi glabātavas vienumi, kas ir saistīti ar $EMAIL$. Apvienības glabātavas vienumi netiks iekļauti. Tiks izgūta tikai glabātavas vienumu informācija, un saistītie pielikumi netiks iekļauti.", "placeholders": { "email": { "content": "$1", @@ -2020,7 +2154,7 @@ "message": "Nejaušs vārds" }, "websiteName": { - "message": "Tīmekļa vietnes nosaukums" + "message": "Tīmekļvietnes nosaukums" }, "whatWouldYouLikeToGenerate": { "message": "Ko ir nepieciešams izveidot?" @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Servera versija" }, - "selfHosted": { - "message": "Pašizvietots" + "selfHostedServer": { + "message": "pašizvietots" }, "thirdParty": { "message": "Trešās puses" @@ -2129,7 +2263,7 @@ "message": "Atpazīšanas vārdkopa" }, "fingerprintMatchInfo": { - "message": "Jāpārliecinās, ka glabātava ir atslēgta un atpazīšanas vārdkopa ir tāda pati arī citā ierīcē." + "message": "Lūgums pārliecināties, ka glabātava ir atslēgta un atpazīšanas vārdkopa ir tāda pati arī citā ierīcē." }, "resendNotification": { "message": "Atkārtoti nosūtīt paziņojumu" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Uz ierīci ir nosūtīts paziņojums." }, - "logInInitiated": { + "loginInitiated": { "message": "Uzsākta pieteikšanās" }, "exposedMasterPassword": { @@ -2174,13 +2308,13 @@ } }, "autofillPageLoadPolicyActivated": { - "message": "Tavas apvienības nosacījumos ir ieslēgta automātiskā aizpildīšana lapas ielādes brīdī." + "message": "Tavas apvienības nosacījumos ir ieslēgta automātiskā aizpilde lapas ielādes brīdī." }, "howToAutofill": { "message": "Kā automātiski aizpildīt" }, "autofillSelectInfoWithCommand": { - "message": "Jāatlasa vienums šai lapai vai jāizmanto īsceļš: $COMMAND$", + "message": "Jāizvēlas šī skata vienums, jāizmanto īsceļš $COMMAND$ vai iestatījumos jāizpēta citas iespējas.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Jāatlasa vienums šai lapai vai iestatījumos jāuzstāda īsceļš." + "message": "Jāizvēlas šī skata vienums vai iestatījumos jāizpēta citas iespējas." }, "gotIt": { "message": "Sapratu" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Apgabals" + "loggingInOn": { + "message": "Piesakās" }, "opensInANewWindow": { "message": "Atver jaunā logā" }, + "deviceApprovalRequired": { + "message": "Nepieciešams ierīces apstiprinājums. Zemāk jāatlasa apstiprinājuma iespēja:" + }, + "rememberThisDevice": { + "message": "Atcerēties šo ierīci" + }, + "uncheckIfPublicDevice": { + "message": "Jānoņem atzīme, ja tiek izmantota publiska ierīce" + }, + "approveFromYourOtherDevice": { + "message": "Jāapstiprina citā savā ierīcē" + }, + "requestAdminApproval": { + "message": "Pieprasīt pārvaldītāja apstiprinājumu" + }, + "approveWithMasterPassword": { + "message": "Apstiprināt ar galveno paroli" + }, + "ssoIdentifierRequired": { + "message": "Ir nepieciešams apvienības SSO identifikators." + }, "eu": { "message": "ES", "description": "European Union" }, - "us": { - "message": "ASV", - "description": "United States" - }, "accessDenied": { "message": "Piekļuve liegta. Nav nepieciešamo atļauju, lai skatītu šo lapu." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Attēlojums" + }, + "accountSuccessfullyCreated": { + "message": "Konts ir veiksmīgi izveidots." + }, + "adminApprovalRequested": { + "message": "Pieprasīts pārvaldītāja apstiprinājums" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Pieprasījums tika nosūtīts pārvaldītājam." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Tiks saņemts paziņojums, tiklīdz būs apstiprināts." + }, + "troubleLoggingIn": { + "message": "Neizdodas pieteikties?" + }, + "loginApproved": { + "message": "Pieteikšanās apstiprināta" + }, + "userEmailMissing": { + "message": "Trūkst lietotāja e-pasta adreses" + }, + "deviceTrusted": { + "message": "Ierīce ir uzticama" + }, + "inputRequired": { + "message": "Jāievada vērtība." + }, + "required": { + "message": "nepieciešams" + }, + "search": { + "message": "Meklēt" + }, + "inputMinLength": { + "message": "Ievadītajai vērtībai ir jābūt vismaz $COUNT$ rakstzīmes garai.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Ievadītās vērtības garums nedrīkst pārsniegt $COUNT$ rakstzīmes.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Šādas rakstzīmes nav atļautas: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Ievadītajai vērtībai jābūt vismaz $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Ievadītā vērtība nedrīkst pārsniegt $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 vai vairākas e-pasta adreses nav derīgas" + }, + "inputTrimValidator": { + "message": "Ievadītā vērtība nevar sastāvēt tikai no atstarpēm.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Ievadītā vērtība nav e-pasta adrese." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ augstāk esošajam(iem) laukam(iem) ir jāpievērš uzmanība.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Atlasīt --" + }, + "multiSelectPlaceholder": { + "message": "-- Rakstīt, lai atlasītu --" + }, + "multiSelectLoading": { + "message": "Iegūst iespējas..." + }, + "multiSelectNotFound": { + "message": "Netika atrasti vienumi" + }, + "multiSelectClearAll": { + "message": "Notīrīt visu" + }, + "plusNMore": { + "message": "+ vēl $QUANTITY$", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Apakšizvēlne" + }, + "toggleCollapse": { + "message": "Pārslēgt sakļaušanu", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Ievietot datus Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Aizsargāt LastPass datus un ievietot tos Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Saglabāt kā nešifrētu datni", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Ievietot Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Ievieto...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Dati veiksmīgi ievietoti.", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Kļūda ievietošanā. Jāpārbauda konsole, lai iegūtu vairāk informācijas.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Ievietošanas laikā atgadījās tīkla kļūda.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Aizstājdomēns" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Vienumus ar galvenās paroles pārvaicāšanu nevar automātiski aizpildīt lapas ielādes brīdī. Automātiskā aizpilde lapas ielādes brīdī ir izslēgta.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Automātiskā aizpilde lapas ielādes brīdī iestatīta izmantot noklusējuma iestatījumu.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Jāizslēdz galvenās paroles pārvaicāšana, lai labotu šo lauku", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Pāriet uz saturu" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden automātiskās aizpildes izvēlnes poga", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Pārslēgt Bitwarden automātiskās aizpildes izvēlni", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden automātiskās aizpildes izvēlne", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Jāatslēdz savs konts, lai apskatītu atbilstošus pieteikšanās vienumus", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Atslēgt kontu", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Aizpildīt pieteikšanās datus", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Daļējs lietotājvārds", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Nav vienumu, ko parādīt", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Jauns vienums", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Pievienot jaunu glabātavas vienumu", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Ir pieejama Bitwarden automātiskās aizpildes izvēlne. Jānospiež poga ar bultu uz leju, lai atlasītu.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Ieslēgt" + }, + "ignore": { + "message": "Neņemt vērā" + }, + "importData": { + "message": "Ievietot datus", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Ievietošanas kļūda" + }, + "importErrorDesc": { + "message": "Ir nepilnības ievietojamajos datos. Lūgums novērst zemāk uzskaitītās kļūdas avota datnē un mēģināt vēlreiz." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Jāatrisina zemāk norādītās kļūdas un jāmēģina vēlreiz." + }, + "description": { + "message": "Apraksts" + }, + "importSuccess": { + "message": "Dati veiksmīgi ievietoti" + }, + "importSuccessNumberOfItems": { + "message": "Kopumā tika ievietoti $AMOUNT$ vienumi.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Jāmēģina vēlreiz" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Šai darbībai ir nepieciešama apliecināšana. Jāiestata PIN, lai turpinātu." + }, + "setPin": { + "message": "Iestatīt PIN" + }, + "verifyWithBiometrics": { + "message": "Apliecināt ar biometriju" + }, + "awaitingConfirmation": { + "message": "Gaida apstiprinājumu" + }, + "couldNotCompleteBiometrics": { + "message": "Nevarēja pabeigt biometriju." + }, + "needADifferentMethod": { + "message": "Nepieciešams cits veids?" + }, + "useMasterPassword": { + "message": "Izmantot galveno paroli" + }, + "usePin": { + "message": "Izmantot PIN" + }, + "useBiometrics": { + "message": "Izmantot biometriju" + }, + "enterVerificationCodeSentToEmail": { + "message": "Jāievada apliecinājuma kods, kas tika nosūtīts e-pastā." + }, + "resendCode": { + "message": "Atkārtoti nosūtīt kodu" + }, + "total": { + "message": "Kopā" + }, + "importWarning": { + "message": "Tiek ievietoti dati apvienībā $ORGANIZATION$. Tie var tikt kopīgoti ar citiem apvienības dalībniekiem. Vai turpināt?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Jāpalaiž DUO un jāseko soļiem, lai pabeigtu pieteikšanos." + }, + "duoRequiredForAccount": { + "message": "Kontam ir nepieciešama Duo divpakāpju pieteikšanās." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Jāatver paplašinājums atsevišķā logā, lai pabeigtu pieteikšanos." + }, + "popoutExtension": { + "message": "Atvērt paplašinājumu atsevišķi" + }, + "launchDuo": { + "message": "Palaist DUO" + }, + "importFormatError": { + "message": "Dati nav pareizi formatēti. Lūgums pārbaudīt ievietošanas datni un mēģināt vēlreiz." + }, + "importNothingError": { + "message": "Nekas netika ievietots." + }, + "importEncKeyError": { + "message": "Kļūda izguves datnes atšifrēšanā. Izmantotā atslēga neatbilst tai, kas tika izmantota satura izgūšanai." + }, + "invalidFilePassword": { + "message": "Nederīga datnes parole, lūgums izmantot to paroli, kas tika ievadīta izdošanas datnes izveidošanas brīdī." + }, + "importDestination": { + "message": "Ievietošanas galamērķis" + }, + "learnAboutImportOptions": { + "message": "Uzzināt par ievietošanas iespējām" + }, + "selectImportFolder": { + "message": "Atlasīt mapi" + }, + "selectImportCollection": { + "message": "Atlasīt krājumu" + }, + "importTargetHint": { + "message": "Šī iespēja jāatlasa, ja ir vēlēšanās ievietotās datnes saturu pārvietot uz $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Datne satur nepiešķirtus vienumus." + }, + "selectFormat": { + "message": "Atlasīt ievietošanas datnes veidolu" + }, + "selectImportFile": { + "message": "Atlasīt ievietošanas datni" + }, + "chooseFile": { + "message": "Izvēlēties datni" + }, + "noFileChosen": { + "message": "Nav izvēlēta neviena datne" + }, + "orCopyPasteFileContents": { + "message": "vai ievietot starpliktuvē un ielīmēt ievietošanas datnes saturu" + }, + "instructionsFor": { + "message": "Norādījumi $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Apstiprināt glabātavas satura ievietošanu" + }, + "confirmVaultImportDesc": { + "message": "Šī datne ir aizsargāta ar paroli. Lūgums ievadīt datnes paroli, lai ievietotu datus." + }, + "confirmFilePassword": { + "message": "Apstiprināt datnes paroli" + }, + "typePasskey": { + "message": "Piekļuves atslēga" + }, + "passkeyNotCopied": { + "message": "Piekļuves atslēga netiks ievietota starpliktuvē" + }, + "passkeyNotCopiedAlert": { + "message": "Piekļuves atslēga netiks ievietota klonētajā vienumā. Vai turpināt šī vienuma klonēšanu?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Vietne, kurā tika uzsākta darbība, pieprasa pārbaudi. Šī iespēja vēl nav īstenota kontiem, kuriem nav galvenās paroles." + }, + "logInWithPasskey": { + "message": "Pieteikties ar piekļuves atslēgu?" + }, + "passkeyAlreadyExists": { + "message": "Šai lietotnei jau pastāv piekļuves atslēga." + }, + "noPasskeysFoundForThisApplication": { + "message": "Šai lietotnei netika atrastas piekļuves atslēgas." + }, + "noMatchingPasskeyLogin": { + "message": "Nav šai vietnei atbilstoša pieteikšanās vienuma." + }, + "confirm": { + "message": "Apstiprināt" + }, + "savePasskey": { + "message": "Saglabāt piekļuves atslēgu" + }, + "savePasskeyNewLogin": { + "message": "Saglabāt piekļuves atslēgu kā jaunu pieteikšanās vienumu" + }, + "choosePasskey": { + "message": "Izvēlēties pieteikšanās vienumu, kurā saglabāt šo piekļuves atslēgu" + }, + "passkeyItem": { + "message": "Piekļuves atslēgas vienums" + }, + "overwritePasskey": { + "message": "Pārrakstīt piekļuves atslēgu?" + }, + "overwritePasskeyAlert": { + "message": "Šis vienums jau satur piekļuves atslēgu. Vai tiešām pārrakstīt pašreizējo piekļuves atslēgu?" + }, + "featureNotSupported": { + "message": "Iespēja vēl netiek nodrošināta" + }, + "yourPasskeyIsLocked": { + "message": "Nepieciešama apstiprinājums, lai izmantotu piekļuves atslēgu. Jāapliecina sava identitāte, lai turpinātu." + }, + "multifactorAuthenticationCancelled": { + "message": "Daudzpakāpju pieteikšanās atcelta" + }, + "noLastPassDataFound": { + "message": "Netika atrasti LastPass dati" + }, + "incorrectUsernameOrPassword": { + "message": "Nepareizs lietotājvārds vai parole" + }, + "incorrectPassword": { + "message": "Nepareiza parole" + }, + "incorrectCode": { + "message": "Nepareizs kods" + }, + "incorrectPin": { + "message": "Nepareizs PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Daudzpakāpju pieteikšanās neizdevās" + }, + "includeSharedFolders": { + "message": "Iekļaut kopīgotās mapes" + }, + "lastPassEmail": { + "message": "LastPass e-pasta adrese" + }, + "importingYourAccount": { + "message": "Ievieto kontu..." + }, + "lastPassMFARequired": { + "message": "Nepieciešama LastPass daudzpakāpju pieteikšanās" + }, + "lastPassMFADesc": { + "message": "Jāievada vienreizējais piekļuves kods no autentificētāja lietotnes" + }, + "lastPassOOBDesc": { + "message": "Jāapstiprina pieteikšanās pieprasījums autentificētāja lietotnē vai jāievada vienreizējs piekļuves kods." + }, + "passcode": { + "message": "Piekļuves kods" + }, + "lastPassMasterPassword": { + "message": "LastPass galvenā parole" + }, + "lastPassAuthRequired": { + "message": "Nepieciešama pieteikšanās LastPass" + }, + "awaitingSSO": { + "message": "Gaida vienoto pieteikšanos" + }, + "awaitingSSODesc": { + "message": "Lūgums turpināt pieteikšanos ar savas apvienības pieteikšanās datiem." + }, + "seeDetailedInstructions": { + "message": "Izvērstas norādes ir aplūkojamas mūsu palīdzības vietnē", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Ievietot tieši no LastPass" + }, + "importFromCSV": { + "message": "Ievietot no CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Jāmēģina vēlreiz vai jālūko pēc e-pasta no LastPass, lai apliecinātu sevi." + }, + "collection": { + "message": "Krājums" + }, + "lastPassYubikeyDesc": { + "message": "Jāievieto ar LastPass kontu sasaistītā YubiKey datora USB ligzdā, tad jāpieskaras tās pogai." + }, + "switchAccount": { + "message": "Pārslēgties starp kontiem" + }, + "switchAccounts": { + "message": "Pārslēgties starp kontiem" + }, + "switchToAccount": { + "message": "Pārslēgties uz kontu" + }, + "activeAccount": { + "message": "Pašlaik izmantotais konts" + }, + "availableAccounts": { + "message": "Pieejamie konti" + }, + "accountLimitReached": { + "message": "Sasniegti konta ierobežojumi. Jāizrakstās no konta, lai pievienotu citu." + }, + "active": { + "message": "izmantots" + }, + "locked": { + "message": "aizslēgts" + }, + "unlocked": { + "message": "atslēgta" + }, + "server": { + "message": "serveris" + }, + "hostedAt": { + "message": "izvietots" + }, + "useDeviceOrHardwareKey": { + "message": "Jāizmanto sava ierīce vai aparatūras atslēga" + }, + "justOnce": { + "message": "Tikai vienreiz" + }, + "alwaysForThisSite": { + "message": "Vienmēr šai vietnei" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ pievienots neiekļautajiem domēniem.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Izplatīti veidoli", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Padarīt Bitwarden par noklusējuma paroļu pārvaldnieku?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Šīs iespējas neņemšana vērā var radīt nesaderības starp Bitwarden automātiskās aizpildes izvēlni un pārlūka.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Padarīt Bitwarden par noklusējuma paroļu pārvaldnieku", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Nebija iespējams iestatīt Bitwarden kā noklusējuma paroļu pārvaldnieku", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Ir nepieciešams Bitwarden nodrošināt pārlūka privātuma atļaujas, lai iestatītu to kā noklusējuma paroļu pārvaldnieku.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Padarīt par noklusējumu", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Piekļuves informācija veiksmīgi saglabāta.", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Piekļuves informācija veiksmīgi atjaunināta.", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Kļūda piekļuves informācijas saglabāšanā. Jāpārbauda, vai konsolē ir izvērstāka informācija.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Noņemt piekļuves atslēgu" + }, + "passkeyRemoved": { + "message": "Piekļuves atslēga noņemta" + }, + "unassignedItemsBanner": { + "message": "Jāņem vērā: nepiešķirti apvienības vienumi vairs nav redzami skatā \"Visas glabātavas\" un ir sasniedzami tikai no pārvaldības konsoles, kur šie vienumi jāpiešķir krājumam, lai padarītu tos redzamus." } } diff --git a/apps/browser/src/_locales/ml/messages.json b/apps/browser/src/_locales/ml/messages.json index fd59a7798c..7205a54559 100644 --- a/apps/browser/src/_locales/ml/messages.json +++ b/apps/browser/src/_locales/ml/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "ഓട്ടോഫിൽ" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "പാസ്‌വേഡ് സൃഷ്ടിക്കുക (പകർത്തുക )" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "പൊരുത്തപ്പെടുന്ന ലോഗിനുകളൊന്നുമില്ല." }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "നീളം" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "പാസ്സ്‌വേഡ്‌" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "രഹസ്യ വാചകം" }, @@ -338,6 +368,12 @@ "other": { "message": "മറ്റുള്ളവ" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "എക്സ്റ്റൻഷൻ റേറ്റ് ചെയ്യുക " }, @@ -378,6 +414,9 @@ "lockNow": { "message": "ഇപ്പോൾ ലോക്കുചെയ്യുക" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "ഉടന്‍തന്നെ" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "തങ്ങളുടെ അക്കൗണ്ട് സൃഷ്ടിക്കപ്പെട്ടു! ഇനി താങ്കൾക്ക് ലോഗിൻ ചെയ്യാം." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "നിങ്ങളുടെ പ്രാഥമിക പാസ്‌വേഡ് സൂചനയുള്ള ഒരു ഇമെയിൽ ഞങ്ങൾ നിങ്ങൾക്ക് അയച്ചു." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "ഈ പേജിൽ തിരഞ്ഞെടുത്ത ഇനം യാന്ത്രികമായി പൂരിപ്പിക്കാൻ കഴിയില്ല. പകരം വിവരങ്ങൾ പകർത്തി ഒട്ടിക്കുക." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "ലോഗേഡ് ഔട്ട്" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "നിങ്ങൾ ആദ്യമായി സൈറ്റിൽ പ്രവേശിക്കുമ്പോൾ നിങ്ങളുടെ വാൾട്ടിലേക്കു തനിയെ പ്രവേശനം ഉൾപെടുത്താൻ \"പ്രവേശനം ചേർക്കുക എന്ന അറിയിപ്പ്\" ആവശ്യപ്പെടും." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "ബിറ്റ്വാർഡനിൽ ഈ പാസ്‌വേഡ് അപ്‌ഡേറ്റ് ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?" }, "notificationChangeSave": { "message": "ശരി, ഇപ്പോൾ അപ്ഡേറ്റ് ചെയ്യുക" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "സാധാരണ URI പൊരുത്തം കണ്ടെത്തൽ", @@ -649,6 +727,9 @@ "themeDesc": { "message": "അപ്ലിക്കേഷന്റെ തീമും വർണ്ണങ്ങളും മാറ്റുക." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "ഇരുണ്ടത്", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "സവിശേഷത ലഭ്യമല്ല" }, - "updateKey": { - "message": "നിങ്ങളുടെ എൻ‌ക്രിപ്ഷൻ കീ അപ്‌ഡേറ്റ് ചെയ്യുന്നതുവരെ നിങ്ങൾക്ക് ഈ സവിശേഷത ഉപയോഗിക്കാൻ കഴിയില്ല." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "പ്രീമിയം അംഗത്വം" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "ഫയൽ അറ്റാച്ചുമെന്റുകൾക്കായി 1 ജിബി എൻക്രിപ്റ്റുചെയ്‌ത സംഭരണം." }, - "ppremiumSignUpTwoStep": { - "message": "രണ്ട്-ഘട്ട പ്രവേശന ഓപ്ഷനുകളായ Yubikey, FIDO U2F, Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "നിങ്ങളുടെ വാൾട് സൂക്ഷിക്കുന്നതിന്. പാസ്‌വേഡ് ശുചിത്വം, അക്കൗണ്ട് ആരോഗ്യം, ഡാറ്റ ലംഘന റിപ്പോർട്ടുകൾ." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "എന്വിയാണമെന്റ് URL സംരക്ഷിച്ചു." }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "പേജ് ലോഡിൽ യാന്ത്രിക-പൂരിപ്പിക്കൽ പ്രവർത്തനക്ഷമമാക്കുക" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": " പിൻ കോഡ് അസാധുവാണ്." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "ഇനം വീണ്ടെടുക്കുക " }, - "restoreItemConfirmation": { - "message": "ഈ ഇനം വീണ്ടെടുക്കണമെന്ന് ഉറപ്പാണോ?" - }, "restoredItem": { "message": "വീണ്ടെടുത്ത ഇനം" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/mr/messages.json b/apps/browser/src/_locales/mr/messages.json index 33e843f3b4..918557feb8 100644 --- a/apps/browser/src/_locales/mr/messages.json +++ b/apps/browser/src/_locales/mr/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "स्वयंभरण" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "तिजोरी उघडा" }, @@ -208,10 +232,10 @@ "message": "संकालन" }, "syncVaultNow": { - "message": "Sync vault now" + "message": "तिजोरी संकालन आता करा" }, "lastSync": { - "message": "Last sync:" + "message": "शेवटचे संकालन:" }, "passGen": { "message": "पासवर्ड जनित्र" @@ -244,6 +268,9 @@ "length": { "message": "लांबी" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -279,7 +306,7 @@ "message": "Avoid ambiguous characters" }, "searchVault": { - "message": "Search vault" + "message": "तिजोरीत शोधा" }, "edit": { "message": "Edit" @@ -299,6 +326,9 @@ "password": { "message": "Password" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "वाक्यांश" }, @@ -338,6 +368,12 @@ "other": { "message": "इतर" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "विस्तारकाचे मूल्यांकन करा" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Immediately" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Your new account has been created! You may now log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We've sent you an email with your master password hint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Ask to add an item if one isn't found in your vault." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, "notificationChangeSave": { "message": "Update" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "Default URI match detection", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Dark", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Invalid PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restore item" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Item restored" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/my/messages.json b/apps/browser/src/_locales/my/messages.json index 9e46b55f19..dc91c1e6a9 100644 --- a/apps/browser/src/_locales/my/messages.json +++ b/apps/browser/src/_locales/my/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-fill" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "Length" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Password" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Passphrase" }, @@ -338,6 +368,12 @@ "other": { "message": "Other" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Immediately" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Your new account has been created! You may now log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We've sent you an email with your master password hint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Ask to add an item if one isn't found in your vault." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, "notificationChangeSave": { "message": "Update" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "Default URI match detection", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Dark", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Invalid PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restore item" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Item restored" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/nb/messages.json b/apps/browser/src/_locales/nb/messages.json index 596a717c20..d77aaa7d7c 100644 --- a/apps/browser/src/_locales/nb/messages.json +++ b/apps/browser/src/_locales/nb/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-utfylling" }, + "autoFillLogin": { + "message": "Auto-utfyll pålogging" + }, + "autoFillCard": { + "message": "Auto-utfyll kort" + }, + "autoFillIdentity": { + "message": "Auto-utfyll identitet" + }, "generatePasswordCopied": { "message": "Generer et passord (kopiert)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Ingen samsvarende innlogginger." }, + "noCards": { + "message": "Ingen kort" + }, + "noIdentities": { + "message": "Ingen identiteter" + }, + "addLoginMenu": { + "message": "Legg til pålogging" + }, + "addCardMenu": { + "message": "Legg til kort" + }, + "addIdentityMenu": { + "message": "Legg til identitet" + }, "unlockVaultMenu": { "message": "Lås opp hvelvet ditt" }, @@ -244,6 +268,9 @@ "length": { "message": "Lengde" }, + "passwordMinLength": { + "message": "Minimum passordlengde" + }, "uppercase": { "message": "Store bokstaver (A–Å)" }, @@ -299,6 +326,9 @@ "password": { "message": "Passord" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Passfrase" }, @@ -338,6 +368,12 @@ "other": { "message": "Annet" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Gi denne utvidelsen en vurdering" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lås nå" }, + "lockAll": { + "message": "Lås alle" + }, "immediately": { "message": "Umiddelbart" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Din nye konto har blitt opprettet! Du kan nå logge på." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "Vi har sendt deg en E-post med hintet til superpassordet." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Klarte ikke å auto-utfylle den valgte gjenstanden på denne siden. Kopier og lim inn informasjonen i stedet." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Autentiseringsnøkkel ble lagt til" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logget av" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "\"Legg til innlogging\"-beskjeden ber deg automatisk om å lagre nye innlogginger til hvelvet ditt hver gang du logger på dem for første gang." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Vis kort på fanesiden" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Spør om å oppdatere passordet til innlogging når endring på nettside oppdages." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Vil du oppdatere dette passordet i Bitwarden?" }, "notificationChangeSave": { "message": "Ja, oppdater nå" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Lås opp" + }, "enableContextMenuItem": { "message": "Vis alternativer for kontekstmeny" }, "contextMenuItemDesc": { "message": "Bruk et sekundært klikk for å få tilgang til passordgenerering og samsvarende innlogginger for nettsiden. " }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "Standard URI-samsvarsgjenkjenning", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Endre appens fargetema." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Mørkt", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Egenskapen er utilgjengelig" }, - "updateKey": { - "message": "Du kan ikke bruke denne funksjonen før du oppdaterer krypteringsnøkkelen din." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium-medlemskap" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB med kryptert fillagring for filvedlegg." }, - "ppremiumSignUpTwoStep": { - "message": "Ytterligere 2-trinnsinnloggingsmuligheter, slik som YubiKey, FIDO U2F, og Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Passordhygiene, kontohelse, og databruddsrapporter som holder hvelvet ditt trygt." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Miljø-nettadressene har blitt lagret." }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Rediger nettleserinnstillingene." + }, + "autofillOverlayVisibilityOff": { + "message": "Av", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Aktiver auto-utfylling ved sideinnlastning" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Vis et gjenkjennelig bilde ved siden av hver innlogging." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Vis merke-teller" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Ugyldig PIN-kode." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Lås opp med biometri" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Gjenopprett objekt" }, - "restoreItemConfirmation": { - "message": "Er du sikker på at du vil gjenopprette dette elementet?" - }, "restoredItem": { "message": "Gjenopprettet objekt" }, @@ -1465,7 +1574,7 @@ "message": "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." }, "insecurePageWarningFillPrompt": { - "message": "Do you still wish to fill this login?" + "message": "Ønsker du likevel å fylle ut denne innloggingen?" }, "autofillIframeWarning": { "message": "The form is hosted by a different domain than the URI of your saved login. Choose OK to auto-fill anyway, or Cancel to stop." @@ -1483,13 +1592,13 @@ "message": "Angi hovedpassord" }, "currentMasterPass": { - "message": "Current master password" + "message": "Gjeldende hovedpassord" }, "newMasterPass": { - "message": "New master password" + "message": "Nytt hovedpassord" }, "confirmNewMasterPass": { - "message": "Confirm new master password" + "message": "Bekreft det nye hovedpassordet" }, "masterPasswordPolicyInEffect": { "message": "En eller flere av virksomhetens regler krever at hovedpassordet oppfyller følgende krav:" @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Biometri i nettleseren støttes ikke på denne enheten." }, + "biometricsFailedTitle": { + "message": "Biometri mislyktes" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Tillatelse er ikke gitt" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "En virksomhetsregel påvirker dine eierskapsinnstillinger." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Ekskluderte domener" }, "excludedDomainsDesc": { "message": "Bitwarden vil ikke be om å lagre innloggingsdetaljer for disse domenene. Du må oppdatere siden for at endringene skal tre i kraft." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ er ikke et gyldig domene", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Velg mappe …" }, - "ssoCompleteRegistration": { - "message": "For å fullføre påloggingen med SSO, vennligst velg et hovedpassord for å få tilgang til og beskytte hvelvet ditt." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verifisering kreves", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Åpningstider" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Eksporterer personlig hvelv" }, - "exportingPersonalVaultDescription": { - "message": "Bare de personlige hvelv-elementene som er knyttet til $EMAIL$ vil bli eksportert. Organisasjonshvelvets elementer vil ikke bli inkludert.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server Versjon" }, - "selfHosted": { - "message": "Selvbetjent" + "selfHostedServer": { + "message": "selvbetjent" }, "thirdParty": { "message": "Tredjepart" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "Et varsel er sendt til enheten din." }, - "logInInitiated": { - "message": "Innlogging startet" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Eksponert hovedpassord" @@ -2180,7 +2314,7 @@ "message": "Hvordan bruke auto-utfylling" }, "autofillSelectInfoWithCommand": { - "message": "Velg et element fra denne siden eller bruk snarveien: $COMMAND$", + "message": "Velg en gjenstand fra denne skjermen, bruk snarveien $COMMAND$, eller utforsk andre alternativer i innstillingene.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Velg et element fra denne siden eller angi en snarvei i innstillingene." + "message": "Velg en gjenstand fra denne skjermen, eller utforsk andre alternativer i innstillingene." }, "gotIt": { "message": "Skjønner" @@ -2221,27 +2355,658 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logger inn på" }, "opensInANewWindow": { - "message": "Opens in a new window" + "message": "Åpnes i et nytt vindu" + }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Husk denne enheten" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Godkjenn med hovedpassord" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, "general": { - "message": "General" + "message": "Generelt" }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Forespørselen din har blitt sendt til administratoren din." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Du vil bli varslet når det er godkjent." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Innlogging godkjent" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Inndata er påkrevd." + }, + "required": { + "message": "påkrevd" + }, + "search": { + "message": "Søk" + }, + "inputMinLength": { + "message": "Inndataen må være minst $COUNT$ tegn.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Inndataen kan ikke ha mer enn $COUNT$ tegn.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Inndataverdien må være minst $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Inndataverdien kan ikke være mer enn $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Inndataen er ikke en E-postadresse." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Velg --" + }, + "multiSelectPlaceholder": { + "message": "— Skriv for å filtrere —" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "Ingen gjenstander funnet" + }, + "multiSelectClearAll": { + "message": "Tøm alle" + }, + "plusNMore": { + "message": "+ $QUANTITY$ til", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Undermeny" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Vil du importere dataene dine til Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Lagre som ukryptert fil", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importer til Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importerer …", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Dataene ble vellykket importert!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias-domene" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Hopp frem til innholdet" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Lås opp kontoen", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Delvis brukernavn", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Ingen gjenstander å vise", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Nytt objekt", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Legg til nytt hvelvobjekt", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Skru på" + }, + "ignore": { + "message": "Ignorer" + }, + "importData": { + "message": "Importer data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Fiks feilene nedenfor og prøv igjen." + }, + "description": { + "message": "Beskrivelse" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "$AMOUNT$ gjenstander totalt ble importert.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Prøv igjen" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Velg PIN" + }, + "verifyWithBiometrics": { + "message": "Bekreft med biometri" + }, + "awaitingConfirmation": { + "message": "Avventer bekreftelse" + }, + "couldNotCompleteBiometrics": { + "message": "Kunne ikke fullføre biometri." + }, + "needADifferentMethod": { + "message": "Trenger du en annen metode?" + }, + "useMasterPassword": { + "message": "Bruk hovedpassord" + }, + "usePin": { + "message": "Bruk PIN-kode" + }, + "useBiometrics": { + "message": "Bruk biometri" + }, + "enterVerificationCodeSentToEmail": { + "message": "Skriv inn bekreftelseskoden som ble sendt til e-postadressen din." + }, + "resendCode": { + "message": "Send koden på nytt" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Ingenting ble importert." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Lær mer om importalternativene dine" + }, + "selectImportFolder": { + "message": "Velg en mappe" + }, + "selectImportCollection": { + "message": "Velg en samling" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Filen inneholder utildelte elementer." + }, + "selectFormat": { + "message": "Velg formatet til importfilen" + }, + "selectImportFile": { + "message": "Velg importfilen" + }, + "chooseFile": { + "message": "Velg fil" + }, + "noFileChosen": { + "message": "Ingen fil er valgt" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$-instruksjoner", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Bekreft hvelvimportering" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Bekreft filpassord" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "Du har ikke en samsvarende innlogging for dette nettstedet." + }, + "confirm": { + "message": "Bekreft" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Funksjonen støttes ikke ennå" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifaktorautentisering ble avbrutt" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Feil brukernavn eller passord" + }, + "incorrectPassword": { + "message": "Feil passord" + }, + "incorrectCode": { + "message": "Feil kode" + }, + "incorrectPin": { + "message": "Feil PIN-kode" + }, + "multifactorAuthenticationFailed": { + "message": "Multifaktorautentisering mislyktes" + }, + "includeSharedFolders": { + "message": "Inkluder delte mapper" + }, + "lastPassEmail": { + "message": "LastPass-E-postadresse" + }, + "importingYourAccount": { + "message": "Importerer kontoen din…" + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass-hovedpassord" + }, + "lastPassAuthRequired": { + "message": "LastPass-autentisering kreves" + }, + "awaitingSSO": { + "message": "Avventer SSO-autentisering" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "Se detaljerte instruksjoner på hjelpesidene våre på", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Importer direkte fra LastPass" + }, + "importFromCSV": { + "message": "Importer fra CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Samling" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Bytt konto" + }, + "switchAccounts": { + "message": "Bytt kontoer" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Aktiv konto" + }, + "availableAccounts": { + "message": "Tilgjengelige kontoer" + }, + "accountLimitReached": { + "message": "Kontogrense nådd. Logg ut av en konto for å legge til en annen en." + }, + "active": { + "message": "aktiv" + }, + "locked": { + "message": "låst" + }, + "unlocked": { + "message": "låst opp" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "betjent hos" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Kun én gang" + }, + "alwaysForThisSite": { + "message": "Alltid for dette nettstedet" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ ble lagt til i de ekskluderte domenene.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Vanlige formater", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Gjør Bitwarden til din standard passordbehandler", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/ne/messages.json b/apps/browser/src/_locales/ne/messages.json index 9e46b55f19..dc91c1e6a9 100644 --- a/apps/browser/src/_locales/ne/messages.json +++ b/apps/browser/src/_locales/ne/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-fill" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "Length" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Password" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Passphrase" }, @@ -338,6 +368,12 @@ "other": { "message": "Other" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Immediately" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Your new account has been created! You may now log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We've sent you an email with your master password hint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Ask to add an item if one isn't found in your vault." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, "notificationChangeSave": { "message": "Update" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "Default URI match detection", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Dark", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Invalid PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restore item" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Item restored" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/nl/messages.json b/apps/browser/src/_locales/nl/messages.json index 130524de47..bbf16b345a 100644 --- a/apps/browser/src/_locales/nl/messages.json +++ b/apps/browser/src/_locales/nl/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-invullen" }, + "autoFillLogin": { + "message": "Login automatisch invullen" + }, + "autoFillCard": { + "message": "Kaart automatisch invullen" + }, + "autoFillIdentity": { + "message": "Identiteit automatisch invullen" + }, "generatePasswordCopied": { "message": "Wachtwoord genereren (op klembord)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Geen overeenkomstige logins." }, + "noCards": { + "message": "Geen kaarten" + }, + "noIdentities": { + "message": "Geen identiteiten" + }, + "addLoginMenu": { + "message": "Login toevoegen" + }, + "addCardMenu": { + "message": "Kaart toevoegen" + }, + "addIdentityMenu": { + "message": "Identiteit toevoegen" + }, "unlockVaultMenu": { "message": "Ontgrendel je kluis" }, @@ -244,6 +268,9 @@ "length": { "message": "Lengte" }, + "passwordMinLength": { + "message": "Minimale wachtwoordlengte" + }, "uppercase": { "message": "Hoofdletters (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Wachtwoord" }, + "totp": { + "message": "Authenticatie-geheim" + }, "passphrase": { "message": "Wachtwoordzin" }, @@ -338,6 +368,12 @@ "other": { "message": "Overig" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Stel een ontgrendelingsmethode in om je kluis time-out actie te wijzigen." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Deze extensie beoordelen" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Nu vergrendelen" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Onmiddellijk" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Je nieuwe account is aangemaakt! Je kunt nu inloggen." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We hebben je een e-mail gestuurd met je hoofdwachtwoordhint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Automatisch invullen mislukt; kopieer en plak je inloggegevens handmatig." }, + "totpCaptureError": { + "message": "Kan de QR-code van de huidige webpagina niet scannen" + }, + "totpCaptureSuccess": { + "message": "Authenticatie-sleutel toegevoegd" + }, + "totpCapture": { + "message": "Scan de authenticatie-QR-code van de huidige webpagina" + }, + "copyTOTP": { + "message": "Authenticatie-sleutel (TOTP) kopiëren" + }, "loggedOut": { "message": "Uitgelogd" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "\"Melding bij nieuwe login\" vraagt automatisch om nieuwe sites in de kluis op te slaan wanneer je ergens voor de eerste keer inlogt." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Kaarten weergeven op tabpagina" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Vraag om bijwerken van het wachtwoord van een login zodra een wijziging op een website is gedetecteerd." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Vragen om opslaan en gebruiken van passkeys en wachtwoorden" + }, + "usePasskeysDesc": { + "message": "Vragen om opslaan nieuwe passkeys of inloggen met opgeslagen passkeys in je privékluis. Geldt voor alle ingelogde accounts." + }, "notificationChangeDesc": { "message": "Wilt je dit wachtwoord in Bitwarden bijwerken?" }, "notificationChangeSave": { "message": "Ja, nu bijwerken" }, + "notificationUnlockDesc": { + "message": "Ontgrendel je Bitwarden-kluis om het auto-invulverzoek te voltooien." + }, + "notificationUnlock": { + "message": "Ontgrendelen" + }, "enableContextMenuItem": { "message": "Contextmenu-opties weergeven" }, "contextMenuItemDesc": { "message": "Gebruik de tweede klikfunctie voor toegang tot wachtwoordgeneratie en het matchen van logins voor de website." }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "Standaard URI-overeenkomstdetectie", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Het kleurenthema van de toepassing wijzigen." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Donker", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Functionaliteit niet beschikbaar" }, - "updateKey": { - "message": "Je kunt deze functie pas gebruiken als je je encryptiesleutel bijwerkt." + "encryptionKeyMigrationRequired": { + "message": "Migratie van de encryptiesleutel vereist. Login via de website om je sleutel te bij te werken." }, "premiumMembership": { "message": "Premium-abonnement" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB versleutelde opslag voor bijlagen." }, - "ppremiumSignUpTwoStep": { - "message": "Extra opties voor tweestapsaanmelding zoals YubiKey, FIDO U2F en Duo." + "premiumSignUpTwoStepOptions": { + "message": "Eigen opties voor tweestapsaanmelding zoals YubiKey en Duo." }, "ppremiumSignUpReports": { "message": "Wachtwoordhygiëne, gezondheid van je account en datalekken om je kluis veilig te houden." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "De omgeving-URL's zijn opgeslagen." }, + "showAutoFillMenuOnFormFields": { + "message": "Auto-invulmenu op formuliervelden weergeven", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Schakel de ingebouwde wachtwoordbeheerinstellingen van je browser uit om conflicten te voorkomen." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Browserinstellingen bewerken." + }, + "autofillOverlayVisibilityOff": { + "message": "Uit", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Wanneer het veld is geselecteerd (op focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Wanneer het pictogram automatisch aanvullen is geselecteerd", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Automatisch invullen bij laden van pagina" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Een herkenbare afbeelding naast iedere login weergeven." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Teller weergeven" }, @@ -1071,7 +1180,7 @@ "message": "Naam kaarthouder" }, "number": { - "message": "Kaartummer" + "message": "Kaartnummer" }, "brand": { "message": "Merk" @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Ongeldige PIN-code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Biometrisch ontgrendelen" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Item herstellen" }, - "restoreItemConfirmation": { - "message": "Weet je zeker dat je dit item wilt herstellen?" - }, "restoredItem": { "message": "Hersteld item" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Dit apparaat ondersteunt geen browserbiometrie." }, + "biometricsFailedTitle": { + "message": "Biometrie mislukt" + }, + "biometricsFailedDesc": { + "message": "Kan biometrische authenticatie niet voltooien, gebruik een hoofdwachtwoord of log uit. Neem contact op met de ondersteuning van Bitwarden als dit blijft aanhouden." + }, "nativeMessaginPermissionErrorTitle": { "message": "Toestemming niet verleend" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Een organisatiebeleid heeft invloed op je eigendomsopties." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Organisatiebeleid heeft het importeren van items in je persoonlijke kluis geblokkeerd." + }, "excludedDomains": { "message": "Uitgesloten domeinen" }, "excludedDomainsDesc": { "message": "Bitwarden zal voor deze domeinen niet vragen om inloggegevens op te slaan. Je moet de pagina vernieuwen om de wijzigingen toe te passen." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is geen geldig domein", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Map selecteren..." }, - "ssoCompleteRegistration": { - "message": "Voor het inloggen met SSO moet je een hoofdwachtwoord instellen voor toegang tot en bescherming van je kluis." + "noFoldersFound": { + "message": "Geen mappen gevonden", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verificatie vereist", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Uren" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Persoonlijke kluis exporteren" }, - "exportingPersonalVaultDescription": { - "message": "Exporteert alleen de persoonlijke kluis-items gerelateerd aan $EMAIL$. Geen kluis-items van de organisatie.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Serverversie" }, - "selfHosted": { - "message": "Zelfgehost" + "selfHostedServer": { + "message": "zelfgehost" }, "thirdParty": { "message": "van derden" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Er is een melding naar je apparaat verzonden." }, - "logInInitiated": { + "loginInitiated": { "message": "Inloggen gestart" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Hoe automatisch aanvullen" }, "autofillSelectInfoWithCommand": { - "message": "Selecteer een item op deze pagina of gebruik de snelkoppeling: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Selecteer een item op deze pagina of stel een snelkoppeling in via instellingen." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Ik snap het" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Regio" + "loggingInOn": { + "message": "Inloggen op" }, "opensInANewWindow": { "message": "Opent in een nieuw venster" }, + "deviceApprovalRequired": { + "message": "Apparaattoestemming vereist. Kies een goedkeuringsoptie hieronder:" + }, + "rememberThisDevice": { + "message": "Dit apparaat onthouden" + }, + "uncheckIfPublicDevice": { + "message": "Uitschakelen als je openbaar apparaat gebruikt" + }, + "approveFromYourOtherDevice": { + "message": "Goedkeuren vanaf je andere apparaat" + }, + "requestAdminApproval": { + "message": "Goedkeuring van beheerder vragen" + }, + "approveWithMasterPassword": { + "message": "Goedkeuren met hoofdwachtwoord" + }, + "ssoIdentifierRequired": { + "message": "Organisatie SSO-identificatie vereist." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Toegang geweigerd. Je hebt geen toestemming om deze pagina te bekijken." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account succesvol aangemaakt!" + }, + "adminApprovalRequested": { + "message": "Goedkeuring van beheerder aangevraagd" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Je verzoek is naar je beheerder verstuurd." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Je krijgt een melding zodra je bent goedgekeurd." + }, + "troubleLoggingIn": { + "message": "Problemen met inloggen?" + }, + "loginApproved": { + "message": "Inloggen goedgekeurd" + }, + "userEmailMissing": { + "message": "Gebruikerse-mailadres ontbreekt" + }, + "deviceTrusted": { + "message": "Vertrouwd apparaat" + }, + "inputRequired": { + "message": "Invoer vereist." + }, + "required": { + "message": "vereist" + }, + "search": { + "message": "Zoeken" + }, + "inputMinLength": { + "message": "Invoer moet minimaal $COUNT$ tekens lang zijn.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Invoer mag niet meer dan $COUNT$ tekens lang zijn.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "De volgende tekens zijn niet toegestaan: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Invoer moet minimaal $MIN$ zijn.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Invoer mag niet hoger zijn dan $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "Een of meer e-mailadressen zijn ongeldig" + }, + "inputTrimValidator": { + "message": "Invoer mag niet alleen witruimte bevatten.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Invoer is geen e-mailadres." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ veld(en) hierboven hebben je aandacht nodig.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Selecteer --" + }, + "multiSelectPlaceholder": { + "message": "-- Type om te filteren --" + }, + "multiSelectLoading": { + "message": "Opties ophalen..." + }, + "multiSelectNotFound": { + "message": "Geen items gevonden" + }, + "multiSelectClearAll": { + "message": "Alles wissen" + }, + "plusNMore": { + "message": "+ $QUANTITY$ meer", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "In-/Uitklappen", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Gegevens importeren naar Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Je LastPass-gegevens beschermen en naar Bitwarden importeren?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Als niet-versleuteld bestand opslaan", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Naar Bitwarden importeren", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importeren...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Gegevens succesvol geïmporteerd!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Fout bij importeren. Controleer console voor meer informatie.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Netwerkfout opgetreden tijdens het importeren.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Aliasdomein" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Menuknop Bitwarden automatisch invullen", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Bitwarden auto-invulmenu in- en uitschakelen", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-invulmenu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Ontgrendel je account om overeenkomende logins te bekijken", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Account ontgrendelen", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Inloggegevens invullen voor", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Gedeeltelijke gebruikersnaam", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Geen items om weer te geven", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Nieuw item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Nieuwe kluisitem toevoegen", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-invulmenu beschikbaar. Druk op de pijltjestoets omlaag om te selecteren.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Inschakelen" + }, + "ignore": { + "message": "Negeren" + }, + "importData": { + "message": "Data importeren", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Fout bij importeren" + }, + "importErrorDesc": { + "message": "Er was een probleem met de data die je probeerde te importeren. Los de onderstaande fouten op in het bronbestand en probeer het opnieuw." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Los onderstaande fouten op en probeer het opnieuw." + }, + "description": { + "message": "Omschrijving" + }, + "importSuccess": { + "message": "Data succesvol geïmporteerd" + }, + "importSuccessNumberOfItems": { + "message": "Een totaal van $AMOUNT$ items zijn geïmporteerd.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Opnieuw proberen" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Deze actie vereist verificatie actie. Stel een pincode in om door te gaan." + }, + "setPin": { + "message": "Pincode instellen" + }, + "verifyWithBiometrics": { + "message": "Biometrisch ontgrendelen" + }, + "awaitingConfirmation": { + "message": "Wacht op bevestiging" + }, + "couldNotCompleteBiometrics": { + "message": "Kon biometrie niet afronden." + }, + "needADifferentMethod": { + "message": "Een andere methode proberen?" + }, + "useMasterPassword": { + "message": "Hoofdwachtwoord gebruiken" + }, + "usePin": { + "message": "Pincode gebruiken" + }, + "useBiometrics": { + "message": "Biometrie gebruiken" + }, + "enterVerificationCodeSentToEmail": { + "message": "Voer de verificatiecode in die naar je e-mail is gestuurd." + }, + "resendCode": { + "message": "Code opnieuw sturen" + }, + "total": { + "message": "Totaal" + }, + "importWarning": { + "message": "Je importeert gegevens naar $ORGANIZATION$. Je gegevens kunnen gedeeld worden met de leden van deze organisatie. Wil je doorgaan?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Jouw account vereist Duo-tweestapsaanmelding." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Open de extensie om in te loggen." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "De gegevens zijn niet correct opgemaakt. Controleer je importbestand en probeer het opnieuw." + }, + "importNothingError": { + "message": "Er is niets geïmporteerd." + }, + "importEncKeyError": { + "message": "Fout bij het decoderen van het geëxporteerde bestand. Je encryptiesleutel komt niet overeen met de gebruikte sleutel waarmee de gegevens zijn geëxporteerd." + }, + "invalidFilePassword": { + "message": "Onjuist bestandswachtwoord, gebruik het wachtwoord dat je hebt ingevoerd bij het aanmaken van het exportbestand." + }, + "importDestination": { + "message": "Importbestemming" + }, + "learnAboutImportOptions": { + "message": "Leer meer over je importopties" + }, + "selectImportFolder": { + "message": "Map selecteren" + }, + "selectImportCollection": { + "message": "Collectie selecteren" + }, + "importTargetHint": { + "message": "Kies deze optie als je de geïmporteerde bestandsinhoud wilt verplaatsen naar een $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Bestand bevat niet-toegewezen items." + }, + "selectFormat": { + "message": "Formaat van het importbestand kiezen" + }, + "selectImportFile": { + "message": "Importbestand kiezen" + }, + "chooseFile": { + "message": "Bestand kiezen" + }, + "noFileChosen": { + "message": "Geen bestand gekozen" + }, + "orCopyPasteFileContents": { + "message": "of kopieer en plak de inhoud van het importbestand" + }, + "instructionsFor": { + "message": "Instructies voor $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Kluisimport bevestigen" + }, + "confirmVaultImportDesc": { + "message": "Dit bestand is beveiligd met een wachtwoord. Voer het bestandswachtwoord in om gegevens te importeren." + }, + "confirmFilePassword": { + "message": "Bestandswachtwoord bevestigen" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey wordt niet gekopieerd" + }, + "passkeyNotCopiedAlert": { + "message": "De passkey wordt niet gekopieerd naar het gekloonde item. Wil je doorgaan met het klonen van dit item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "De initiërende site vereist verificatie. Deze functie is nog niet geïmplementeerd voor accounts zonder hoofdwachtwoord." + }, + "logInWithPasskey": { + "message": "Inloggen met passkey?" + }, + "passkeyAlreadyExists": { + "message": "Er bestaat al een passkey voor deze applicatie." + }, + "noPasskeysFoundForThisApplication": { + "message": "Geen passkeys gevonden voor deze applicatie." + }, + "noMatchingPasskeyLogin": { + "message": "Je hebt geen overeenkomende login voor deze site." + }, + "confirm": { + "message": "Bevestigen" + }, + "savePasskey": { + "message": "Passkey opslaan" + }, + "savePasskeyNewLogin": { + "message": "Passkey als nieuwe login opslaan" + }, + "choosePasskey": { + "message": "Kies een login om deze passkey bij op te slaan" + }, + "passkeyItem": { + "message": "Passkey-Item" + }, + "overwritePasskey": { + "message": "Passkey overschrijven?" + }, + "overwritePasskeyAlert": { + "message": "Dit item bevat al een passkey. Weet je zeker dat je de huidige passkey wilt overschrijven?" + }, + "featureNotSupported": { + "message": "Functie nog niet ondersteund" + }, + "yourPasskeyIsLocked": { + "message": "Authenticatie vereist om passkey te gebruiken. Verifieer je identiteit om door te gaan." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor-authenticatie geannuleerd" + }, + "noLastPassDataFound": { + "message": "Geen LastPass-gegevens gevonden" + }, + "incorrectUsernameOrPassword": { + "message": "Onjuiste gebruikersnaam of wachtwoord" + }, + "incorrectPassword": { + "message": "Wachtwoord onjuist" + }, + "incorrectCode": { + "message": "Code onjuist" + }, + "incorrectPin": { + "message": "Pincode onjuist" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor-authenticatie mislukt" + }, + "includeSharedFolders": { + "message": "Gedeelde mappen insluiten" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Account impoteren..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor-authenticatie vereist" + }, + "lastPassMFADesc": { + "message": "Voer je eenmalige toegangscode van je authenticatie-app in" + }, + "lastPassOOBDesc": { + "message": "Bevestig het inlogverzoek in je authenticatie-app of voer een eenmalige toegangscode in." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass-hoofdwachtwoord" + }, + "lastPassAuthRequired": { + "message": "LastPass-authenticatie vereist" + }, + "awaitingSSO": { + "message": "Wacht op SSO-authenticatie" + }, + "awaitingSSODesc": { + "message": "Ga door met inloggen met de inloggegevens van je bedrijf." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Rechtstreeks vanuit LastPass importeren" + }, + "importFromCSV": { + "message": "Vanuit CSV importeren" + }, + "lastPassTryAgainCheckEmail": { + "message": "Probeer het opnieuw of zoek naar een e-mailbericht van LastPass om te verifiëren dat jij het bent." + }, + "collection": { + "message": "Collectie" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Beschikbare accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Veelvoorkomende formaten", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Bitwarden als je standaardwachtbeheerder gebruiken?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Deze optie negeren kan tot conflicten leiden tussen het automatisch invullen van Bitwarden en dat van je browser.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Maak van Bitwarden je standaardwachtbeheerder", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Kan Bitwarden niet als standaardwachtbeheerder instellen", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Je moet Bitwarden browser-privacyrechten geven aan om deze in te stellen als standaard wachtwoordmanager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Standaard maken", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Passkey verwijderen" + }, + "passkeyRemoved": { + "message": "Passkey verwijderd" + }, + "unassignedItemsBanner": { + "message": "Let op: Niet-toegewezen organisatie-items zijn niet langer zichtbaar in de weergave van alle kluisjes en zijn alleen toegankelijk via de Admin Console. Om deze items zichtbaar te maken, moet je ze toewijzen aan een collectie via de Admin Console." } } diff --git a/apps/browser/src/_locales/nn/messages.json b/apps/browser/src/_locales/nn/messages.json index 9e46b55f19..dc91c1e6a9 100644 --- a/apps/browser/src/_locales/nn/messages.json +++ b/apps/browser/src/_locales/nn/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-fill" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "Length" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Password" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Passphrase" }, @@ -338,6 +368,12 @@ "other": { "message": "Other" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Immediately" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Your new account has been created! You may now log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We've sent you an email with your master password hint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Ask to add an item if one isn't found in your vault." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, "notificationChangeSave": { "message": "Update" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "Default URI match detection", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Dark", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Invalid PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restore item" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Item restored" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/or/messages.json b/apps/browser/src/_locales/or/messages.json index 9e46b55f19..dc91c1e6a9 100644 --- a/apps/browser/src/_locales/or/messages.json +++ b/apps/browser/src/_locales/or/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-fill" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "Length" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Password" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Passphrase" }, @@ -338,6 +368,12 @@ "other": { "message": "Other" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Immediately" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Your new account has been created! You may now log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We've sent you an email with your master password hint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Ask to add an item if one isn't found in your vault." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, "notificationChangeSave": { "message": "Update" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "Default URI match detection", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Dark", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Invalid PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restore item" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Item restored" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json index e5ba19c244..98130de3be 100644 --- a/apps/browser/src/_locales/pl/messages.json +++ b/apps/browser/src/_locales/pl/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Autouzupełnianie" }, + "autoFillLogin": { + "message": "Autouzupełnianie logowania" + }, + "autoFillCard": { + "message": "Autouzupełnianie karty" + }, + "autoFillIdentity": { + "message": "Autouzupełnianie tożsamości" + }, "generatePasswordCopied": { "message": "Wygeneruj hasło (do schowka)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Brak pasujących danych logowania" }, + "noCards": { + "message": "Brak kart" + }, + "noIdentities": { + "message": "Brak tożsamości" + }, + "addLoginMenu": { + "message": "Dodaj dane logowania" + }, + "addCardMenu": { + "message": "Dodaj kartę" + }, + "addIdentityMenu": { + "message": "Dodaj tożsamość" + }, "unlockVaultMenu": { "message": "Odblokuj sejf" }, @@ -244,6 +268,9 @@ "length": { "message": "Długość" }, + "passwordMinLength": { + "message": "Minimalna długość hasła" + }, "uppercase": { "message": "Wielkie litery (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Hasło" }, + "totp": { + "message": "Sekret uwierzytelniania" + }, "passphrase": { "message": "Hasło wyrazowe" }, @@ -338,6 +368,12 @@ "other": { "message": "Inne" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Ustaw metodę odblokowania, aby zmienić czas blokowania sejfu." + }, + "unlockMethodNeeded": { + "message": "Ustaw metodę odblokowania w Ustawieniach" + }, "rateExtension": { "message": "Oceń rozszerzenie" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Zablokuj" }, + "lockAll": { + "message": "Zablokuj wszystko" + }, "immediately": { "message": "Natychmiast" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Konto zostało utworzone! Teraz możesz się zalogować." }, + "youSuccessfullyLoggedIn": { + "message": "Zalogowałeś się pomyślnie" + }, + "youMayCloseThisWindow": { + "message": "Możesz zamknąć to okno." + }, "masterPassSent": { "message": "Wysłaliśmy Tobie wiadomość e-mail z podpowiedzią do hasła głównego." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Nie można zastosować autouzupełnienia na tej stronie. Skopiuj i wklej informacje ręcznie." }, + "totpCaptureError": { + "message": "Nie można zeskanować kodu QR z bieżącej strony" + }, + "totpCaptureSuccess": { + "message": "Klucz uwierzytelniający został dodany" + }, + "totpCapture": { + "message": "Zeskanuj kod QR z bieżącej strony" + }, + "copyTOTP": { + "message": "Kopiuj klucz uwierzytelniający (TOTP)" + }, "loggedOut": { "message": "Wylogowano" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "\"Dodaj powiadomienia logowania\" automatycznie wyświetla monit o zapisanie nowych danych logowania do sejfu przy każdym pierwszym logowaniu." }, + "addLoginNotificationDescAlt": { + "message": "Poproś o dodanie elementu, jeśli nie zostanie znaleziony w Twoim sejfie. Dotyczy wszystkich zalogowanych kont." + }, "showCardsCurrentTab": { "message": "Pokaż karty na stronie głównej" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Poproś o aktualizację hasła danych logowania po wykryciu zmiany w witrynie." }, + "changedPasswordNotificationDescAlt": { + "message": "Poproś o aktualizację hasła, gdy zmiana zostanie wykryta na stronie. Dotyczy wszystkich zalogowanych kont." + }, + "enableUsePasskeys": { + "message": "Pytaj o zapisywanie i używanie passkey" + }, + "usePasskeysDesc": { + "message": "Pytaj o zapisywanie nowych passkey albo danych logowania z passkey w Twoim sejfie. Dotyczy wszystkich zalogowanych kont." + }, "notificationChangeDesc": { "message": "Czy chcesz zaktualizować to hasło w Bitwarden?" }, "notificationChangeSave": { "message": "Zaktualizuj" }, + "notificationUnlockDesc": { + "message": "Odblokuj swój sejf Bitwarden, aby ukończyć żądanie autouzupełniania." + }, + "notificationUnlock": { + "message": "Odblokuj" + }, "enableContextMenuItem": { "message": "Pokaż opcje menu kontekstowego" }, "contextMenuItemDesc": { "message": "Użyj drugiego kliknięcia, aby uzyskać dostęp do generowania haseł i pasujących danych logowania do witryny. " }, + "contextMenuItemDescAlt": { + "message": "Użyj drugiego kliknięcia, aby uzyskać dostęp do generowania haseł i pasujących danych logowania do witryny. Dotyczy wszystkich zalogowanych kont." + }, "defaultUriMatchDetection": { "message": "Domyślne wykrywanie dopasowania", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Zmień motyw kolorystyczny aplikacji." }, + "themeDescAlt": { + "message": "Zmień kolor motywu aplikacji. Dotyczy wszystkich zalogowanych kont." + }, "dark": { "message": "Ciemny", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Funkcja jest niedostępna" }, - "updateKey": { - "message": "Nie możesz używać tej funkcji, dopóki nie zaktualizujesz klucza szyfrowania." + "encryptionKeyMigrationRequired": { + "message": "Wymagana jest migracja klucza szyfrowania. Zaloguj się przez sejf internetowy, aby zaktualizować klucz szyfrowania." }, "premiumMembership": { "message": "Konto Premium" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB miejsca na zaszyfrowane załączniki." }, - "ppremiumSignUpTwoStep": { - "message": "Dodatkowe opcje logowania dwustopniowego, takie jak klucze YubiKey, FIDO U2F oraz Duo." + "premiumSignUpTwoStepOptions": { + "message": "Własnościowe opcje logowania dwuetapowego, takie jak YubiKey i Duo." }, "ppremiumSignUpReports": { "message": "Raporty bezpieczeństwa haseł, stanu konta i raporty wycieków danych, aby Twoje dane były bezpieczne." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Adresy URL środowiska zostały zapisane" }, + "showAutoFillMenuOnFormFields": { + "message": "Pokaż menu autouzupełniania na polach formularza", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Dotyczy wszystkich zalogowanych kont." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Wyłącz wbudowany w przeglądarkę menedżera haseł, aby uniknąć konfliktów." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edytuj ustawienia przeglądarki." + }, + "autofillOverlayVisibilityOff": { + "message": "Wył.", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Gdy pole jest zaznaczone", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Gdy wybrano ikonę autouzupełniania", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Włącz autouzupełnianie po załadowaniu strony" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Pokaż rozpoznawalny obraz obok danych logowania." }, + "faviconDescAlt": { + "message": "Pokaż rozpoznawalny obraz obok każdego logowania. Dotyczy wszystkich zalogowanych kont." + }, "enableBadgeCounter": { "message": "Pokaż licznik na ikonie" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Kod PIN jest nieprawidłowy." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Zbyt wiele nieprawidłowych prób wpisywania PIN. Wylogowywanie." + }, "unlockWithBiometrics": { "message": "Odblokuj danymi biometrycznymi" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Przywróć element" }, - "restoreItemConfirmation": { - "message": "Czy na pewno chcesz przywrócić ten element?" - }, "restoredItem": { "message": "Element został przywrócony" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Dane biometryczne przeglądarki nie są obsługiwane na tym urządzeniu." }, + "biometricsFailedTitle": { + "message": "Dane biometryczne są błędne" + }, + "biometricsFailedDesc": { + "message": "Dane biometryczne nie mogę być użyte, rozważ użycie hasła głównego lub wylogowanie. Jeśli się to powtarza, skontaktuj się z pomocą techniczną Bitwarden." + }, "nativeMessaginPermissionErrorTitle": { "message": "Uprawnienie nie zostało przyznane" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Zasada organizacji ma wpływ na opcję własności elementów." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Polityka organizacji zablokowała importowanie elementów do Twojego sejfu." + }, "excludedDomains": { "message": "Wykluczone domeny" }, "excludedDomainsDesc": { "message": "Aplikacja Bitwarden nie będzie proponować zapisywania danych logowania dla tych domen. Musisz odświeżyć stronę, aby zastosowywać zmiany." }, + "excludedDomainsDescAlt": { + "message": "Aplikacja Bitwarden nie będzie proponować zapisywania danych logowania dla tych domen dla wszystkich zalogowanych kont. Musisz odświeżyć stronę, aby zastosowywać zmiany." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ nie jest prawidłową nazwą domeny", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Wybierz folder..." }, - "ssoCompleteRegistration": { - "message": "W celu zakończenia jednokrotnego logowania SSO, ustaw hasło główne, aby uzyskać dostęp do sejfu." + "noFoldersFound": { + "message": "Nie znaleziono folderów", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Uprawnienia w Twojej organizacji zostały zaktualizowane, musisz teraz ustawić hasło główne.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Twoja organizacja wymaga ustawienia hasła głównego.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Wymagana weryfikacja", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Godziny" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Eksportowanie osobistego sejfu" }, - "exportingPersonalVaultDescription": { - "message": "Tylko osobiste elementy sejfu powiązane z adresem $EMAIL$ zostaną wyeksportowane. Elementy sejfu należące do organizacji nie będą uwzględnione.", + "exportingIndividualVaultDescription": { + "message": "Z sejfu zostaną wyeksportowane tylko elementy powiązane z $EMAIL$. Elementy z sejfu organizacji nie będą uwzględnione. Tylko informacje o elemencie zostaną wyeksportowane i nie będą zawierać powiązanych załączników.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Wersja serwera" }, - "selfHosted": { - "message": "Samodzielnie hostowany" + "selfHostedServer": { + "message": "samodzielnie hostowany" }, "thirdParty": { "message": "Inny dostawca" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Powiadomienie zostało wysłane na urządzenie." }, - "logInInitiated": { + "loginInitiated": { "message": "Logowanie rozpoczęte" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Jak autouzupełniać" }, "autofillSelectInfoWithCommand": { - "message": "Wybierz element z tej strony lub użyj skrótu: $COMMAND$", + "message": "Wybierz element z tego ekranu, użyj skrótu $COMMAND$ lub zobacz inne opcje w ustawieniach.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Wybierz element z tej strony lub ustaw skrót w ustawieniach." + "message": "Wybierz element z tego ekranu lub zobacz inne opcje w ustawieniach." }, "gotIt": { "message": "Rozumiem" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logowanie do" }, "opensInANewWindow": { "message": "Otwiera w nowym oknie" }, + "deviceApprovalRequired": { + "message": "Wymagane zatwierdzenie urządzenia. Wybierz opcję zatwierdzenia poniżej:" + }, + "rememberThisDevice": { + "message": "Zapamiętaj to urządzenie" + }, + "uncheckIfPublicDevice": { + "message": "Odznacz jeśli używasz publicznego urządzenia" + }, + "approveFromYourOtherDevice": { + "message": "Zatwierdź z innego twojego urządzenia" + }, + "requestAdminApproval": { + "message": "Poproś administratora o zatwierdzenie" + }, + "approveWithMasterPassword": { + "message": "Zatwierdź przy użyciu hasła głównego" + }, + "ssoIdentifierRequired": { + "message": "Identyfikator organizacji jest wymagany." + }, "eu": { "message": "UE", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Odmowa dostępu. Nie masz uprawnień do przeglądania tej strony." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Wyświetl" + }, + "accountSuccessfullyCreated": { + "message": "Konto pomyślnie utworzone!" + }, + "adminApprovalRequested": { + "message": "Poproszono administratora o zatwierdzenie" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Twoja prośba została wysłana do Twojego administratora." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Zostaniesz powiadomiony po zatwierdzeniu." + }, + "troubleLoggingIn": { + "message": "Problem z zalogowaniem?" + }, + "loginApproved": { + "message": "Logowanie zatwierdzone" + }, + "userEmailMissing": { + "message": "Brak adresu e-mail użytkownika" + }, + "deviceTrusted": { + "message": "Zaufano urządzeniu" + }, + "inputRequired": { + "message": "Dane wejściowe są wymagane." + }, + "required": { + "message": "wymagane" + }, + "search": { + "message": "Szukaj" + }, + "inputMinLength": { + "message": "Dane wejściowe muszą zawierać co najmniej $COUNT$ znaki(-ów).", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Dane wejściowe nie mogą przekraczać długości $COUNT$ znaków.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Następujące znaki są niedozwolone: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Wartość wejściowa musi wynosić co najmniej $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Wartość wejściowa nie może przekraczać $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "Co najmniej 1 e-mail jest nieprawidłowy" + }, + "inputTrimValidator": { + "message": "Tekst nie może zawierać tylko spacji.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Dane wejściowe nie są adresem e-mail." + }, + "fieldsNeedAttention": { + "message": "Pola powyżej wymagające Twojej uwagi: $COUNT$.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Wybierz --" + }, + "multiSelectPlaceholder": { + "message": "-- Pisz, aby filtrować --" + }, + "multiSelectLoading": { + "message": "Pobieranie opcji..." + }, + "multiSelectNotFound": { + "message": "Nie znaleziono żadnych pozycji" + }, + "multiSelectClearAll": { + "message": "Wyczyść wszystko" + }, + "plusNMore": { + "message": "+ $QUANTITY$ więcej", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Podmenu" + }, + "toggleCollapse": { + "message": "Zwiń/rozwiń", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Zaimportować Twoje dane do Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Ochronić Twoje dane LastPass i zaimportować do Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Zapisz jako niezaszyfrowany plik", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importuj do Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importowanie...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Dane pomyślnie zaimportowane!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Błąd podczas importowania. Sprawdź konsolę, aby uzyskać szczegółowe informacje.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Wystąpił błąd sieci podczas importu.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Domena aliasu" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Elementy z pytaniem o hasło głównege nie mogą być automatycznie wypełniane przy wczytywaniu strony. Automatyczne wypełnianie po wczytywania strony zostało wyłączone.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Automatyczne wypełnianie przy wczytywaniu strony zostało ustawione, aby używać ustawień domyślnych.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Wyłącz prośbę o podanie hasła głównego, aby edytować to pole", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Przejdź do treści" + }, + "bitwardenOverlayButton": { + "message": "Przycisk menu autouzupełniania Bitwarden", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Przełącz menu autouzupełniania Bitwarden", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Menu autouzupełniania Bitwarden", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Odblokuj swoje konto, aby wyświetlić pasujące elementy", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Odblokuj konto", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Wypełnij dane logowania dla", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Częściowa nazwa użytkownika", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Brak elementów do wyświetlenia", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Nowy element", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Dodaj nowy element do sejfu", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Dostępne menu autouzupełniania Bitwarden. Naciśnij przycisk strzałki w dół, aby wybrać.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Włącz" + }, + "ignore": { + "message": "Ignoruj" + }, + "importData": { + "message": "Importuj dane", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Błąd importu" + }, + "importErrorDesc": { + "message": "Wystąpił problem z danymi, które chcesz zaimportować. Rozwiąż poniższe problemy w Twoim pliku i spróbuj ponownie." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Rozwiąż poniższe błędy i spróbuj ponownie." + }, + "description": { + "message": "Opis" + }, + "importSuccess": { + "message": "Importowanie danych zakończone sukcesem" + }, + "importSuccessNumberOfItems": { + "message": "Zaimportowano elementów: $AMOUNT$.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Spróbuj ponownie" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Weryfikacja dla tej akcji jest wymagana. Ustaw kod PIN, aby kontynuować." + }, + "setPin": { + "message": "Ustaw PIN" + }, + "verifyWithBiometrics": { + "message": "Weryfikuj za pomocą biometrii" + }, + "awaitingConfirmation": { + "message": "Oczekiwanie na potwierdzenie" + }, + "couldNotCompleteBiometrics": { + "message": "Nie można ukończyć z użyciem biometrii." + }, + "needADifferentMethod": { + "message": "Potrzebujesz innej metody?" + }, + "useMasterPassword": { + "message": "Użyj hasła głównego" + }, + "usePin": { + "message": "Użyj PINu" + }, + "useBiometrics": { + "message": "Użyj biometrii" + }, + "enterVerificationCodeSentToEmail": { + "message": "Wpisz kod weryfikacyjny, który został wysłany na adres e-mail." + }, + "resendCode": { + "message": "Wysłać kod ponownie" + }, + "total": { + "message": "Łącznie" + }, + "importWarning": { + "message": "Importujesz dane do organizacji $ORGANIZATION$. Dane mogą zostać udostępnione członkom organizacji. Czy chcesz kontynuować?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Uruchom DUO i wykonaj kroki, aby zakończyć logowanie." + }, + "duoRequiredForAccount": { + "message": "Dwustopniowe logowanie Duo jest wymagane dla Twojego konta." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Otwórz rozszerzenie w nowym oknie, aby dokończyć logowanie." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Uruchom DUO" + }, + "importFormatError": { + "message": "Dane nie są poprawnie sformatowane. Sprawdź importowany plik i spróbuj ponownie." + }, + "importNothingError": { + "message": "Nic nie zostało zaimportowane." + }, + "importEncKeyError": { + "message": "Wystąpił błąd podczas odszyfrowywania pliku. Klucz szyfrowania nie pasuje do klucza użytego podczas eksportowania danych." + }, + "invalidFilePassword": { + "message": "Hasło do pliku jest nieprawidłowe. Użyj hasła które podano przy tworzeniu pliku eksportu." + }, + "importDestination": { + "message": "Miejsce docelowe importu" + }, + "learnAboutImportOptions": { + "message": "Dowiedz się więcej o opcjach importu" + }, + "selectImportFolder": { + "message": "Wybierz folder" + }, + "selectImportCollection": { + "message": "Wybierz kolekcję" + }, + "importTargetHint": { + "message": "Wybierz tę opcję, jeśli chcesz, aby zawartość zaimportowanego pliku została przeniesiona do $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Plik zawiera nieprzypisane elementy." + }, + "selectFormat": { + "message": "Wybierz format importowanego pliku" + }, + "selectImportFile": { + "message": "Wybierz plik do zaimportowania" + }, + "chooseFile": { + "message": "Wybierz plik" + }, + "noFileChosen": { + "message": "Nie wybrano pliku" + }, + "orCopyPasteFileContents": { + "message": "lub skopiuj/wklej treść pliku" + }, + "instructionsFor": { + "message": "Instrukcja dla $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Potwierdź importowanie sejfu" + }, + "confirmVaultImportDesc": { + "message": "Plik jest chroniony hasłem. Wprowadź hasło pliku, aby zaimportować dane." + }, + "confirmFilePassword": { + "message": "Potwierdź hasło pliku" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey nie zostanie skopiowany" + }, + "passkeyNotCopiedAlert": { + "message": "Passkey nie zostanie skopiowane do sklonowanego elementu. Czy chcesz kontynuować klonowanie tego elementu?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Weryfikacja jest wymagana przez stronę inicjującą. Ta funkcja nie jest jeszcze zaimplementowana dla kont bez hasła głównego." + }, + "logInWithPasskey": { + "message": "Zaloguj się za pomocą passkey?" + }, + "passkeyAlreadyExists": { + "message": "Passkey już istnieje dla tej aplikacji." + }, + "noPasskeysFoundForThisApplication": { + "message": "Nie znaleziono passkey'a dla tej aplikacji." + }, + "noMatchingPasskeyLogin": { + "message": "Nie masz pasujących danych logowania do tej witryny." + }, + "confirm": { + "message": "Potwierdź" + }, + "savePasskey": { + "message": "Zapisz passkey" + }, + "savePasskeyNewLogin": { + "message": "Zapisz passkey jako nowe dane logowania" + }, + "choosePasskey": { + "message": "Wybierz dane logowania do których przypisać passkey" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Zastąpić passkey?" + }, + "overwritePasskeyAlert": { + "message": "Ten element zawiera już passkey. Czy na pewno chcesz nadpisać bieżący passkey?" + }, + "featureNotSupported": { + "message": "Funkcja nie jest jeszcze obsługiwana" + }, + "yourPasskeyIsLocked": { + "message": "Wymagane uwierzytelnienie aby używać passkey. Sprawdź swoją tożsamość, aby kontynuować." + }, + "multifactorAuthenticationCancelled": { + "message": "Uwierzytelnianie wieloskładnikowe zostało anulowane" + }, + "noLastPassDataFound": { + "message": "Nie znaleziono danych LastPass" + }, + "incorrectUsernameOrPassword": { + "message": "Nieprawidłowa nazwa użytkownika lub hasło" + }, + "incorrectPassword": { + "message": "Błędne hasło" + }, + "incorrectCode": { + "message": "Błędny kod" + }, + "incorrectPin": { + "message": "Niepoprawny PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Uwierzytelnianie wieloskładnikowe nie powiodło się" + }, + "includeSharedFolders": { + "message": "Dołącz udostępnione foldery" + }, + "lastPassEmail": { + "message": "E-mail LastPass" + }, + "importingYourAccount": { + "message": "Importowanie konta..." + }, + "lastPassMFARequired": { + "message": "Wymagane jest uwierzytelnianie wieloskładnikowe LastPass" + }, + "lastPassMFADesc": { + "message": "Wprowadź jednorazowy kod z aplikacji uwierzytelniającej" + }, + "lastPassOOBDesc": { + "message": "Zatwierdź żądanie logowania w aplikacji uwierzytelniającej lub wprowadź jednorazowe hasło." + }, + "passcode": { + "message": "Kod" + }, + "lastPassMasterPassword": { + "message": "Hasło główne LastPass" + }, + "lastPassAuthRequired": { + "message": "Wymagane uwierzytelnianie LastPass" + }, + "awaitingSSO": { + "message": "Oczekiwanie na uwierzytelnianie SSO" + }, + "awaitingSSODesc": { + "message": "Kontynuuj logowanie przy użyciu danych firmowych." + }, + "seeDetailedInstructions": { + "message": "Zobacz szczegółowe instrukcje na naszej stronie pomocy pod adresem", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Importuj bezpośrednio z LastPass" + }, + "importFromCSV": { + "message": "Importuj z CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Spróbuj ponownie lub poszukaj wiadomości e-mail od LastPass, aby zweryfikować, że to Ty." + }, + "collection": { + "message": "Kolekcja" + }, + "lastPassYubikeyDesc": { + "message": "Włóż YubiKey powiązany z Twoim kontem LastPass do portu USB komputera, a następnie naciśnij jego przycisk." + }, + "switchAccount": { + "message": "Przełącz konto" + }, + "switchAccounts": { + "message": "Przełącz konta" + }, + "switchToAccount": { + "message": "Przełącz na konto" + }, + "activeAccount": { + "message": "Aktywne konto" + }, + "availableAccounts": { + "message": "Dostępne konta" + }, + "accountLimitReached": { + "message": "Limit kont został osiągnięty. Wyloguj się z konta, aby dodać inne." + }, + "active": { + "message": "aktywne" + }, + "locked": { + "message": "zablokowane" + }, + "unlocked": { + "message": "odblokowane" + }, + "server": { + "message": "serwer" + }, + "hostedAt": { + "message": "hostowany w" + }, + "useDeviceOrHardwareKey": { + "message": "Użyj swojego urządzenia lub klucza sprzętowego" + }, + "justOnce": { + "message": "Tylko raz" + }, + "alwaysForThisSite": { + "message": "Zawsze dla tej witryny" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ dodana do wykluczonych domen.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Popularne formaty", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Czy Bitwarden ma być domyślnym menadżerem haseł?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignorowanie tej opcji może spowodować konflikty pomiędzy menu autouzupełniania Bitwarden a przeglądarką.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Ustaw Bitwarden jako domyślny menedżer haseł", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Nie można ustawić Bitwarden jako domyślnego menedżera haseł", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Musisz przyznać Bitwarden uprawnienia do prywatności przeglądarki, aby ustawić go jako domyślnego menedżera haseł.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Ustaw jako domyślny", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Pomyślnie zapisano dane logowania!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Pomyślnie zaktualizowano dane logowania!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Błąd podczas zapisywania danych logowania. Sprawdź konsolę, aby uzyskać szczegóły.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Usuń passkey" + }, + "passkeyRemoved": { + "message": "Passkey został usunięty" + }, + "unassignedItemsBanner": { + "message": "Uwaga: Nieprzypisane elementy w organizacji nie są już widoczne w widoku Wszystkie sejfy i są dostępne tylko przez Konsolę Administracyjną. Przypisz te elementy do kolekcji z konsoli administracyjnej, aby były one widoczne." } } diff --git a/apps/browser/src/_locales/pt_BR/messages.json b/apps/browser/src/_locales/pt_BR/messages.json index abcfbeb9e6..6126679902 100644 --- a/apps/browser/src/_locales/pt_BR/messages.json +++ b/apps/browser/src/_locales/pt_BR/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Autopreencher" }, + "autoFillLogin": { + "message": "Preenchimento automático login" + }, + "autoFillCard": { + "message": "Preenchimento automático cartão" + }, + "autoFillIdentity": { + "message": "Preenchimento automático identidade" + }, "generatePasswordCopied": { "message": "Gerar Senha (copiada)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Sem credenciais correspondentes." }, + "noCards": { + "message": "Sem cartões" + }, + "noIdentities": { + "message": "Sem Identidade" + }, + "addLoginMenu": { + "message": "Adicionar login" + }, + "addCardMenu": { + "message": "Adicionar cartão" + }, + "addIdentityMenu": { + "message": "Adicionar identidade" + }, "unlockVaultMenu": { "message": "Desbloqueie seu cofre" }, @@ -244,6 +268,9 @@ "length": { "message": "Comprimento" }, + "passwordMinLength": { + "message": "Tamanho mínimo da senha" + }, "uppercase": { "message": "Maiúsculas (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Senha" }, + "totp": { + "message": "Senha do autenticador" + }, "passphrase": { "message": "Frase Secreta" }, @@ -338,6 +368,12 @@ "other": { "message": "Outros" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Configure um método de desbloqueio para alterar o tempo limite do cofre." + }, + "unlockMethodNeeded": { + "message": "Configure um método de desbloqueio nas Configurações" + }, "rateExtension": { "message": "Avaliar a Extensão" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Bloquear Agora" }, + "lockAll": { + "message": "Bloquear tudo" + }, "immediately": { "message": "Imediatamente" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "A sua nova conta foi criada! Agora você pode iniciar a sessão." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "Enviamos um e-mail com a dica da sua senha mestra." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Não é possível autopreencher o item selecionado nesta página. Em alternativa, copie e cole a informação." }, + "totpCaptureError": { + "message": "Não foi possível escanear o código QR a partir da página atual" + }, + "totpCaptureSuccess": { + "message": "Chave do autenticador adicionada" + }, + "totpCapture": { + "message": "Escaneie o código QR do autenticador na página atual" + }, + "copyTOTP": { + "message": "Copiar chave de Autenticação (TOTP)" + }, "loggedOut": { "message": "Sessão encerrada" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "A \"Notificação de Adicionar Login\" pede para salvar automaticamente novas logins para o seu cofre quando você inicia uma sessão em um site pela primeira vez." }, + "addLoginNotificationDescAlt": { + "message": "Pedir para adicionar um item se um não for encontrado no seu cofre. Aplica-se a todas as contas logadas." + }, "showCardsCurrentTab": { "message": "Mostrar cartões em páginas com guias." }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Peça para atualizar a senha de login quando uma mudança for detectada em um site." }, + "changedPasswordNotificationDescAlt": { + "message": "Pedir para atualizar a senha de uma credencial quando uma alteração for detectada em um site. Aplica-se a todas as contas conectadas." + }, + "enableUsePasskeys": { + "message": "Pedir para salvar e usar as senhas" + }, + "usePasskeysDesc": { + "message": "Pedir para salvar novas senhas ou entrar com as senhas armazenadas no seu cofre. Aplica-se a todas as contas conectadas." + }, "notificationChangeDesc": { "message": "Você quer atualizar esta senha no Bitwarden?" }, "notificationChangeSave": { "message": "Atualizar" }, + "notificationUnlockDesc": { + "message": "Desbloqueie o seu cofre do Bitwarden para concluir a solicitação de autopreenchimento." + }, + "notificationUnlock": { + "message": "Desbloquear" + }, "enableContextMenuItem": { "message": "Mostrar opções de menu de contexto" }, "contextMenuItemDesc": { "message": "Use um duplo clique para acessar a geração de usuários e senhas correspondentes para o site. " }, + "contextMenuItemDescAlt": { + "message": "Use um clique secundário para acessar a geração de senha e os logins correspondentes para o site. Aplica-se a todas as contas logadas." + }, "defaultUriMatchDetection": { "message": "Detecção de Correspondência de URI Padrão", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Altere o tema de cores do aplicativo." }, + "themeDescAlt": { + "message": "Altere o tema de cores da aplicação. Aplica-se para todas as contas conectadas." + }, "dark": { "message": "Escuro", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Funcionalidade Indisponível" }, - "updateKey": { - "message": "Você não pode usar este recurso, até você atualizar sua chave de criptografia." + "encryptionKeyMigrationRequired": { + "message": "Migração de chave de criptografia necessária. Faça login através do cofre web para atualizar sua chave de criptografia." }, "premiumMembership": { "message": "Assinatura Premium" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB de armazenamento de arquivos encriptados." }, - "ppremiumSignUpTwoStep": { - "message": "Opções de autenticação de duas etapas adicionais como YubiKey, FIDO U2F, e Duo." + "premiumSignUpTwoStepOptions": { + "message": "Opções de login em duas etapas como YubiKey e Duo." }, "ppremiumSignUpReports": { "message": "Higiene de senha, saúde da conta, e relatórios sobre violação de dados para manter o seu cofre seguro." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "As URLs do ambiente foram salvas." }, + "showAutoFillMenuOnFormFields": { + "message": "Exibir o menu de preenchimento automático nos campos do formulário", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Aplica-se a todas as contas conectadas." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Desative as configurações do gerenciador de senhas do seu navegador para evitar conflitos." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Editar configurações do navegador." + }, + "autofillOverlayVisibilityOff": { + "message": "Desligado", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Quando o campo for selecionado (em foco)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Quando o ícone de preenchimento automático for selecionado", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Ativar o Autopreenchimento ao Carregar a Página" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Mostrar uma imagem reconhecível ao lado de cada login." }, + "faviconDescAlt": { + "message": "Mostre uma imagem reconhecível ao lado de cada login. Aplica-se a todas as contas conectadas." + }, "enableBadgeCounter": { "message": "Mostrar contador de insígnia" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Código PIN inválido." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Desbloquear com a biometria" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restaurar Item" }, - "restoreItemConfirmation": { - "message": "Você tem certeza que deseja restaurar esse item?" - }, "restoredItem": { "message": "Item Restaurado" }, @@ -1483,10 +1592,10 @@ "message": "Definir Senha Mestra" }, "currentMasterPass": { - "message": "Current master password" + "message": "Senha mestra atual" }, "newMasterPass": { - "message": "New master password" + "message": "Nova senha mestra" }, "confirmNewMasterPass": { "message": "Confirme a nova senha mestre" @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "A biometria com o navegador não é suportada neste dispositivo." }, + "biometricsFailedTitle": { + "message": "Biometria falhou" + }, + "biometricsFailedDesc": { + "message": "A biometria não pode ser concluída, considere usar uma senha mestra ou desconectar. Se isso persistir, entre em contato com o suporte do Bitwarden." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permissão não fornecida" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Uma política de organização está afetando suas opções de propriedade." }, + "personalOwnershipPolicyInEffectImports": { + "message": "A política da organização bloqueou a importação de itens para o seu cofre." + }, "excludedDomains": { "message": "Domínios Excluídos" }, "excludedDomainsDesc": { "message": "O Bitwarden não irá pedir para salvar os detalhes de credencial para estes domínios. Você deve atualizar a página para que as alterações entrem em vigor." }, + "excludedDomainsDescAlt": { + "message": "O Bitwarden não irá pedir para salvar os detalhes de credencial para estes domínios. Você deve atualizar a página para que as alterações entrem em vigor." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ não é um domínio válido", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1872,7 +1993,7 @@ "message": "Sua Senha Mestra foi alterada recentemente por um administrador de sua organização. Para acessar o cofre, você precisa atualizá-la agora. O processo desconectará você da sessão atual, exigindo que você inicie a sessão novamente. Sessões ativas em outros dispositivos podem continuar ativas por até uma hora." }, "updateWeakMasterPasswordWarning": { - "message": "Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "A sua senha mestra não atende a uma ou mais das políticas da sua organização. Para acessar o cofre, você deve atualizar a sua senha mestra agora. O processo desconectará você da sessão atual, exigindo que você inicie a sessão novamente. Sessões ativas em outros dispositivos podem continuar ativas por até uma hora." }, "resetPasswordPolicyAutoEnroll": { "message": "Inscrição Automática" @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Selecionar pasta..." }, - "ssoCompleteRegistration": { - "message": "Para concluir o login com o SSO, defina uma senha mestra para acessar e proteger o seu cofre." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "As permissões da sua organização foram atualizadas, exigindo que você defina uma senha mestra.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Sua organização requer que você defina uma senha mestra.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Horas" @@ -1906,7 +2040,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is $HOURS$ hour(s) and $MINUTES$ minute(s). Your vault timeout action is set to $ACTION$.", + "message": "As políticas da sua organização estão afetando seu cofre tempo limite. Tempo limite máximo permitido para cofre é $HOURS$ hora(s) e $MINUTES$ minuto(s). A ação de tempo limite do seu cofre é definida como $ACTION$.", "placeholders": { "hours": { "content": "$1", @@ -1923,7 +2057,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "Your organization policies have set your vault timeout action to $ACTION$.", + "message": "As políticas da sua organização definiram a ação tempo limite do seu cofre para $ACTION$.", "placeholders": { "action": { "content": "$1", @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exportando o Cofre Pessoal" }, - "exportingPersonalVaultDescription": { - "message": "Apenas os itens pessoais do cofre associados com $EMAIL$ serão exportados. Os itens do cofre da organização não serão incluídos.", + "exportingIndividualVaultDescription": { + "message": "Apenas os itens individuais do cofre associados a $EMAIL$ serão exportados. Os itens do cofre da organização não serão incluídos. Apenas as informações de item do cofre serão exportadas e não incluirão anexos associados.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Versão do servidor" }, - "selfHosted": { - "message": "Auto-hospedado" + "selfHostedServer": { + "message": "auto-hospedado" }, "thirdParty": { "message": "Terceiros" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Uma notificação foi enviada para seu dispositivo." }, - "logInInitiated": { + "loginInitiated": { "message": "Login iniciado" }, "exposedMasterPassword": { @@ -2174,13 +2308,13 @@ } }, "autofillPageLoadPolicyActivated": { - "message": "Your organization policies have turned on auto-fill on page load." + "message": "Suas políticas de organização ativaram o autopreenchimento ao carregar a página." }, "howToAutofill": { "message": "Como autopreencher" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Selecione um item desta tela, use o atalho $COMMAND$, ou explore outras opções nas configurações.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Selecione um item desta página ou defina um atalho nas configurações." + "message": "Selecione um item desta tela ou explore outras opções nas configurações." }, "gotIt": { "message": "Entendi" @@ -2221,27 +2355,658 @@ } } }, - "region": { - "message": "Região" + "loggingInOn": { + "message": "Entrando em" }, "opensInANewWindow": { "message": "Abrir em uma nova janela" }, - "eu": { - "message": "EU", - "description": "European Union" + "deviceApprovalRequired": { + "message": "Aprovação do dispositivo necessária. Selecione uma opção de aprovação abaixo:" }, - "us": { - "message": "US", - "description": "United States" + "rememberThisDevice": { + "message": "Lembrar deste dispositivo" + }, + "uncheckIfPublicDevice": { + "message": "Desmarque se estiver usando um dispositivo público" + }, + "approveFromYourOtherDevice": { + "message": "Aprovar do seu outro dispositivo" + }, + "requestAdminApproval": { + "message": "Solicitar aprovação do administrador" + }, + "approveWithMasterPassword": { + "message": "Aprovar com senha mestra" + }, + "ssoIdentifierRequired": { + "message": "Identificador SSO da organização é necessário." + }, + "eu": { + "message": "Europa", + "description": "European Union" }, "accessDenied": { "message": "Acesso negado. Você não tem permissão para ver esta página." }, "general": { - "message": "General" + "message": "Gerais" }, "display": { - "message": "Display" + "message": "Exibir" + }, + "accountSuccessfullyCreated": { + "message": "Conta criada com sucesso!" + }, + "adminApprovalRequested": { + "message": "Aprovação do administrador necessária" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Seu pedido foi enviado para seu administrador." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Será notificado assim que for aprovado." + }, + "troubleLoggingIn": { + "message": "Problemas em efetuar login?" + }, + "loginApproved": { + "message": "Login aprovado" + }, + "userEmailMissing": { + "message": "E-mail do usuário ausente" + }, + "deviceTrusted": { + "message": "Dispositivo confiável" + }, + "inputRequired": { + "message": "Entrada necessária." + }, + "required": { + "message": "obrigatório" + }, + "search": { + "message": "Pesquisar" + }, + "inputMinLength": { + "message": "A entrada deve ter pelo menos $COUNT$ caracteres.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "A entrada não pode exceder $COUNT$ caracteres.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Os seguintes caracteres não são permitidos: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "O valor de entrada deve ser pelo menos $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "O valor de entrada não deve exceder $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 ou mais e-mails são inválidos" + }, + "inputTrimValidator": { + "message": "A entrada não pode conter somente espaços em branco.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "A entrada não é um endereço de e-mail." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ campo(s) acima precisam de sua atenção.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Selecione --" + }, + "multiSelectPlaceholder": { + "message": "-- Digite para filtrar --" + }, + "multiSelectLoading": { + "message": "Carrgando Opções..." + }, + "multiSelectNotFound": { + "message": "Nenhum item encontrado" + }, + "multiSelectClearAll": { + "message": "Limpar todos" + }, + "plusNMore": { + "message": "+ $QUANTITY$ mais", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Alternar colapso", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Importar seus dados para o Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Proteja seus dados do LastPass e importe para o Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Salvar como arquivo não criptografado", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importar para o Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importando...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Dados importados com sucesso!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Erro ao importar. Verifique o console para detalhes.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Erro de rede encontrado durante a importação.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias do domínio" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Os itens com confirmação de senha mestra não podem ser auto-preenchidos ao carregar a página. O carregamento da página será desativado.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Definir preenchimento automático ao carregar página para usar a configuração padrão.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Desative o prompt de senha mestra para editar este campo", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Ir para o conteúdo" + }, + "bitwardenOverlayButton": { + "message": "Botão de Menu de Autopreenchimento Bitwarden", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Alternar menu de autopreenchimento do Bitwarden", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Menu de autopreenchimento Bitwarden", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Desbloqueie sua conta para ver os logins correspondentes", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Desbloquear conta", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Preencha as credenciais para", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Nome parcial", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Nenhum item para mostrar", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Novo item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Adicionar novo item do cofre", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Menu de autopreenchimento do Bitwarden disponível. Pressione a tecla de seta para baixo para selecionar.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Ligar" + }, + "ignore": { + "message": "Ignorar" + }, + "importData": { + "message": "Importar dados", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Erro ao importar" + }, + "importErrorDesc": { + "message": "Houve um problema com os dados que você tentou importar. Por favor, resolva os erros listados abaixo em seu arquivo de origem e tente novamente." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolva os erros abaixo e tente novamente." + }, + "description": { + "message": "Descrição" + }, + "importSuccess": { + "message": "Dados importados com sucesso" + }, + "importSuccessNumberOfItems": { + "message": "Um total de $AMOUNT$ itens foram importados.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "Você está importando dados para $ORGANIZATION$. Seus dados podem ser compartilhados com membros desta organização. Você deseja continuar?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Os dados não estão formatados corretamente. Por favor, verifique o seu arquivo de importação e tente novamente." + }, + "importNothingError": { + "message": "Nada foi importado." + }, + "importEncKeyError": { + "message": "Erro ao descriptografar o arquivo exportado. Sua chave de criptografia não corresponde à chave de criptografia usada para exportar os dados." + }, + "invalidFilePassword": { + "message": "Senha do arquivo inválida, por favor informe a senha utilizada quando criou o arquivo de exportação." + }, + "importDestination": { + "message": "Destino da Importação" + }, + "learnAboutImportOptions": { + "message": "Saiba mais sobre suas opções de importação" + }, + "selectImportFolder": { + "message": "Selecione uma pasta" + }, + "selectImportCollection": { + "message": "Selecione uma coleção" + }, + "importTargetHint": { + "message": "Selecione esta opção se você quer o conteúdo do arquivo importado movido para $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Arquivo contém itens não atribuídos." + }, + "selectFormat": { + "message": "Selecione o formato do arquivo de importação" + }, + "selectImportFile": { + "message": "Selecione o arquivo de importação" + }, + "chooseFile": { + "message": "Selecionar Arquivo" + }, + "noFileChosen": { + "message": "Nenhum arquivo escolhido" + }, + "orCopyPasteFileContents": { + "message": "ou copie/cole o conteúdo do arquivo de importação" + }, + "instructionsFor": { + "message": "$NAME$ instruções", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirmar importação do cofre" + }, + "confirmVaultImportDesc": { + "message": "Este arquivo é protegido por senha. Por favor, digite a senha do arquivo para importar os dados." + }, + "confirmFilePassword": { + "message": "Confirmar senha do arquivo" + }, + "typePasskey": { + "message": "Chave de acesso" + }, + "passkeyNotCopied": { + "message": "A senha não será copiada" + }, + "passkeyNotCopiedAlert": { + "message": "A senha não será copiada para o item clonado. Deseja continuar clonando este item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verificação exigida pelo site inicial. Esse recurso ainda não está implementado para contas sem senha mestra." + }, + "logInWithPasskey": { + "message": "Fazer login com a senha?" + }, + "passkeyAlreadyExists": { + "message": "Uma senha já existe para este aplicativo." + }, + "noPasskeysFoundForThisApplication": { + "message": "Nenhuma senha encontrada para este aplicativo." + }, + "noMatchingPasskeyLogin": { + "message": "Você não tem um login correspondente para este site." + }, + "confirm": { + "message": "Confirmar" + }, + "savePasskey": { + "message": "Salvar senha" + }, + "savePasskeyNewLogin": { + "message": "Salvar senha como novo login" + }, + "choosePasskey": { + "message": "Escolha um login para salvar esta chave de acesso" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Sobrescrever senha?" + }, + "overwritePasskeyAlert": { + "message": "Este item já contém uma senha. Tem certeza que deseja substituir a senha de acesso atual?" + }, + "featureNotSupported": { + "message": "Recurso ainda não suportado" + }, + "yourPasskeyIsLocked": { + "message": "Autenticação necessária para usar a chave de acesso. Verifique sua identidade para continuar." + }, + "multifactorAuthenticationCancelled": { + "message": "Autenticação de múltiplos fatores cancelada" + }, + "noLastPassDataFound": { + "message": "Nenhum dado do LastPass encontrado" + }, + "incorrectUsernameOrPassword": { + "message": "Nome de usuário ou senha incorretos" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Falha na autenticação de múltiplos fatores" + }, + "includeSharedFolders": { + "message": "Incluir pastas compartilhadas" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importando sua conta..." + }, + "lastPassMFARequired": { + "message": "Requer autenticação multifatores do LastPass" + }, + "lastPassMFADesc": { + "message": "Digite sua senha única do app de autenticação" + }, + "lastPassOOBDesc": { + "message": "Aprove a solicitação de login no seu aplicativo de autenticação ou insira código unico." + }, + "passcode": { + "message": "Código" + }, + "lastPassMasterPassword": { + "message": "Senha mestra do LastPass" + }, + "lastPassAuthRequired": { + "message": "Autenticação do LastPass necessária" + }, + "awaitingSSO": { + "message": "Aguardando autenticação SSO" + }, + "awaitingSSODesc": { + "message": "Por favor, continue a iniciar a sessão usando as credenciais da sua empresa." + }, + "seeDetailedInstructions": { + "message": "Veja instruções detalhadas no nosso site de ajuda em", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Importar diretamente do LastPass" + }, + "importFromCSV": { + "message": "Importar de CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Tente novamente ou procure um e-mail do LastPass para verificar que é você." + }, + "collection": { + "message": "Coleção" + }, + "lastPassYubikeyDesc": { + "message": "Insira a YubiKey associada com a sua conta do LastPass na porta USB do seu computador, e depois toque no botão dele." + }, + "switchAccount": { + "message": "Trocar conta" + }, + "switchAccounts": { + "message": "Alternar conta" + }, + "switchToAccount": { + "message": "Mudar para conta" + }, + "activeAccount": { + "message": "Conta ativa" + }, + "availableAccounts": { + "message": "Contas disponíveis" + }, + "accountLimitReached": { + "message": "Limite de contas atingido. Termine a sessão de uma conta para adicionar outra." + }, + "active": { + "message": "ativo" + }, + "locked": { + "message": "bloqueado" + }, + "unlocked": { + "message": "desbloqueado" + }, + "server": { + "message": "servidor" + }, + "hostedAt": { + "message": "hospedado em" + }, + "useDeviceOrHardwareKey": { + "message": "Use o seu dispositivo ou chave de hardware" + }, + "justOnce": { + "message": "Somente uma vez" + }, + "alwaysForThisSite": { + "message": "Sempre para este site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ adicionado aos domínios excluídos.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Formatos comuns", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/pt_PT/messages.json b/apps/browser/src/_locales/pt_PT/messages.json index aa2f50b0e0..a904867d5f 100644 --- a/apps/browser/src/_locales/pt_PT/messages.json +++ b/apps/browser/src/_locales/pt_PT/messages.json @@ -89,7 +89,16 @@ "message": "Copiar código de segurança" }, "autoFill": { - "message": "Preenchimento automático" + "message": "Preencher automaticamente" + }, + "autoFillLogin": { + "message": "Preencher automaticamente credencial" + }, + "autoFillCard": { + "message": "Preencher automaticamente cartão" + }, + "autoFillIdentity": { + "message": "Preencher automaticamente identidade" }, "generatePasswordCopied": { "message": "Gerar palavra-passe (copiada)" @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Sem credenciais correspondentes" }, + "noCards": { + "message": "Sem cartões" + }, + "noIdentities": { + "message": "Sem identidades" + }, + "addLoginMenu": { + "message": "Adicionar credencial" + }, + "addCardMenu": { + "message": "Adicionar cartão" + }, + "addIdentityMenu": { + "message": "Adicionar identidade" + }, "unlockVaultMenu": { "message": "Desbloquear o cofre" }, @@ -122,7 +146,7 @@ "message": "Introduza o endereço de e-mail da sua conta para receber a dica da sua palavra-passe mestra." }, "getMasterPasswordHint": { - "message": "Obter dica da palavra-passe mestra" + "message": "Obter a dica da palavra-passe mestra" }, "continue": { "message": "Continuar" @@ -244,6 +268,9 @@ "length": { "message": "Comprimento" }, + "passwordMinLength": { + "message": "Comprimento mínimo da palavra-passe" + }, "uppercase": { "message": "Maiúsculas (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Palavra-passe" }, + "totp": { + "message": "Segredo de autenticação" + }, "passphrase": { "message": "Frase de acesso" }, @@ -338,6 +368,12 @@ "other": { "message": "Outros" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Configure um método de desbloqueio para alterar a ação de tempo limite do seu cofre." + }, + "unlockMethodNeeded": { + "message": "Definir um método de desbloqueio nas Definições" + }, "rateExtension": { "message": "Avaliar a extensão" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Bloquear agora" }, + "lockAll": { + "message": "Bloquear tudo" + }, "immediately": { "message": "Imediatamente" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "A sua nova conta foi criada! Pode agora iniciar sessão." }, + "youSuccessfullyLoggedIn": { + "message": "Iniciou sessão com sucesso" + }, + "youMayCloseThisWindow": { + "message": "Pode fechar esta janela" + }, "masterPassSent": { "message": "Enviámos-lhe um e-mail com a dica da sua palavra-passe mestra." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Não é possível preencher automaticamente o item selecionado nesta página. Em vez disso, copie e cole as informações." }, + "totpCaptureError": { + "message": "Não é possível digitalizar o código QR a partir da página Web atual" + }, + "totpCaptureSuccess": { + "message": "Chave de autenticação adicionada" + }, + "totpCapture": { + "message": "Digitalize o código QR do autenticador a partir da página Web atual" + }, + "copyTOTP": { + "message": "Copiar Chave de autenticação (TOTP)" + }, "loggedOut": { "message": "Sessão terminada" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Pedir para adicionar um item se não o encontrar no seu cofre." }, + "addLoginNotificationDescAlt": { + "message": "Pedir para adicionar um item se não for encontrado um no seu cofre. Aplica-se a todas as contas com sessão iniciada." + }, "showCardsCurrentTab": { "message": "Mostrar cartões na página Separador" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Pedir para atualizar a palavra-passe de uma credencial quando for detetada uma alteração num site." }, + "changedPasswordNotificationDescAlt": { + "message": "Pedir para atualizar a palavra-passe de um início de sessão quando for detetada uma alteração num site. Aplica-se a todas as contas com sessão iniciada." + }, + "enableUsePasskeys": { + "message": "Pedir para guardar e utilizar chaves de acesso" + }, + "usePasskeysDesc": { + "message": "Pedir para guardar novas chaves de acesso ou iniciar sessão com chaves de acesso armazenadas no seu cofre. Aplica-se a todas as contas com sessão iniciada." + }, "notificationChangeDesc": { "message": "Pretende atualizar esta palavra-passe no Bitwarden?" }, "notificationChangeSave": { "message": "Atualizar" }, + "notificationUnlockDesc": { + "message": "Desbloqueie o seu cofre Bitwarden para completar o pedido de preenchimento automático." + }, + "notificationUnlock": { + "message": "Desbloquear" + }, "enableContextMenuItem": { "message": "Mostrar opções do menu de contexto" }, "contextMenuItemDesc": { - "message": "Utilize um clique secundário para aceder à geração de palavras-passe e às credenciais correspondentes do site. " + "message": "Utilize um clique secundário para aceder à geração de palavras-passe e às credenciais correspondentes do site." + }, + "contextMenuItemDescAlt": { + "message": "Utilize um clique secundário para aceder ao gerador de palavras-passe e aos inícios de sessão correspondentes para o site. Aplica-se a todas as contas com sessão iniciada." }, "defaultUriMatchDetection": { "message": "Deteção de correspondência de URI predefinida", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Alterar o tema de cores da aplicação." }, + "themeDescAlt": { + "message": "Altere o tema de cores da aplicação. Aplica-se a todas as contas com sessão iniciada." + }, "dark": { "message": "Escuro", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Funcionalidade indisponível" }, - "updateKey": { - "message": "Não pode utilizar esta funcionalidade até atualizar a sua chave de encriptação." + "encryptionKeyMigrationRequired": { + "message": "É necessária a migração da chave de encriptação. Inicie sessão através do cofre Web para atualizar a sua chave de encriptação." }, "premiumMembership": { "message": "Subscrição Premium" @@ -772,7 +853,7 @@ "message": "Gerir subscrição" }, "premiumManageAlert": { - "message": "Pode gerir a sua subscrição no cofre Web bitwarden.com. Pretende visitar o site agora?" + "message": "Pode gerir a sua subscrição no cofre web em bitwarden.com. Pretende visitar o site agora?" }, "premiumRefresh": { "message": "Atualizar subscrição" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB de armazenamento encriptado para anexos de ficheiros." }, - "ppremiumSignUpTwoStep": { - "message": "Opções adicionais de verificação de dois passos, como YubiKey, FIDO U2F e Duo." + "premiumSignUpTwoStepOptions": { + "message": "Opções proprietárias de verificação de dois passos, como YubiKey e Duo." }, "ppremiumSignUpReports": { "message": "Higiene de palavras-passe, saúde da conta e relatórios de violação de dados para manter o seu cofre seguro." @@ -805,7 +886,7 @@ "message": "Adquirir Premium" }, "premiumPurchaseAlert": { - "message": "Pode adquirir uma subscrição Premium no cofre Web bitwarden.com. Pretende visitar o site agora?" + "message": "Pode adquirir uma subscrição Premium no cofre web em bitwarden.com. Pretende visitar o site agora?" }, "premiumCurrentMember": { "message": "É um membro Premium!" @@ -921,7 +1002,7 @@ "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "duoOrganizationDesc": { - "message": "Verifique com a Duo Security para a sua organização utilizando a aplicação Duo Mobile, SMS, chamada telefónica, ou chave de segurança U2F.", + "message": "Proteja a sua organização com a Duo Security utilizando a aplicação Duo Mobile, SMS, chamada telefónica ou uma chave de segurança U2F.", "description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated." }, "webAuthnTitle": { @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "URLs de ambiente guardados" }, + "showAutoFillMenuOnFormFields": { + "message": "Mostrar menu de preenchimento automático nos campos do formulário", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Aplica-se a todas as contas com sessão iniciada." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Desative as definições do gestor de palavras-passe incorporado do seu navegador para evitar conflitos." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Editar as definições do navegador." + }, + "autofillOverlayVisibilityOff": { + "message": "Desligado", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Se um campo estiver selecionado (em destaque)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Quando o ícone de preenchimento automático está selecionado", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Preencher automaticamente ao carregar a página" }, @@ -988,7 +1094,7 @@ "message": "Pode desativar o preenchimento automático ao carregar a página para itens de início de sessão individuais a partir da vista Editar do item." }, "itemAutoFillOnPageLoad": { - "message": "Preenchimento automático ao carregar a página (se configurado nas Opções)" + "message": "Preencher automaticamente ao carregar a página (se configurado nas Opções)" }, "autoFillOnPageLoadUseDefault": { "message": "Utilizar a predefinição" @@ -1006,7 +1112,7 @@ "message": "Abrir o cofre na barra lateral" }, "commandAutofillDesc": { - "message": "Preencher automaticamente o último início de sessão utilizado no site atual" + "message": "Preencher automaticamente com a última credencial utilizada no site atual" }, "commandGeneratePasswordDesc": { "message": "Gerar e copiar uma nova palavra-passe aleatória para a área de transferência" @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Mostrar uma imagem reconhecível junto a cada credencial." }, + "faviconDescAlt": { + "message": "Mostrar uma imagem reconhecível junto a cada credencial. Aplica-se a todas as contas com sessão iniciada." + }, "enableBadgeCounter": { "message": "Mostrar distintivo de contador" }, @@ -1083,7 +1192,7 @@ "message": "Ano de validade" }, "expiration": { - "message": "Expiração" + "message": "Prazo de validade" }, "january": { "message": "Janeiro" @@ -1270,7 +1379,7 @@ "message": "Esta palavra-passe não foi encontrada em nenhuma violação de dados conhecida. A sua utilização deve ser segura." }, "baseDomain": { - "message": "Domínio base", + "message": "Domínio de base", "description": "Domain name. Ex. website.com" }, "domainName": { @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Código PIN inválido." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Demasiadas tentativas de introdução de PINs inválidos. A terminar a sessão." + }, "unlockWithBiometrics": { "message": "Desbloquear com biometria" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restaurar item" }, - "restoreItemConfirmation": { - "message": "Tem a certeza de que pretende restaurar este item?" - }, "restoredItem": { "message": "Item restaurado" }, @@ -1480,7 +1589,7 @@ } }, "setMasterPassword": { - "message": "Definir palavra-passe mestra" + "message": "Definir a palavra-passe mestra" }, "currentMasterPass": { "message": "Palavra-passe mestra atual" @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "A biometria do navegador não é suportada neste dispositivo." }, + "biometricsFailedTitle": { + "message": "Falha na biometria" + }, + "biometricsFailedDesc": { + "message": "A biometria não pode ser concluída, considere a possibilidade de utilizar uma palavra-passe mestra ou terminar a sessão. Se o problema persistir, contacte a assistência do Bitwarden." + }, "nativeMessaginPermissionErrorTitle": { "message": "Autorização não concedida" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Uma política da organização está a afetar as suas opções de propriedade." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Uma política da organização bloqueou a importação de itens para o seu cofre individual." + }, "excludedDomains": { "message": "Domínios excluídos" }, "excludedDomainsDesc": { "message": "O Bitwarden não pedirá para guardar os detalhes de início de sessão destes domínios. É necessário atualizar a página para que as alterações tenham efeito." }, + "excludedDomainsDescAlt": { + "message": "O Bitwarden não pedirá para guardar os detalhes de início de sessão destes domínios para todas as contas com sessão iniciada. É necessário atualizar a página para que as alterações tenham efeito." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ não é um domínio válido", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1725,7 +1846,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Data de validade" + "message": "Prazo de validade" }, "expirationDateDesc": { "message": "Se definido, o acesso a este Send expirará na data e hora especificadas.", @@ -1827,7 +1948,7 @@ "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'" }, "expirationDateIsInvalid": { - "message": "São necessárias uma data e uma hora de validade." + "message": "O prazo de validade fornecido não é válido." }, "deletionDateIsInvalid": { "message": "A data de eliminação fornecida não é válida." @@ -1866,7 +1987,7 @@ "message": "Palavra-passe mestra atualizada" }, "updateMasterPassword": { - "message": "Atualizar palavra-passe mestra" + "message": "Atualizar a palavra-passe mestra" }, "updateMasterPasswordWarning": { "message": "A sua palavra-passe mestra foi recentemente alterada por um administrador da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Ao prosseguir, terminará a sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora." @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Selecionar pasta..." }, - "ssoCompleteRegistration": { - "message": "Para concluir o início de sessão com SSO, por favor, defina uma palavra-passe mestra para aceder e proteger o seu cofre." + "noFoldersFound": { + "message": "Nenhuma pasta encontrada", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "As permissões da sua organização foram atualizadas, exigindo a definição de uma palavra-passe mestra.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "A sua organização exige a definição de uma palavra-passe mestra.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verificação necessária", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Horas" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "A exportar o cofre pessoal" }, - "exportingPersonalVaultDescription": { - "message": "Apenas os itens do cofre pessoal associado a $EMAIL$ serão exportados. Os itens do cofre da organização não serão incluídos.", + "exportingIndividualVaultDescription": { + "message": "Apenas os itens de cofre individuais associados a $EMAIL$ serão exportados. Os itens do cofre da organização não serão incluídos. Apenas serão exportadas as informações do item do cofre e não serão incluídos os anexos associados.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Versão do servidor" }, - "selfHosted": { - "message": "Auto-hospedado" + "selfHostedServer": { + "message": "auto-hospedado" }, "thirdParty": { "message": "De terceiros" @@ -2123,7 +2257,7 @@ "message": "Iniciar sessão com o dispositivo" }, "loginWithDeviceEnabledInfo": { - "message": "O início de sessão com o dispositivo deve ser ativado nas definições da aplicação Bitwarden. Necessita de outra opção?" + "message": "O início de sessão com o dispositivo deve ser ativado nas definições da aplicação Bitwarden. Precisa de outra opção?" }, "fingerprintPhraseHeader": { "message": "Frase de impressão digital" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Foi enviada uma notificação para o seu dispositivo." }, - "logInInitiated": { + "loginInitiated": { "message": "A preparar o início de sessão" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Como preencher automaticamente" }, "autofillSelectInfoWithCommand": { - "message": "Selecione um item desta página ou utilize o atalho: $COMMAND$", + "message": "Selecione um item a partir deste ecrã, utilize o atalho $COMMAND$ ou explore outras opções nas definições.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Selecione um item desta página ou defina um atalho nas definições." + "message": "Selecione um item a partir deste ecrã ou explore outras opções nas definições." }, "gotIt": { "message": "Percebido" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Região" + "loggingInOn": { + "message": "A iniciar sessão em" }, "opensInANewWindow": { "message": "Abrir numa nova janela" }, + "deviceApprovalRequired": { + "message": "É necessária a aprovação do dispositivo. Selecione uma opção de aprovação abaixo:" + }, + "rememberThisDevice": { + "message": "Lembrar este dispositivo" + }, + "uncheckIfPublicDevice": { + "message": "Desmarcar se estiver a utilizar um dispositivo público" + }, + "approveFromYourOtherDevice": { + "message": "Aprovar a partir do seu outro dispositivo" + }, + "requestAdminApproval": { + "message": "Pedir aprovação do administrador" + }, + "approveWithMasterPassword": { + "message": "Aprovar com a palavra-passe mestra" + }, + "ssoIdentifierRequired": { + "message": "É necessário o identificador de SSO da organização." + }, "eu": { "message": "UE", "description": "European Union" }, - "us": { - "message": "EUA", - "description": "United States" - }, "accessDenied": { "message": "Acesso negado. Não tem permissão para visualizar esta página." }, @@ -2242,6 +2393,620 @@ "message": "Geral" }, "display": { - "message": "Display" + "message": "Ecrã" + }, + "accountSuccessfullyCreated": { + "message": "Conta criada com sucesso!" + }, + "adminApprovalRequested": { + "message": "Aprovação do administrador pedida" + }, + "adminApprovalRequestSentToAdmins": { + "message": "O seu pedido foi enviado ao seu administrador." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Será notificado quando for aprovado." + }, + "troubleLoggingIn": { + "message": "Problemas a iniciar sessão?" + }, + "loginApproved": { + "message": "Início de sessão aprovado" + }, + "userEmailMissing": { + "message": "E-mail do utilizador em falta" + }, + "deviceTrusted": { + "message": "Dispositivo de confiança" + }, + "inputRequired": { + "message": "Campo necessário." + }, + "required": { + "message": "necessário" + }, + "search": { + "message": "Procurar" + }, + "inputMinLength": { + "message": "O campo deve ter pelo menos $COUNT$ caracteres.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "O campo não pode exceder os $COUNT$ caracteres de comprimento.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Não são permitidos os seguintes caracteres: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "O valor do campo tem de ser, pelo menos, $MIN$ caracteres.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "O valor do campo não pode exceder os $MAX$ caracteres.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 ou mais e-mails são inválidos" + }, + "inputTrimValidator": { + "message": "O campo não deve conter apenas espaços em branco.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "O campo não é um endereço de e-mail." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ campo(s) acima precisa(m) da sua atenção.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Selecionar --" + }, + "multiSelectPlaceholder": { + "message": "-- Escreva para filtrar --" + }, + "multiSelectLoading": { + "message": "A recuperar opções..." + }, + "multiSelectNotFound": { + "message": "Nenhum item encontrado" + }, + "multiSelectClearAll": { + "message": "Limpar tudo" + }, + "plusNMore": { + "message": "+ $QUANTITY$", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Alternar colapso", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Importar os seus dados para o Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Proteger os seus dados LastPass e importar para o Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Guardar como ficheiro não encriptado", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importar para o Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "A importar...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Dados importados com sucesso!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Erro de importação. Verifique a consola para obter detalhes.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Erro de rede encontrado durante a importação.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias de domínio" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Os itens que voltem a pedir a palavra-passe mestra não podem ser preenchidos automaticamente no carregamento da página. Preenchimento automático no carregamento da página desativado.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Preencher automaticamente ao carregar a página definido para utilizar a predefinição.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Desativar o pedido para reintroduzir a palavra-passe mestra para editar este campo", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Avançar para o conteúdo" + }, + "bitwardenOverlayButton": { + "message": "Botão de menu de preenchimento automático Bitwarden", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Alternar o menu de preenchimento automático do Bitwarden", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Menu de preenchimento automático do Bitwarden", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Desbloqueie a sua conta para ver as credenciais correspondentes", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Desbloquear a conta", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Preencher as credenciais para", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Nome de utilizador parcial", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Nenhum item para mostrar", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Novo item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Adicionar novo item do cofre", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Menu de preenchimento automático Bitwarden disponível. Prima a tecla de seta para baixo para selecionar.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Ativar" + }, + "ignore": { + "message": "Ignorar" + }, + "importData": { + "message": "Importar dados", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Erro de importação" + }, + "importErrorDesc": { + "message": "Ocorreu um problema com os dados que tentou importar. Por favor, resolva os erros indicados abaixo no seu ficheiro de origem e tente novamente." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolva os erros abaixo e tente novamente." + }, + "description": { + "message": "Descrição" + }, + "importSuccess": { + "message": "Dados importados com sucesso" + }, + "importSuccessNumberOfItems": { + "message": "Foi importado um total de $AMOUNT$ itens.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Tentar novamente" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "É necessária uma verificação para esta ação. Defina um PIN para continuar." + }, + "setPin": { + "message": "Definir PIN" + }, + "verifyWithBiometrics": { + "message": "Verificar com biometria" + }, + "awaitingConfirmation": { + "message": "A aguardar confirmação" + }, + "couldNotCompleteBiometrics": { + "message": "Não foi possível concluir a biometria." + }, + "needADifferentMethod": { + "message": "Precisa de um método diferente?" + }, + "useMasterPassword": { + "message": "Utilizar a palavra-passe mestra" + }, + "usePin": { + "message": "Utilizar PIN" + }, + "useBiometrics": { + "message": "Utilizar biometria" + }, + "enterVerificationCodeSentToEmail": { + "message": "Introduza o código de verificação que foi enviado para o seu e-mail." + }, + "resendCode": { + "message": "Reenviar código" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "Está a importar dados para a $ORGANIZATION$. Os seus dados podem ser partilhados com membros desta organização. Deseja prosseguir?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Inicie o Duo e siga os passos para concluir o início de sessão." + }, + "duoRequiredForAccount": { + "message": "A verificação de dois passos Duo é necessária para a sua conta." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Abra a extensão para concluir o início de sessão." + }, + "popoutExtension": { + "message": "Extensão popout" + }, + "launchDuo": { + "message": "Iniciar o Duo" + }, + "importFormatError": { + "message": "Os dados não estão formatados corretamente. Por favor, verifique o seu ficheiro de importação e tente novamente." + }, + "importNothingError": { + "message": "Nada foi importado." + }, + "importEncKeyError": { + "message": "Erro ao desencriptar o ficheiro exportado. A sua chave de encriptação não corresponde à chave de encriptação utilizada para exportar os dados." + }, + "invalidFilePassword": { + "message": "Palavra-passe de ficheiro inválida, utilize a palavra-passe que introduziu quando criou o ficheiro de exportação." + }, + "importDestination": { + "message": "Destino da importação" + }, + "learnAboutImportOptions": { + "message": "Saiba mais sobre as suas opções de importação" + }, + "selectImportFolder": { + "message": "Selecionar uma pasta" + }, + "selectImportCollection": { + "message": "Selecionar uma coleção" + }, + "importTargetHint": { + "message": "Selecione esta opção se pretender que o conteúdo do ficheiro importado seja transferido para $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "O ficheiro contém itens não atribuídos." + }, + "selectFormat": { + "message": "Selecione o formato do ficheiro a importar" + }, + "selectImportFile": { + "message": "Selecione o ficheiro a importar" + }, + "chooseFile": { + "message": "Escolher ficheiro" + }, + "noFileChosen": { + "message": "Nenhum ficheiro escolhido" + }, + "orCopyPasteFileContents": { + "message": "ou faça copiar/colar o conteúdo do ficheiro de importação" + }, + "instructionsFor": { + "message": "Instruções para $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirmar a importação do cofre" + }, + "confirmVaultImportDesc": { + "message": "Este ficheiro está protegido por palavra-passe. Introduza a palavra-passe do ficheiro para importar os dados." + }, + "confirmFilePassword": { + "message": "Confirmar a palavra-passe do ficheiro" + }, + "typePasskey": { + "message": "Chave de acesso" + }, + "passkeyNotCopied": { + "message": "A chave de acesso não será copiada" + }, + "passkeyNotCopiedAlert": { + "message": "A chave de acesso não será copiada para o item duplicado. Pretende ainda assim duplicar este item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verificação exigida pelo site inicial. Esta funcionalidade ainda não está implementada para contas sem palavra-passe mestra." + }, + "logInWithPasskey": { + "message": "Iniciar sessão com a chave de acesso?" + }, + "passkeyAlreadyExists": { + "message": "Já existe uma chave de acesso para esta aplicação." + }, + "noPasskeysFoundForThisApplication": { + "message": "Não foram encontradas chaves de acesso para esta aplicação." + }, + "noMatchingPasskeyLogin": { + "message": "Não tem uma credencial correspondente para este site." + }, + "confirm": { + "message": "Confirmar" + }, + "savePasskey": { + "message": "Guardar a chave de acesso" + }, + "savePasskeyNewLogin": { + "message": "Guardar a chave de acesso como uma nova credencial" + }, + "choosePasskey": { + "message": "Escolha uma credencial para guardar esta chave de acesso" + }, + "passkeyItem": { + "message": "Item da chave de acesso" + }, + "overwritePasskey": { + "message": "Substituir chave de acesso?" + }, + "overwritePasskeyAlert": { + "message": "Este item já contém uma chave de acesso. Tem a certeza de que pretende substituir a chave de acesso atual?" + }, + "featureNotSupported": { + "message": "Funcionalidade ainda não suportada" + }, + "yourPasskeyIsLocked": { + "message": "É necessária a autenticação para utilizar a chave de acesso. Verifique a sua identidade para continuar." + }, + "multifactorAuthenticationCancelled": { + "message": "Autenticação multifator cancelada" + }, + "noLastPassDataFound": { + "message": "Não foram encontrados dados do LastPass" + }, + "incorrectUsernameOrPassword": { + "message": "Nome de utilizador ou palavra-passe incorretos" + }, + "incorrectPassword": { + "message": "Palavra-passe incorreta" + }, + "incorrectCode": { + "message": "Código incorreto" + }, + "incorrectPin": { + "message": "PIN incorreto" + }, + "multifactorAuthenticationFailed": { + "message": "Falha na autenticação multifator" + }, + "includeSharedFolders": { + "message": "Incluir pastas partilhadas" + }, + "lastPassEmail": { + "message": "E-mail do LastPass" + }, + "importingYourAccount": { + "message": "A importar a sua conta..." + }, + "lastPassMFARequired": { + "message": "Autenticação multifator do LastPass necessária" + }, + "lastPassMFADesc": { + "message": "Introduza o seu código de acesso único a partir da sua aplicação de autenticação" + }, + "lastPassOOBDesc": { + "message": "Aprove o pedido de início de sessão na sua aplicação de autenticação ou introduza um código de acesso único." + }, + "passcode": { + "message": "Código de acesso" + }, + "lastPassMasterPassword": { + "message": "Palavra-passe mestra do LastPass" + }, + "lastPassAuthRequired": { + "message": "Autenticação do LastPass necessária" + }, + "awaitingSSO": { + "message": "A aguardar autenticação SSO" + }, + "awaitingSSODesc": { + "message": "Por favor, continue a iniciar sessão utilizando as credenciais da sua empresa." + }, + "seeDetailedInstructions": { + "message": "Consulte as instruções detalhadas no nosso site de ajuda em", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Importar diretamente do LastPass" + }, + "importFromCSV": { + "message": "Importar de CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Tente novamente ou procure um e-mail do LastPass para verificar a sua identidade." + }, + "collection": { + "message": "Coleção" + }, + "lastPassYubikeyDesc": { + "message": "Insira a YubiKey associada à sua conta LastPass na porta USB do seu computador e, em seguida, toque no respetivo botão." + }, + "switchAccount": { + "message": "Mudar de conta" + }, + "switchAccounts": { + "message": "Mudar de conta" + }, + "switchToAccount": { + "message": "Mudar para conta" + }, + "activeAccount": { + "message": "Conta ativa" + }, + "availableAccounts": { + "message": "Contas disponíveis" + }, + "accountLimitReached": { + "message": "Limite de contas atingido. Termine a sessão de uma das contas para adicionar outra." + }, + "active": { + "message": "ativa" + }, + "locked": { + "message": "bloqueado" + }, + "unlocked": { + "message": "desbloqueado" + }, + "server": { + "message": "servidor" + }, + "hostedAt": { + "message": "hospedado em" + }, + "useDeviceOrHardwareKey": { + "message": "Utilize o seu dispositivo ou chave de hardware" + }, + "justOnce": { + "message": "Apenas uma vez" + }, + "alwaysForThisSite": { + "message": "Sempre para este site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ adicionado aos domínios excluídos.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Formatos comuns", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Tornar o Bitwarden o seu gestor de palavras-passe predefinido?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignorar esta opção pode causar conflitos entre o menu de preenchimento automático do Bitwarden e o do seu navegador.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Tornar o Bitwarden o seu gestor de palavras-passe predefinido", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Não é possível definir o Bitwarden como o gestor de palavras-passe predefinido", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "É necessário conceder permissões de privacidade do navegador ao Bitwarden para defini-lo como o gestor de palavras-passe predefinido.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Tornar predefinido", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credenciais guardadas com sucesso!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credenciais atualizadas com sucesso!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Erro ao guardar as credenciais. Verifique a consola para obter detalhes.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remover chave de acesso" + }, + "passkeyRemoved": { + "message": "Chave de acesso removida" + }, + "unassignedItemsBanner": { + "message": "Aviso: Os itens da organização não atribuídos já não são visíveis na vista Todos os cofres e só são acessíveis através da consola de administração. Atribua estes itens a uma coleção a partir da Consola de administração para os tornar visíveis." } } diff --git a/apps/browser/src/_locales/ro/messages.json b/apps/browser/src/_locales/ro/messages.json index 5a8879a4bc..3e554f4d68 100644 --- a/apps/browser/src/_locales/ro/messages.json +++ b/apps/browser/src/_locales/ro/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-completare" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generare parolă (s-a copiat)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Nu există potrivire de autentificări" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Deblocați-vă seiful" }, @@ -196,13 +220,13 @@ "message": "Ajutor și feedback" }, "helpCenter": { - "message": "Bitwarden Help center" + "message": "Centrul de Ajutor Bitwarden" }, "communityForums": { - "message": "Explore Bitwarden community forums" + "message": "Explorați forumurile comunității Bitwarden" }, "contactSupport": { - "message": "Contact Bitwarden support" + "message": "Contactați asistența Bitwarden" }, "sync": { "message": "Sincronizare" @@ -244,6 +268,9 @@ "length": { "message": "Lungime" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Litere mari (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Parolă" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Frază de acces" }, @@ -338,6 +368,12 @@ "other": { "message": "Altele" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Configurați metoda de deblocare care să schimbe acțiunea de expirare a seifului." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Evaluare extensie" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Blocare imediată" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Imediat" }, @@ -439,7 +478,7 @@ "message": "Este necesară rescrierea parolei principale." }, "masterPasswordMinlength": { - "message": "Master password must be at least $VALUE$ characters long.", + "message": "Parola principală trebuie să aibă cel puțin $VALUE$ caractere.", "description": "The Master Password must be at least a specific number of characters long.", "placeholders": { "value": { @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Noul dvs. cont a fost creat! Acum vă puteți autentifica." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "V-am trimis un e-mail cu indiciul parolei principale." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Nu se pot auto-completa datele de conectare pentru această pagină. În schimb, puteți copia și lipi aceste date." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Deconectat" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Solicitați adăugarea unui element dacă nu se găsește unul în seif." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Afișați cardurile pe pagina Filă" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Solicitați actualizarea unei parole de autentificare atunci când este detectată o modificare pe un site web." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Doriți să actualizați această parolă în Bitwarden?" }, "notificationChangeSave": { "message": "Actualizare" }, + "notificationUnlockDesc": { + "message": "Deblocați seiful Bitwarden pentru a finaliza solicitarea de auto-completare." + }, + "notificationUnlock": { + "message": "Deblocare" + }, "enableContextMenuItem": { "message": "Afișați opțiunile meniului contextual" }, "contextMenuItemDesc": { "message": "Utilizați un clic secundar pentru a accesa generarea de parole și conectările potrivite pentru site-ul web." }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "Detectare implicită a potrivirii URI", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Schimbă tema de culori a aplicației." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Întunecat", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Funcție indisponibilă" }, - "updateKey": { - "message": "Nu puteți utiliza această caracteristică înainte de a actualiza cheia de criptare." + "encryptionKeyMigrationRequired": { + "message": "Este necesară migrarea cheilor de criptare. Autentificați-vă prin intermediul seifului web pentru a vă actualiza cheia de criptare." }, "premiumMembership": { "message": "Abonament Premium" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB spațiu de stocare criptat pentru atașamente de fișiere." }, - "ppremiumSignUpTwoStep": { - "message": "Opțiuni adiționale de conectare în două etape, cum ar fi YubiKey, FIDO U2F și Duo." + "premiumSignUpTwoStepOptions": { + "message": "Opțiuni brevetate de conectare cu doi factori, cum ar fi YubiKey și Duo." }, "ppremiumSignUpReports": { "message": "Rapoarte privind igiena parolelor, sănătatea contului și breșele de date pentru a vă păstra seiful în siguranță." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "URL-urile mediului au fost salvate" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Completare automată la încărcarea paginii" }, @@ -976,10 +1082,10 @@ "message": "Dacă se detectează un formular de autentificare, completați-l automat la încărcarea paginii web." }, "experimentalFeature": { - "message": "Compromised or untrusted websites can exploit auto-fill on page load." + "message": "Site-urile web compromise sau nesigure pot profita de auto-completarea la încărcare." }, "learnMoreAboutAutofill": { - "message": "Learn more about auto-fill" + "message": "Mai multe informații despre auto-completare" }, "defaultAutoFillOnPageLoad": { "message": "Setarea implicită de completare automată pentru articole de conectare" @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Afișează o imagine ușor de recunoscut lângă fiecare autentificare." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Afișați contorul de insigne" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Codul PIN este invalid." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Deblocare folosind biometria" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restabilire articol" }, - "restoreItemConfirmation": { - "message": "Sigur doriți să restabiliți acest articol?" - }, "restoredItem": { "message": "Articol restabilit" }, @@ -1462,16 +1571,16 @@ "message": "Articolul s-a completat automat " }, "insecurePageWarning": { - "message": "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." + "message": "Avertisment: Acesta este un site HTTP nesecurizat. Orice informație transmisă poate fi vizualizată și modificată de alte persoane. Această autentificare a fost salvată inițial pe un site securizat (HTTPS)." }, "insecurePageWarningFillPrompt": { - "message": "Do you still wish to fill this login?" + "message": "Încă mai doriți să completați acest login?" }, "autofillIframeWarning": { - "message": "The form is hosted by a different domain than the URI of your saved login. Choose OK to auto-fill anyway, or Cancel to stop." + "message": "Formularul este găzduit pe un alt domeniu decât adresa URI de autentificare salvată. Alegeți OK pentru completarea automată oricum sau Anulare pentru a opri." }, "autofillIframeWarningTip": { - "message": "To prevent this warning in the future, save this URI, $HOSTNAME$, to your Bitwarden login item for this site.", + "message": "Pe viitor, pentru a evita acest avertisment, înregistrați acest URI, $HOSTNAME$, în login-ul Bitwarden pentru acest site.", "placeholders": { "hostname": { "content": "$1", @@ -1483,13 +1592,13 @@ "message": "Setare parolă principală" }, "currentMasterPass": { - "message": "Current master password" + "message": "Parola principală actuală" }, "newMasterPass": { - "message": "New master password" + "message": "Noua parolă principală" }, "confirmNewMasterPass": { - "message": "Confirm new master password" + "message": "Confirmați noua parolă principală" }, "masterPasswordPolicyInEffect": { "message": "Una sau mai multe politici ale organizației necesită ca parola principală să îndeplinească următoarele cerințe:" @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Biometria browserului nu este acceptată pe acest dispozitiv." }, + "biometricsFailedTitle": { + "message": "Biometrica a eșuat" + }, + "biometricsFailedDesc": { + "message": "Verificarea biometrică nu poate fi finalizată. Încercați parola principală sau deconectați-vă. Dacă problema persistă, vă rugăm să contactați serviciul de asistență Bitwarden." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permisiunea nu a fost furnizată" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "O politică de organizație vă afectează opțiunile de proprietate." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Domenii excluse" }, "excludedDomainsDesc": { "message": "Bitwarden nu va cere să salveze detaliile de conectare pentru aceste domenii. Trebuie să reîmprospătați pagina pentru ca modificările să intre în vigoare." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ nu este un domeniu valid", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1872,7 +1993,7 @@ "message": "Parola principală a fost schimbată recent de către un administrator din organizație. Pentru a accesa seiful, trebuie să o actualizați acum. Continuarea vă va deconecta de la sesiunea curentă, cerându-vă să vă conectați din nou. Sesiunile active de pe alte dispozitive pot continua să rămână active timp de până la o oră." }, "updateWeakMasterPasswordWarning": { - "message": "Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Parola dvs. principală nu respectă una sau mai multe politici ale organizației. Pentru a accesa seiful, parola principală trebuie actualizată acum. În cazul în care continuați, veți fi deconectat din sesiunea curentă și va trebui să vă conectați din nou. Sesiunile active de pe alte dispozitive pot rămâne active timp de până la o oră." }, "resetPasswordPolicyAutoEnroll": { "message": "Înscrierea automată" @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Selectare folder..." }, - "ssoCompleteRegistration": { - "message": "Pentru a finaliza conectarea cu SSO, vă rugăm să setați o parolă principală pentru a vă accesa și proteja seiful." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Ore" @@ -1893,7 +2027,7 @@ "message": "Minute" }, "vaultTimeoutPolicyInEffect": { - "message": "Politicile organizației dvs vă afectează expirarea seifului. Timpul maxim permis de expirare a seifului este $HOURS$ oră (ore) și $MINUTES$ minut(e)", + "message": "Politicile organizației dvs. au stabilit timpul maxim de expirare permis pentru seif la $HOURS$ oră/ore și $MINUTES$ de minut(e).", "placeholders": { "hours": { "content": "$1", @@ -1906,7 +2040,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is $HOURS$ hour(s) and $MINUTES$ minute(s). Your vault timeout action is set to $ACTION$.", + "message": "Politicile organizației dvs. afectează timpul de expirare al seifului. Timpul maxim de așteptare permis pentru seif este de $HOURS$ oră(e) și $MINUTES$ minut(e). Acțiunea de temporizare a seifului este setată la $ACTION$.", "placeholders": { "hours": { "content": "$1", @@ -1923,7 +2057,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "Your organization policies have set your vault timeout action to $ACTION$.", + "message": "Politicile organizației dvs. au setat acțiunea de expirare a seifului la $ACTION$.", "placeholders": { "action": { "content": "$1", @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exportul seifului individual" }, - "exportingPersonalVaultDescription": { - "message": "Numai articolele de seif individuale asociate cu $EMAIL$ vor fi exportate. Articolele de seif ale organizației nu vor fi incluse.", + "exportingIndividualVaultDescription": { + "message": "Se exportă numai intrările din seiful personal asociate cu $EMAIL$. Nu sunt incluse intrările de seif ale organizației. Se exportă numai informațiile despre intrările din seif. Acestea nu includ atașamentele asociate.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Versiune server" }, - "selfHosted": { - "message": "Autogăzduit" + "selfHostedServer": { + "message": "auto-găzduit" }, "thirdParty": { "message": "Parte terță" @@ -2120,52 +2254,52 @@ "message": "Memorare e-mail" }, "loginWithDevice": { - "message": "Log in with device" + "message": "Conectați-vă cu dispozitivul" }, "loginWithDeviceEnabledInfo": { - "message": "Log in with device must be set up in the settings of the Bitwarden app. Need another option?" + "message": "Conectarea cu dispozitivul trebuie să fie configurată în setările aplicației Bitwarden. Aveți nevoie de o altă opțiune?" }, "fingerprintPhraseHeader": { - "message": "Fingerprint phrase" + "message": "Fraza amprentă" }, "fingerprintMatchInfo": { - "message": "Please make sure your vault is unlocked and the Fingerprint phrase matches on the other device." + "message": "Asigurați-vă că seiful este deblocat și că fraza amprentă se potrivește cu cea de pe celălalt dispozitiv." }, "resendNotification": { - "message": "Resend notification" + "message": "Reîntoarceți notificarea" }, "viewAllLoginOptions": { - "message": "View all log in options" + "message": "Afișați toate opțiunile de conectare" }, "notificationSentDevice": { - "message": "A notification has been sent to your device." + "message": "O notificare a fost trimisă pe dispozitivul dvs." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Conectare inițiată" }, "exposedMasterPassword": { - "message": "Exposed Master Password" + "message": "Parolă principală compromisă" }, "exposedMasterPasswordDesc": { - "message": "Password found in a data breach. Use a unique password to protect your account. Are you sure you want to use an exposed password?" + "message": "Parola găsită în scurgerea de date. Folosiți o parolă unică pentru a vă proteja contul. Sunteți sigur că doriți să folosiți o parolă compromisă?" }, "weakAndExposedMasterPassword": { - "message": "Weak and Exposed Master Password" + "message": "Parolă principală slabă și compromisă" }, "weakAndBreachedMasterPasswordDesc": { - "message": "Weak password identified and found in a data breach. Use a strong and unique password to protect your account. Are you sure you want to use this password?" + "message": "Parolă slabă identificată și găsită într-o scurgere de date. Folosiți o parolă puternică și unică pentru a vă proteja contul. Sunteți sigur că doriți să utilizați această parolă?" }, "checkForBreaches": { - "message": "Check known data breaches for this password" + "message": "Verificați scurgerile de date cunoscute pentru această parolă" }, "important": { "message": "Important:" }, "masterPasswordHint": { - "message": "Your master password cannot be recovered if you forget it!" + "message": "Parola principală nu poate fi recuperată dacă este uitată!" }, "characterMinimum": { - "message": "$LENGTH$ character minimum", + "message": "Minim $LENGTH$ caractere", "placeholders": { "length": { "content": "$1", @@ -2174,13 +2308,13 @@ } }, "autofillPageLoadPolicyActivated": { - "message": "Your organization policies have turned on auto-fill on page load." + "message": "Politicile organizației dvs. au activat auto-completarea la încărcarea paginii." }, "howToAutofill": { - "message": "How to auto-fill" + "message": "Instrucțiuni de auto-completare" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,22 +2323,22 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { - "message": "Got it" + "message": "Am înțeles" }, "autofillSettings": { - "message": "Auto-fill settings" + "message": "Setări de auto-completare" }, "autofillShortcut": { - "message": "Auto-fill keyboard shortcut" + "message": "Scurtătură de tastatură pentru auto-completare" }, "autofillShortcutNotSet": { - "message": "The auto-fill shortcut is not set. Change this in the browser's settings." + "message": "Scurtătura de auto-completare nu este setată. Modificați acest lucru în setările browserului." }, "autofillShortcutText": { - "message": "The auto-fill shortcut is: $COMMAND$. Change this in the browser's settings.", + "message": "Scurtătura de auto-completare este: $COMMAND$. Modificați acest lucru în setările browserului.", "placeholders": { "command": { "content": "$1", @@ -2213,7 +2347,7 @@ } }, "autofillShortcutTextSafari": { - "message": "Default auto-fill shortcut: $COMMAND$.", + "message": "Scurtătură implicită de auto-completare: $COMMAND$.", "placeholders": { "command": { "content": "$1", @@ -2221,27 +2355,658 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Conectare la" }, "opensInANewWindow": { - "message": "Opens in a new window" + "message": "Se deschide într-o nouă fereastră" + }, + "deviceApprovalRequired": { + "message": "Este necesară aprobarea dispozitivului. Selectați o opțiune de autorizare de mai jos:" + }, + "rememberThisDevice": { + "message": "Memorizează acest dispozitiv" + }, + "uncheckIfPublicDevice": { + "message": "Debifați dacă utilizați un dispozitiv public" + }, + "approveFromYourOtherDevice": { + "message": "Aprobați de pe celălalt dispozitiv" + }, + "requestAdminApproval": { + "message": "Cereți aprobarea administratorului" + }, + "approveWithMasterPassword": { + "message": "Aprobați cu parola principală" + }, + "ssoIdentifierRequired": { + "message": "Identificatorul SSO al organizației este necesar." }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "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ă." }, "general": { "message": "General" }, "display": { - "message": "Display" + "message": "Afișare" + }, + "accountSuccessfullyCreated": { + "message": "Cont creat cu succes!" + }, + "adminApprovalRequested": { + "message": "Autorizație administrativă solicitată" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Cererea dvs. a fost trimisă administratorului." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Veți primi o notificare după aprobare." + }, + "troubleLoggingIn": { + "message": "Aveți probleme la logare?" + }, + "loginApproved": { + "message": "Autentificare aprobată" + }, + "userEmailMissing": { + "message": "Lipsește e-mailul utilizatorului" + }, + "deviceTrusted": { + "message": "Dispozitiv de încredere" + }, + "inputRequired": { + "message": "Este necesară o intrare." + }, + "required": { + "message": "necesar" + }, + "search": { + "message": "Căutare" + }, + "inputMinLength": { + "message": "Intrarea trebuie să aibă o lungime de cel puțin $COUNT$ caractere.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Intrarea nu trebuie să fie mai lungă de $COUNT$ caractere.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Următoarele caractere nu sunt permise: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Valoarea de intrare trebuie să fie cel puțin $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Valoarea de intrare nu trebuie să depășească $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 sau mai multe e-mailuri sunt invalide" + }, + "inputTrimValidator": { + "message": "Datele introduse nu trebuie să conțină numai spații.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Intrarea nu este o adresă de e-mail." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ câmp(uri) de mai sus necesită atenție.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Selectați --" + }, + "multiSelectPlaceholder": { + "message": "-- Scrieți pentru a filtra --" + }, + "multiSelectLoading": { + "message": "Recuperarea opțiunilor..." + }, + "multiSelectNotFound": { + "message": "Niciun element găsit" + }, + "multiSelectClearAll": { + "message": "Ștergeți tot" + }, + "plusNMore": { + "message": "+ $QUANTITY$ mai mult", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submeniu" + }, + "toggleCollapse": { + "message": "Comutare restrângere", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Elementele în care parola principală este solicitată din nou nu pot fi completate automat la încărcarea paginii. Completarea automată la încărcarea paginii este dezactivată.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Completarea automată la încărcarea paginii este setată la valoarea implicită.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Dezactivați reintroducerea parolei principale pentru a edita acest câmp", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/ru/messages.json b/apps/browser/src/_locales/ru/messages.json index 938c35d1c2..aed3d58b11 100644 --- a/apps/browser/src/_locales/ru/messages.json +++ b/apps/browser/src/_locales/ru/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Автозаполнение" }, + "autoFillLogin": { + "message": "Автозаполнение логина" + }, + "autoFillCard": { + "message": "Автозаполнение карты" + }, + "autoFillIdentity": { + "message": "Автозаполнение личности" + }, "generatePasswordCopied": { "message": "Сгенерировать пароль (с копированием)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Нет подходящих логинов." }, + "noCards": { + "message": "Нет карт" + }, + "noIdentities": { + "message": "Нет личностей" + }, + "addLoginMenu": { + "message": "Добавить логин" + }, + "addCardMenu": { + "message": "Добавить карту" + }, + "addIdentityMenu": { + "message": "Добавить личность" + }, "unlockVaultMenu": { "message": "Разблокировать хранилище" }, @@ -244,6 +268,9 @@ "length": { "message": "Длина" }, + "passwordMinLength": { + "message": "Минимальная длина пароля" + }, "uppercase": { "message": "Прописные буквы (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Пароль" }, + "totp": { + "message": "Секрет аутентификатора" + }, "passphrase": { "message": "Парольная фраза" }, @@ -338,6 +368,12 @@ "other": { "message": "Прочее" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Настройте способ разблокировки для изменения действия по тайм-ауту хранилища." + }, + "unlockMethodNeeded": { + "message": "Установите способ разблокировки в настройках" + }, "rateExtension": { "message": "Оценить расширение" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Заблокировать" }, + "lockAll": { + "message": "Заблокировать все" + }, "immediately": { "message": "Немедленно" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Ваш аккаунт создан! Теперь вы можете войти в систему." }, + "youSuccessfullyLoggedIn": { + "message": "Вы успешно авторизовались" + }, + "youMayCloseThisWindow": { + "message": "Можете закрыть это окно" + }, "masterPassSent": { "message": "Мы отправили вам письмо с подсказкой к мастер-паролю." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Не удалось автоматически заполнить выбранный элемент на этой странице. Скопируйте и вставьте логин/пароль из своего хранилища." }, + "totpCaptureError": { + "message": "Не удается сосканировать QR-код с текущей веб-страницы" + }, + "totpCaptureSuccess": { + "message": "Ключ аутентификатора добавлен" + }, + "totpCapture": { + "message": "Сканировать QR-код аутентификатора с текущей веб-страницы" + }, + "copyTOTP": { + "message": "Скопировать ключ аутентификатора (TOTP)" + }, "loggedOut": { "message": "Вы вышли из хранилища" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Запросить добавление элемента, если его нет в вашем хранилище." }, + "addLoginNotificationDescAlt": { + "message": "Запрос на добавление элемента, если он отсутствует в вашем хранилище. Применяется ко всем авторизованным аккаунтам." + }, "showCardsCurrentTab": { "message": "Показывать карты на вкладке" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Спрашивать обновление пароля логина при обнаружении изменения на сайте." }, + "changedPasswordNotificationDescAlt": { + "message": "Запрос на обновление пароля логина при обнаружении изменений на сайте. Применяется ко всем авторизованным аккаунтам." + }, + "enableUsePasskeys": { + "message": "Запрос на сохранение и использование passkey" + }, + "usePasskeysDesc": { + "message": "Запрос на сохранение новых passkey или в авторизация с passkey, хранящимися в вашем хранилище. Применяется ко всем авторизованным аккаунтам." + }, "notificationChangeDesc": { "message": "Обновить этот пароль в Bitwarden?" }, "notificationChangeSave": { "message": "Обновить" }, + "notificationUnlockDesc": { + "message": "Разблокируйте свое хранилище Bitwarden чтобы выполнить автозаполнение." + }, + "notificationUnlock": { + "message": "Разблокировать" + }, "enableContextMenuItem": { "message": "Показать опции контекстного меню" }, "contextMenuItemDesc": { "message": "С помощью двойного щелчка можно получить доступ к генерации паролей и сопоставлению логинов для сайта." }, + "contextMenuItemDescAlt": { + "message": "Использовать двойной щелчок для доступа к генерации паролей и сопоставлению логинов для сайта. Применяется ко всем авторизованным аккаунтам." + }, "defaultUriMatchDetection": { "message": "Обнаружение совпадения URI по умолчанию", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Изменение цветовой темы приложения." }, + "themeDescAlt": { + "message": "Изменение цветовой темы приложения. Применяется ко всем авторизованным аккаунтам." + }, "dark": { "message": "Темная", "description": "Dark color" @@ -662,7 +743,7 @@ "description": "'Solarized' is a noun and the name of a color scheme. It should not be translated." }, "exportVault": { - "message": "Экспортировать хранилище" + "message": "Экспорт хранилища" }, "fileFormat": { "message": "Формат файла" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Функция недоступна" }, - "updateKey": { - "message": "Вы не можете использовать эту функцию, пока не обновите свой ключ шифрования." + "encryptionKeyMigrationRequired": { + "message": "Требуется миграция ключа шифрования. Чтобы обновить ключ шифрования, войдите через веб-хранилище." }, "premiumMembership": { "message": "Премиум" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 ГБ зашифрованного хранилища для вложенных файлов." }, - "ppremiumSignUpTwoStep": { - "message": "Дополнительные варианты двухэтапной аутентификации, такие как YubiKey, FIDO U2F и Duo." + "premiumSignUpTwoStepOptions": { + "message": "Проприетарные варианты двухэтапной аутентификации, такие как YubiKey или Duo." }, "ppremiumSignUpReports": { "message": "Гигиена паролей, здоровье аккаунта и отчеты об утечках данных для обеспечения безопасности вашего хранилища." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "URL окружения сохранены" }, + "showAutoFillMenuOnFormFields": { + "message": "Показывать меню автозаполнения в полях формы", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Применяется ко всем авторизованным аккаунтам." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Отключите встроенный в браузер менеджер паролей, чтобы избежать конфликтов." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Изменить настройки браузера." + }, + "autofillOverlayVisibilityOff": { + "message": "Выкл", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Когда поле выбрано (в фокусе)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Если выбран значок автозаполнения", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Автозаполнение при загрузке страницы" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Отображать узнаваемое изображение рядом с каждым логином." }, + "faviconDescAlt": { + "message": "Показывать узнаваемое изображение рядом с каждым логином. Применяется ко всем авторизованным аккаунтам." + }, "enableBadgeCounter": { "message": "Показать счетчик на значке" }, @@ -1345,7 +1454,7 @@ "message": "Вы действительно хотите отключить блокировку хранилища? В этом случае ключ шифрования вашего хранилища будет сохранен на вашем устройстве. Отключая блокировку, вы должны убедиться, что ваше устройство надежно защищено." }, "noOrganizationsList": { - "message": "Вы не являетесь членом какой-либо организации. Организации позволяют безопасно обмениваться элементами с другими пользователями." + "message": "Вы не являетесь участником какой-либо организации. Организации позволяют безопасно обмениваться элементами с другими пользователями." }, "noCollectionsInList": { "message": "Нет коллекций для отображения." @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Неверный PIN-код." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Слишком много неверных попыток ввода PIN-кода. Выполняется выход." + }, "unlockWithBiometrics": { "message": "Разблокировать с помощью биометрии" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Восстановить элемент" }, - "restoreItemConfirmation": { - "message": "Вы уверены, что хотите восстановить этот элемент?" - }, "restoredItem": { "message": "Элемент восстановлен" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Биометрия в браузере не поддерживается этом устройстве." }, + "biometricsFailedTitle": { + "message": "Сбой биометрии" + }, + "biometricsFailedDesc": { + "message": "Не удалось выполнить биометрическую идентификацию, попробуйте использовать мастер-пароль или выполнить выход. Если ситуация не изменится, обратитесь в службу поддержки Bitwarden." + }, "nativeMessaginPermissionErrorTitle": { "message": "Разрешение не представлено" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Политика организации влияет на ваши варианты владения." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Импорт элементов в ваше личное хранилище отключен политикой организации." + }, "excludedDomains": { "message": "Исключенные домены" }, "excludedDomainsDesc": { "message": "Bitwarden не будет предлагать сохранить логины для этих доменов. Для вступления изменений в силу необходимо обновить страницу." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden не будет предлагать сохранение логинов для этих доменов для всех авторизованных аккаунтов. Для вступления изменений в силу необходимо обновить страницу." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ – некорректно указанный домен", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1872,7 +1993,7 @@ "message": "Мастер-пароль недавно был изменен администратором вашей организации. Чтобы получить доступ к хранилищу, вы должны обновить его сейчас. В результате текущий сеанс будет завершен, потребуется повторный вход. Сеансы на других устройствах могут оставаться активными в течение одного часа." }, "updateWeakMasterPasswordWarning": { - "message": "Ваш мастер-пароль не соответствует требованиям политики вашей организации. Для доступа к хранилищу вы должны обновить свой мастер-пароль прямо сейчас. При этом текущая сессия будет завершена и потребуется повторная авторизация. Сессии на других устройствах могут оставаться активными в течение часа." + "message": "Ваш мастер-пароль не соответствует требованиям политики вашей организации. Для доступа к хранилищу вы должны обновить свой мастер-пароль прямо сейчас. При этом текущий сеанс будет завершен и потребуется повторная авторизация. Сеансы на других устройствах могут оставаться активными в течение часа." }, "resetPasswordPolicyAutoEnroll": { "message": "Автоматическое развертывание" @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Выберите папку..." }, - "ssoCompleteRegistration": { - "message": "Для завершения процесса авторизации при помощи SSO, установите мастер-пароль для доступа к вашему хранилищу и его защиты." + "noFoldersFound": { + "message": "Папки не найдены", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Права доступа организации были обновлены, требуется установить мастер-пароль.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Необходимо установить мастер-пароль для организации.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Требуется верификация", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Час." @@ -1947,7 +2081,7 @@ "message": "Уникальный идентификатор не найден." }, "convertOrganizationEncryptionDesc": { - "message": "$ORGANIZATION$ использует SSO с собственным сервером ключей. Для авторизации членам этой организации больше не требуется мастер-пароль.", + "message": "$ORGANIZATION$ использует SSO с собственным сервером ключей. Для авторизации пользователям этой организации больше не требуется мастер-пароль.", "placeholders": { "organization": { "content": "$1", @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Экспорт личного хранилища" }, - "exportingPersonalVaultDescription": { - "message": "Будут экспортированы только личные элементы хранилища, связанные с $EMAIL$. Элементы хранилища организации включены не будут.", + "exportingIndividualVaultDescription": { + "message": "Будут экспортированы только отдельные элементы хранилища, связанные с $EMAIL$. Элементы хранилища организации включены не будут. Экспортируется только информация об элементах хранилища, не включая связанные вложения.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Версия сервера" }, - "selfHosted": { - "message": "Собственный хостинг" + "selfHostedServer": { + "message": "собственный хостинг" }, "thirdParty": { "message": "Сторонний" @@ -2129,7 +2263,7 @@ "message": "Фраза отпечатка" }, "fingerprintMatchInfo": { - "message": "Убедитесь, что ваше хранилище разблокировано и фраза отпечатка пальца совпадает на другом устройстве." + "message": "Убедитесь, что ваше хранилище разблокировано и фраза отпечатка совпадает на другом устройстве." }, "resendNotification": { "message": "Отправить уведомление повторно" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "На ваше устройство отправлено уведомление." }, - "logInInitiated": { + "loginInitiated": { "message": "Вход инициирован" }, "exposedMasterPassword": { @@ -2156,7 +2290,7 @@ "message": "Обнаружен слабый пароль, найденный в утечке данных. Используйте надежный и уникальный пароль для защиты вашего аккаунта. Вы уверены, что хотите использовать этот пароль?" }, "checkForBreaches": { - "message": "Проверьте известные случаи утечки данных для этого пароля" + "message": "Проверять известные случаи утечки данных для этого пароля" }, "important": { "message": "Важно:" @@ -2180,7 +2314,7 @@ "message": "Как использовать автозаполнение" }, "autofillSelectInfoWithCommand": { - "message": "Выберите элемент на этой странице или используйте сочетание клавиш: $COMMAND$", + "message": "Выберите элемент на этой странице, используйте сочетание клавиш: $COMMAND$ или ознакомьтесь с другими параметрами в настройках.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Выберите элемент на этой странице или задайте сочетание клавиш в настройках." + "message": "Выберите элемент на этой странице или изучите другие параметры в настройках." }, "gotIt": { "message": "Понятно" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Регион" + "loggingInOn": { + "message": "Войти на" }, "opensInANewWindow": { "message": "Откроется в новом окне" }, + "deviceApprovalRequired": { + "message": "Требуется одобрение устройства. Выберите вариант ниже:" + }, + "rememberThisDevice": { + "message": "Запомнить это устройство" + }, + "uncheckIfPublicDevice": { + "message": "Снимите флажок, если используете общедоступное устройство" + }, + "approveFromYourOtherDevice": { + "message": "Одобрить с другого устройства" + }, + "requestAdminApproval": { + "message": "Запросить одобрение администратора" + }, + "approveWithMasterPassword": { + "message": "Одобрить с мастер-паролем" + }, + "ssoIdentifierRequired": { + "message": "Требуется идентификатор SSO организации." + }, "eu": { "message": "Европа", "description": "European Union" }, - "us": { - "message": "США", - "description": "United States" - }, "accessDenied": { "message": "Доступ запрещен. У вас нет разрешения на просмотр этой страницы." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Отображение" + }, + "accountSuccessfullyCreated": { + "message": "Аккаунт успешно создан!" + }, + "adminApprovalRequested": { + "message": "Запрошено одобрение администратора" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Ваш запрос был отправлен администратору." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Вас уведомят об одобрении." + }, + "troubleLoggingIn": { + "message": "Не удалось войти?" + }, + "loginApproved": { + "message": "Вход одобрен" + }, + "userEmailMissing": { + "message": "Отсутствует email пользователя" + }, + "deviceTrusted": { + "message": "Доверенное устройство" + }, + "inputRequired": { + "message": "Необходимо ввести данные." + }, + "required": { + "message": "обязательно" + }, + "search": { + "message": "Поиск" + }, + "inputMinLength": { + "message": "Вводимые данные должны содержать не менее $COUNT$ символов.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Длина вводимых данных не должна превышать $COUNT$ символов.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Не допускаются следующие символы: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Вводимое значение должно быть не менее $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Вводимое значение не должно превышать $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "Один или несколько адресов email недействительны" + }, + "inputTrimValidator": { + "message": "Введенные данные не должны содержать только пробелы.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Введенные данные не являются адресом email." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ поля(ей) выше требуют вашего внимания.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Выбрать --" + }, + "multiSelectPlaceholder": { + "message": "-- Введите для фильтрации --" + }, + "multiSelectLoading": { + "message": "Получение параметров..." + }, + "multiSelectNotFound": { + "message": "Элементов не найдено" + }, + "multiSelectClearAll": { + "message": "Очистить все" + }, + "plusNMore": { + "message": "еще + $QUANTITY$", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Подменю" + }, + "toggleCollapse": { + "message": "Свернуть/развернуть", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Импортировать данные в Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Защитить данные LastPass и импортировать их в Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Сохранить как незашифрованный файл", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Импортировать в Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Импорт...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Данные успешно импортированы!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Ошибка импорта. Проверьте консоль для получения подробной информации.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Во время импорта возникла сетевая ошибка.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Псевдоним домена" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Элементы с повторным запросом мастер-пароля не могут быть автоматически заполнены при загрузке страницы. Автозаполнение при загрузке страницы выключено.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Автозаполнение при загрузке страницы использует настройку по умолчанию.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Для редактирования этого поля отключите повторный запрос мастер-пароля", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Перейти к содержимому" + }, + "bitwardenOverlayButton": { + "message": "Кнопка меню автозаполнения Bitwarden", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Вкл/выкл меню автозаполнения Bitwarden", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Меню автозаполнения Bitwarden", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Разблокируйте ваш аккаунт для просмотра подходящих логинов", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Разблокировать аккаунт", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Заполнить учетные данные", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Часть имени пользователя", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Нет элементов для отображения", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Новый элемент", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Добавить новый элемент в хранилище", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Доступно меню автозаполнения Bitwarden. Для выбора нажмите клавишу со стрелкой вниз.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Включить" + }, + "ignore": { + "message": "Игнорировать" + }, + "importData": { + "message": "Импорт данных", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Ошибка импорта" + }, + "importErrorDesc": { + "message": "Возникла проблема с данными, которые вы пытались импортировать. Исправьте в исходном файле перечисленные ниже ошибки и попробуйте еще раз." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Устраните указанные ниже ошибки и повторите попытку." + }, + "description": { + "message": "Описание" + }, + "importSuccess": { + "message": "Данные успешно импортированы" + }, + "importSuccessNumberOfItems": { + "message": "Всего импортировано элементов: $AMOUNT$.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Попробуйте снова" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Для этого действия требуется верификация. Для продолжения введите PIN-код." + }, + "setPin": { + "message": "Задать PIN-код" + }, + "verifyWithBiometrics": { + "message": "Верифицировать с помощью биометрии" + }, + "awaitingConfirmation": { + "message": "Ожидание подтверждения" + }, + "couldNotCompleteBiometrics": { + "message": "Не удалось выполнить верификацию биометрией." + }, + "needADifferentMethod": { + "message": "Нужен другой метод?" + }, + "useMasterPassword": { + "message": "Использовать мастер-пароль" + }, + "usePin": { + "message": "Использовать PIN-код" + }, + "useBiometrics": { + "message": "Использовать биометрию" + }, + "enterVerificationCodeSentToEmail": { + "message": "Введите код подтверждения, отправленный вам на почту." + }, + "resendCode": { + "message": "Отправить код повторно" + }, + "total": { + "message": "Всего" + }, + "importWarning": { + "message": "Вы импортируете данные в $ORGANIZATION$. Пользователи этой организации могут получить к ним доступ. Продолжить?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Запустите Duo и следуйте шагам для завершения авторизации." + }, + "duoRequiredForAccount": { + "message": "Для вашего аккаунта требуется двухэтапная аутентификация Duo." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Запустите расширение для завершения авторизации." + }, + "popoutExtension": { + "message": "Открепить расширение" + }, + "launchDuo": { + "message": "Запустить Duo" + }, + "importFormatError": { + "message": "Формат данных некорректен. Проверьте импортируемый файл и повторите попытку." + }, + "importNothingError": { + "message": "Ничего не было импортировано." + }, + "importEncKeyError": { + "message": "Ошибка при расшифровке экспортированного файла. Ваш ключ шифрования не совпадает с ключом шифрования, использованным при экспорте данных." + }, + "invalidFilePassword": { + "message": "Неверный пароль к файлу. Используйте пароль, введенный при создании файла экспорта." + }, + "importDestination": { + "message": "Цель импорта" + }, + "learnAboutImportOptions": { + "message": "Узнайте о возможностях импорта" + }, + "selectImportFolder": { + "message": "Выберите папку" + }, + "selectImportCollection": { + "message": "Выберите коллекцию" + }, + "importTargetHint": { + "message": "Выберите эту опцию, если хотите, чтобы содержимое импортированного файла было перемещено в $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Файл содержит неназначенные элементы." + }, + "selectFormat": { + "message": "Выберите формат импортируемого файла" + }, + "selectImportFile": { + "message": "Выберите импортируемый файл" + }, + "chooseFile": { + "message": "Выбрать файл" + }, + "noFileChosen": { + "message": "Файл не выбран" + }, + "orCopyPasteFileContents": { + "message": "или скопируйте и вставьте содержимое импортируемого файла" + }, + "instructionsFor": { + "message": "Инструкции для $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Подтвердите импорт хранилища" + }, + "confirmVaultImportDesc": { + "message": "Этот файл защищен паролем. Введите пароль для импорта данных." + }, + "confirmFilePassword": { + "message": "Подтвердите пароль к файлу" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey не будет скопирован" + }, + "passkeyNotCopiedAlert": { + "message": "Passkey не будет скопирован в клонированный элемент. Продолжить клонирование этого элемента?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Необходима верификация со стороны инициирующего сайта. Для аккаунтов без мастер-пароля эта возможность пока не реализована." + }, + "logInWithPasskey": { + "message": "Войти с passkey?" + }, + "passkeyAlreadyExists": { + "message": "Для данного приложения уже существует passkey." + }, + "noPasskeysFoundForThisApplication": { + "message": "Для данного приложения не найден passkey." + }, + "noMatchingPasskeyLogin": { + "message": "У вас нет подходящего логина для этого сайта." + }, + "confirm": { + "message": "Подтвердить" + }, + "savePasskey": { + "message": "Сохранить passkey" + }, + "savePasskeyNewLogin": { + "message": "Сохранить passkey как новый логин" + }, + "choosePasskey": { + "message": "Выберите логин, для которого будет сохранен данный passkey" + }, + "passkeyItem": { + "message": "Элемент passkey" + }, + "overwritePasskey": { + "message": "Перезаписать passkey?" + }, + "overwritePasskeyAlert": { + "message": "Этот элемент уже содержит passkey. Вы уверены, что хотите перезаписать текущий passkey?" + }, + "featureNotSupported": { + "message": "Функция пока не поддерживается" + }, + "yourPasskeyIsLocked": { + "message": "Для использования passkey необходима аутентификация. Для продолжения работы подтвердите свою личность." + }, + "multifactorAuthenticationCancelled": { + "message": "Многофакторная аутентификация отменена" + }, + "noLastPassDataFound": { + "message": "Данные LastPass не найдены" + }, + "incorrectUsernameOrPassword": { + "message": "Неверное имя пользователя или пароль" + }, + "incorrectPassword": { + "message": "Неверный пароль" + }, + "incorrectCode": { + "message": "Неверный код" + }, + "incorrectPin": { + "message": "Неверный PIN-код" + }, + "multifactorAuthenticationFailed": { + "message": "Сбой многофакторной аутентификации" + }, + "includeSharedFolders": { + "message": "Включить общие папки" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Импорт вашего аккаунта..." + }, + "lastPassMFARequired": { + "message": "Требуется многофакторная аутентификация LastPass" + }, + "lastPassMFADesc": { + "message": "Введите одноразовый код из приложения для аутентификации" + }, + "lastPassOOBDesc": { + "message": "Одобрите запрос на вход в приложении или введите одноразовый код." + }, + "passcode": { + "message": "Код доступа" + }, + "lastPassMasterPassword": { + "message": "Мастер-пароль LastPass" + }, + "lastPassAuthRequired": { + "message": "Требуется аутентификация LastPass" + }, + "awaitingSSO": { + "message": "Ожидание аутентификации SSO" + }, + "awaitingSSODesc": { + "message": "Пожалуйста, продолжите вход, используя учетные данные вашей компании." + }, + "seeDetailedInstructions": { + "message": "Подробные инструкции см. на нашем справочном сайте по адресу", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Импорт непосредственно из LastPass" + }, + "importFromCSV": { + "message": "Импорт из CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Повторите попытку или найдите email от LastPass, чтобы подтвердить, что это вы." + }, + "collection": { + "message": "Коллекция" + }, + "lastPassYubikeyDesc": { + "message": "Вставьте YubiKey, связанный с аккаунтом LastPass, в USB-порт компьютера и нажмите на его кнопку." + }, + "switchAccount": { + "message": "Сменить аккаунт" + }, + "switchAccounts": { + "message": "Сменить аккаунты" + }, + "switchToAccount": { + "message": "Переключиться на аккаунт" + }, + "activeAccount": { + "message": "Активный аккаунт" + }, + "availableAccounts": { + "message": "Доступные аккаунты" + }, + "accountLimitReached": { + "message": "Достигнут лимит аккаунтов. Выйдите, чтобы добавить другой." + }, + "active": { + "message": "активный" + }, + "locked": { + "message": "заблокирован" + }, + "unlocked": { + "message": "разблокирован" + }, + "server": { + "message": "сервер" + }, + "hostedAt": { + "message": "под управлением" + }, + "useDeviceOrHardwareKey": { + "message": "Используйте ваше устройство или аппаратный ключ" + }, + "justOnce": { + "message": "Только сейчас" + }, + "alwaysForThisSite": { + "message": "Всегда для этого сайта" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ добавлен в исключенные домены.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Основные форматы", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Сделать Bitwarden менеджером паролей по умолчанию?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Отключение этого параметра может привести к конфликту между меню автозаполнения Bitwarden и вашим браузером.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Сделать Bitwarden менеджером паролей по умолчанию", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Невозможно установить Bitwarden в качестве менеджера паролей по умолчанию", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Чтобы установить Bitwarden в качестве менеджера паролей по умолчанию, необходимо предоставить Bitwarden права доступа к конфиденциальности браузера.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Установить по умолчанию", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Учетные данные успешно сохранены!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Учетные данные успешно обновлены!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Ошибка сохранения учетных данных. Проверьте консоль для получения подробной информации.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Удалить passkey" + }, + "passkeyRemoved": { + "message": "Passkey удален" + }, + "unassignedItemsBanner": { + "message": "Обратите внимание: неприсвоенные элементы организации больше не видны в представлении \"Все хранилища\" и доступны только через консоль администратора. Назначьте эти элементы коллекции в консоли администратора, чтобы сделать их видимыми." } } diff --git a/apps/browser/src/_locales/si/messages.json b/apps/browser/src/_locales/si/messages.json index 5cac9ee12c..3dc18a97fb 100644 --- a/apps/browser/src/_locales/si/messages.json +++ b/apps/browser/src/_locales/si/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "ස්වයං-පිරවීම" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "මුරපදය ජනනය (පිටපත්)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "ගැලපෙන පිවිසුම් නොමැත." }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "දිග" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "මුරපදය" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "පැස්ප්රස්" }, @@ -338,6 +368,12 @@ "other": { "message": "වෙනත්" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "දිගුව අනුපාතය" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "දැන් අගුලුදමන්න" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "වහාම" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "ඔබගේ නව ගිණුම නිර්මාණය කර ඇත! ඔබට දැන් ලොග් විය හැකිය." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "ඔබගේ ප්රධාන මුරපදය ඉඟියක් සමඟ අපි ඔබට විද්යුත් තැපෑලක් යවා ඇත්තෙමු." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "මෙම පිටුවේ තෝරාගත් අයිතමය ස්වයංක්රීයව පිරවිය නොහැක. ඒ වෙනුවට තොරතුරු පිටපත් කර අලවන්න." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "ලොගින් වී" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "මෙම “ලොගින් වන්න නිවේදනය එකතු කරන්න” ස්වයංක්රීයව ඔබ පළමු වරට ඔවුන් තුලට ප්රවිෂ්ට සෑම අවස්ථාවකදීම ඔබගේ සුරක්ෂිතාගාරය නව පිවිසුම් බේරා ගැනීමට ඔබෙන් විමසනු." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Bitwarden හි මෙම මුරපදය යාවත්කාලීන කිරීමට ඔබට අවශ්යද?" }, "notificationChangeSave": { "message": "යාවත්කාල" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "පෙරනිමි URI තරග හඳුනා", @@ -649,6 +727,9 @@ "themeDesc": { "message": "යෙදුමේ වර්ණ තේමාව වෙනස් කරන්න." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "අඳුරු", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "විශේෂාංගය ලබාගත නොහැක" }, - "updateKey": { - "message": "ඔබ ඔබේ සංකේතාංකන යතුර යාවත්කාලීන කරන තුරු ඔබට මෙම අංගය භාවිතා කළ නොහැක." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "වාරික සාමාජිකත්වය" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "ගොනු ඇමුණුම් සඳහා 1 GB සංකේතාත්මක ගබඩා." }, - "ppremiumSignUpTwoStep": { - "message": "එවැනි YuBiKey, FIDO U2F, සහ Duo ලෙස අතිරේක පියවර දෙකක් පිවිසුම් විකල්ප." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "ඔබගේ සුරක්ෂිතාගාරය ආරක්ෂිතව තබා ගැනීම සඳහා මුරපදය සනීපාරක්ෂාව, ගිණුම් සෞඛ්යය සහ දත්ත උල්ලං ach නය වාර්තා කරයි." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "පරිසර URL සුරකිනු ඇත." }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "පිටු පැටවුම් මත ස්වයංක්රීය-පිරවීම සක්රීය" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "වලංගු නොවන PIN කේතය." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "ජෛව විද්යාව සමඟ අගුළු ඇරීම" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "අයිතමය යළි පිහිටුවන්න" }, - "restoreItemConfirmation": { - "message": "ඔබට මෙම අයිතමය යථා තත්වයට පත් කිරීමට අවශ්ය බව ඔබට විශ්වාසද?" - }, "restoredItem": { "message": "ප්රතිෂ්ඨාපනය අයිතමය" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "බ්රව්සර් biometrics මෙම උපාංගය මත සහය නොදක්වයි." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "අවසර ලබා දී නැත" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "සංවිධාන ප්රතිපත්තියක් ඔබේ හිමිකාරිත්ව විකල්පයන් කෙරෙහි බලපායි." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "බැහැර වසම්" }, "excludedDomainsDesc": { "message": "බිට්වර්ඩන් මෙම වසම් සඳහා පිවිසුම් තොරතුරු සුරැකීමට ඉල්ලා නොසිටිනු ඇත. බලාත්මක කිරීම සඳහා වෙනස්කම් සඳහා ඔබ පිටුව නැවුම් කළ යුතුය." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ වලංගු වසමක් නොවේ", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "ෆෝල්ඩරය තෝරන්න..." }, - "ssoCompleteRegistration": { - "message": "SSG සමග ලොග් වීම සම්පූර්ණ කිරීම සඳහා, කරුණාකර ඔබේ සුරක්ෂිතාගාරය වෙත ප්රවේශ වීමට සහ ආරක්ෂා කිරීමට ප්රධාන මුරපදයක් සකසන්න." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "පැය" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/sk/messages.json b/apps/browser/src/_locales/sk/messages.json index 2fdd9c078d..bd4f9f9796 100644 --- a/apps/browser/src/_locales/sk/messages.json +++ b/apps/browser/src/_locales/sk/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Automatické vypĺňanie" }, + "autoFillLogin": { + "message": "Automatické vyplnenie prihlasovacích údajov" + }, + "autoFillCard": { + "message": "Automatické vyplnenie karty" + }, + "autoFillIdentity": { + "message": "Automatické vyplnenie identity" + }, "generatePasswordCopied": { "message": "Vygenerovať heslo (skopírované)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Žiadne zodpovedajúce prihlasovacie údaje." }, + "noCards": { + "message": "Žiadne karty" + }, + "noIdentities": { + "message": "Žiadne identity" + }, + "addLoginMenu": { + "message": "Pridať prihlasovacie údaje" + }, + "addCardMenu": { + "message": "Pridať kartu" + }, + "addIdentityMenu": { + "message": "Pridať identitu" + }, "unlockVaultMenu": { "message": "Odomknúť trezor" }, @@ -244,6 +268,9 @@ "length": { "message": "Dĺžka" }, + "passwordMinLength": { + "message": "Minimálna dĺžka hesla" + }, "uppercase": { "message": "Veľké písmená (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Heslo" }, + "totp": { + "message": "Kľúč z aplikácie Authenticator" + }, "passphrase": { "message": "Prístupová fráza" }, @@ -338,6 +368,12 @@ "other": { "message": "Ostatné" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Nastavte metódu odomknutia, aby ste zmenili akciu pri vypršaní času trezoru." + }, + "unlockMethodNeeded": { + "message": "Nastavte metódu odomknutia v Nastaveniach" + }, "rateExtension": { "message": "Ohodnotiť rozšírenie" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Uzamknúť teraz" }, + "lockAll": { + "message": "Uzamknúť všetky" + }, "immediately": { "message": "Okamžite" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Váš nový účet bol vytvorený! Teraz sa môžete prihlásiť." }, + "youSuccessfullyLoggedIn": { + "message": "Úspešne ste sa prihlásili" + }, + "youMayCloseThisWindow": { + "message": "Toto okno môžete zavrieť" + }, "masterPassSent": { "message": "Poslali sme vám email s nápovedou k hlavnému heslu." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Na tejto stránke sa nedajú automaticky vyplniť prihlasovacie údaje. Namiesto toho skopírujte/vložte prihlasovacie údaje manuálne." }, + "totpCaptureError": { + "message": "Nie je možné naskenovať QR kód z aktuálnej webovej stránky" + }, + "totpCaptureSuccess": { + "message": "Kľúč overovateľa pridaný" + }, + "totpCapture": { + "message": "Naskenovať QR kód overovateľa z aktuálnej webovej stránky" + }, + "copyTOTP": { + "message": "Kopírovať kľúč overovateľa (TOTP)" + }, "loggedOut": { "message": "Odhlásený" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Opýtať sa na pridanie prihlasovacích údajov ak ich ešte nemáte v trezore." }, + "addLoginNotificationDescAlt": { + "message": "Požiada o pridanie položky, ak sa v trezore nenachádza. Platí pre všetky prihlásené účty." + }, "showCardsCurrentTab": { "message": "Zobraziť karty na stránke \"Aktuálna karta\"" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Požiadať o aktualizáciu prihlasovacieho hesla, ak sa zistí zmena na stránke." }, + "changedPasswordNotificationDescAlt": { + "message": "Požiada o aktualizáciu hesla na prihlásenie, keď sa zistí zmena na webe. Platí pre všetky prihlásené účty." + }, + "enableUsePasskeys": { + "message": "Požiadať o uloženie a používanie prístupových kľúčov" + }, + "usePasskeysDesc": { + "message": "Požiadať o uloženie nových prístupových kľúčov alebo prihlásenie s prístupovými kľúčmi uloženými v trezore. Platí pre všetky prihlásené účty." + }, "notificationChangeDesc": { "message": "Chcete aktualizovať toto heslo v Bitwarden?" }, "notificationChangeSave": { "message": "Aktualizovať" }, + "notificationUnlockDesc": { + "message": "Odomknite svoj Bitwarden trezor a dokončite žiadosť o automatické vyplnenie." + }, + "notificationUnlock": { + "message": "Odomknúť" + }, "enableContextMenuItem": { "message": "Zobraziť možnosti kontextovej ponuky" }, "contextMenuItemDesc": { "message": "Sekundárnym kliknutím získate prístup k vygenerovaniu hesiel a zodpovedajúcim prihláseniam pre webovú stránku. " }, + "contextMenuItemDescAlt": { + "message": "Sekundárnym kliknutím získate prístup k vygenerovaniu hesiel a zodpovedajúcim prihláseniam pre webovú stránku. Platí pre všetky prihlásené účty." + }, "defaultUriMatchDetection": { "message": "Predvolené mapovanie", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Zmeniť motív aplikácie." }, + "themeDescAlt": { + "message": "Zmení farebný motív aplikácie. Platí pre všetky prihlásené účty." + }, "dark": { "message": "Tmavý", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Funkcia nie je k dispozícii" }, - "updateKey": { - "message": "Túto funkciu nemožno použiť, pokým neaktualizujete svoj šifrovací kľúč." + "encryptionKeyMigrationRequired": { + "message": "Vyžaduje sa migrácia šifrovacieho kľúča. Na aktualizáciu šifrovacieho kľúča sa prihláste cez webový trezor." }, "premiumMembership": { "message": "Prémiové členstvo" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB šifrovaného úložiska." }, - "ppremiumSignUpTwoStep": { - "message": "Ďalšie možnosti dvojstupňového prihlásenia ako YubiKey, FIDO U2F a Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietárne možnosti dvojstupňového prihlásenia ako napríklad YubiKey a Duo." }, "ppremiumSignUpReports": { "message": "Správy o sile hesla, zabezpečení účtov a únikoch dát ktoré vám pomôžu udržať vaše kontá v bezpečí." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "URL prostredia boli uložené." }, + "showAutoFillMenuOnFormFields": { + "message": "Zobraziť ponuku automatického vypĺňania na poliach formulára", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Platí pre všetky prihlásené účty." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Aby sa predišlo konfliktom, vypnite vstavaného správcu hesiel." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Upraviť nastavenia prehliadača." + }, + "autofillOverlayVisibilityOff": { + "message": "Vypnuté", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Keď je vybrané pole (zamerané)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Keď je vybratá ikona automatického vypĺňania", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Povoliť automatické vypĺňanie pri načítaní stránky" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Pri každom prihlásení zobrazí rozpoznateľný obrázok." }, + "faviconDescAlt": { + "message": "Vedľa každého účtu zobraziť rozpoznateľný obrázok. Použije sa na všetky prihlásené účty." + }, "enableBadgeCounter": { "message": "Zobraziť počítadlo na ikone" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Neplatný PIN kód." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Príliš veľa neplatných pokusov o zadanie PIN kódu. Odhlasuje sa." + }, "unlockWithBiometrics": { "message": "Odomknúť pomocou biometrie" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Obnoviť položku" }, - "restoreItemConfirmation": { - "message": "Naozaj chcete obnoviť túto položku?" - }, "restoredItem": { "message": "Obnovená položka" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Biometria v prehliadači nie je podporovaná na tomto zariadení." }, + "biometricsFailedTitle": { + "message": "Biometria zlyhala" + }, + "biometricsFailedDesc": { + "message": "Biometria nebola vykonaná. Zvážte použitie hlavného hesla, alebo sa odhláste. Ak tento problém pretrváva, kontaktujte podporu Bitwarden." + }, "nativeMessaginPermissionErrorTitle": { "message": "Povolenie nebolo udelené" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Politika organizácie ovplyvňuje vaše možnosti vlastníctva." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Zásady organizácie zablokovali importovanie položiek do vášho osobného trezoru." + }, "excludedDomains": { "message": "Vylúčené domény" }, "excludedDomainsDesc": { "message": "Bitwarden nebude požadovať ukladanie prihlasovacích údajov pre tieto domény. Aby sa zmeny prejavili, musíte stránku obnoviť." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden nebude požadovať ukladanie prihlasovacích údajov pre tieto domény pre všetky prihlásené účty. Aby sa zmeny prejavili, musíte stránku obnoviť." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ nie je platná doména", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Vybrať priečinok..." }, - "ssoCompleteRegistration": { - "message": "Aby ste dokončili nastavenie prihlasovacieho portálu (SSO), prosím nastavte hlavné heslo na prístup a ochranu vášho trezora." + "noFoldersFound": { + "message": "Nenašli sa žiadne priečinky", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Povolenia vašej organizácie boli aktualizované, čo si vyžaduje nastavenie hlavného hesla.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Vaša organizácia vyžaduje, aby ste nastavili hlavné heslo.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Vyžaduje sa overenie", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hodiny" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exportovanie osobného trezora" }, - "exportingPersonalVaultDescription": { - "message": "Exportované budú iba položy osobného trezora spojené s $EMAIL$. Položky trezora organizácie nebudú zahrnuté.", + "exportingIndividualVaultDescription": { + "message": "Exportované budú iba položky súvisiace s $EMAIL$. Položky z trezora organizácie nebudú zahrnuté v exporte. Export bude obsahovať iba informácie z položiek v trezore, súvisiace prílohy nebudú súčasťou exportu.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Verzia servera" }, - "selfHosted": { - "message": "Vlastný hosting" + "selfHostedServer": { + "message": "vlastný hosting" }, "thirdParty": { "message": "Tretia strana" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Do vášho zariadenia bolo odoslané upozornenie." }, - "logInInitiated": { + "loginInitiated": { "message": "Iniciované prihlásenie" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Ako používať automatické vypĺňanie" }, "autofillSelectInfoWithCommand": { - "message": "Vyberte položku z tejto stránky, alebo použite skratku: $COMMAND$", + "message": "Vyberte položku z ponuky, použite klávesovú skratku $COMMAND$, alebo preskúmajte ďalšie možnosti nastavenia.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Vyberte položku z tejto stránky, alebo nastavte skratku v nastaveniach." + "message": "Vyberte položku z ponuky alebo preskúmajte ďalšie možnosti nastavenia." }, "gotIt": { "message": "Chápem" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Región" + "loggingInOn": { + "message": "Prihlásenie na" }, "opensInANewWindow": { "message": "Otvárať v novom okne" }, + "deviceApprovalRequired": { + "message": "Vyžaduje sa schválenie zariadenia. Vyberte možnosť schválenia nižšie:" + }, + "rememberThisDevice": { + "message": "Zapamätať si toto zariadenie" + }, + "uncheckIfPublicDevice": { + "message": "Odčiarknite, ak používate verejné zariadenie" + }, + "approveFromYourOtherDevice": { + "message": "Schváliť z iného zariadenia" + }, + "requestAdminApproval": { + "message": "Žiadosť o schválenie správcom" + }, + "approveWithMasterPassword": { + "message": "Schváliť pomocou hlavného hesla" + }, + "ssoIdentifierRequired": { + "message": "Pole identifikátora SSO je povinné." + }, "eu": { "message": "EÚ", "description": "European Union" }, - "us": { - "message": "USA", - "description": "United States" - }, "accessDenied": { "message": "Prístup zamietnutý. Nemáte oprávnenie na zobrazenie tejto stránky." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Zobrazenie" + }, + "accountSuccessfullyCreated": { + "message": "Účet bol úspešne vytvorený!" + }, + "adminApprovalRequested": { + "message": "Vyžaduje sa schválenie správcom" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Vaša žiadosť bola odoslaná správcovi." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Po schválení budete informovaný." + }, + "troubleLoggingIn": { + "message": "Máte problémy s prihlásením?" + }, + "loginApproved": { + "message": "Schválené prihlásenie" + }, + "userEmailMissing": { + "message": "Chýba e-mail používateľa" + }, + "deviceTrusted": { + "message": "Dôveryhodné zariadenie" + }, + "inputRequired": { + "message": "Vstup je povinný." + }, + "required": { + "message": "povinné" + }, + "search": { + "message": "Hladať" + }, + "inputMinLength": { + "message": "Vstup musí mať aspoň $COUNT$ znakov.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Nemôžete zadať viac než $COUNT$ znakov.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Tieto znaky nie sú povolené: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Hodnota musí byť aspoň $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Zadaná hodnota nesmie prekročiť $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 alebo viac e-mailov je neplatných" + }, + "inputTrimValidator": { + "message": "Vstup nesmie obsahovať iba prázdne znaky.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Vstupom nie je e-mailová adresa." + }, + "fieldsNeedAttention": { + "message": "Niektoré polia ($COUNT$) vyžadujú vašu pozornosť.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Vyberte --" + }, + "multiSelectPlaceholder": { + "message": "-- Začnite písať na filtrovanie --" + }, + "multiSelectLoading": { + "message": "Načítavajú sa možnosti..." + }, + "multiSelectNotFound": { + "message": "Nenašli sa žiadne položky" + }, + "multiSelectClearAll": { + "message": "Vyčistiť všetko" + }, + "plusNMore": { + "message": "+ $QUANTITY$ ďalších", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Podponuka" + }, + "toggleCollapse": { + "message": "Prepnúť zbalenie", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Importovať údaje do Bitwardenu?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Ochrániť údaje z LastPassu a importovať ich do Bitwardenu?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Uložiť ako nezašifrovaný súbor", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importovať do Bitwardenu", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importovanie...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Import údajov prebehol úspešne!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Chyba pri importovaní. Podrobnosti nájdete v konzole.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Počas importu sa vyskytla chyba siete.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias doména" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Položky, ktoré vyžadujú opätovné zadanie hlavného hesla sa nedajú automaticky vyplniť pri načítaní stránky. Automatické vypĺňanie pri načítaní stránky je vypnuté.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Automatické vypĺňanie pri načítaní stránky nastavené na pôvodnú predvoľbu.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Vypnite výzvu na opätovné zadanie hlavného hesla na úpravu tohto poľa", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Preskočiť na obsah" + }, + "bitwardenOverlayButton": { + "message": "Tlačidlo ponuky automatického vypĺňania Bitwardenu", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Prepnúť ponuku automatického vypĺňania Bitwardenu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Ponuka automatického vypĺňania Bitwardenu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Odomknite svoj účet na zobrazenie zodpovedajúcich prihlasovacích údajov", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Odomknúť účet", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Vyplňte prihlasovacie údaje pre", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Čiastočné používateľské meno", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Žiadne položky na zobrazenie", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Nová položka", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Pridať novú položku trezoru", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "K dispozícii je ponuka automatického vyplňovania Bitwardenu. Stlačte tlačidlo so šípkou nadol a vyberte.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Zapnúť" + }, + "ignore": { + "message": "Ignorovať" + }, + "importData": { + "message": "Import údajov", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Chyba importu" + }, + "importErrorDesc": { + "message": "Vyskytol sa problém s údajmi, ktoré ste sa pokúsili importovať. Vyriešte chyby uvedené nižšie v zdrojovom súbore a skúste to znova." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Vyriešte problémy nižšie a skúste to znova." + }, + "description": { + "message": "Popis" + }, + "importSuccess": { + "message": "Importovanie prebehlo úspešne" + }, + "importSuccessNumberOfItems": { + "message": "Dokopy bolo importovaných $AMOUNT$ položiek.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Skúsiť znova" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Pre túto akciu sa vyžaduje overenie. Ak chcete pokračovať, nastavte PIN kód." + }, + "setPin": { + "message": "Nastaviť PIN kód" + }, + "verifyWithBiometrics": { + "message": "Overiť pomocou biometrie" + }, + "awaitingConfirmation": { + "message": "Čakajúce potvrdenie" + }, + "couldNotCompleteBiometrics": { + "message": "Overenie pomocou biometrie zlyhalo." + }, + "needADifferentMethod": { + "message": "Potrebujete inú metódu?" + }, + "useMasterPassword": { + "message": "Použiť hlavné heslo" + }, + "usePin": { + "message": "Použiť PIN kód" + }, + "useBiometrics": { + "message": "Použiť biometrické údaje" + }, + "enterVerificationCodeSentToEmail": { + "message": "Zadajte overovací kód, ktorý vám bol zaslaný na e-mail." + }, + "resendCode": { + "message": "Znova odoslať kód" + }, + "total": { + "message": "Celkom" + }, + "importWarning": { + "message": "Importujete údaje do $ORGANIZATION$. Vaše údaje môžu byť zdieľané s členmi tejto organizácie. Chcete pokračovať?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Spustite DUO a postupujte podľa pokynov na dokončenie prihlásenia." + }, + "duoRequiredForAccount": { + "message": "Pre váš účet je potrebné dvojstupňové prihlásenie Duo." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Ak chcete dokončiť prihlásenie, otvorte rozšírenie." + }, + "popoutExtension": { + "message": "Zobraziť rozšírenie v novom okne" + }, + "launchDuo": { + "message": "Spustiť DUO" + }, + "importFormatError": { + "message": "Dáta nie sú správne formátované. Prosím, overte importovaný súbor a skúste to znova." + }, + "importNothingError": { + "message": "Nič sa neimportovalo." + }, + "importEncKeyError": { + "message": "Chyba pri dešifrovaní exportovaného súboru. Váš šifrovací kľúč sa nezhoduje so šifrovacím kľúčom použitým pri exporte údajov." + }, + "invalidFilePassword": { + "message": "Neplatné heslo súboru, použite heslo, ktoré ste zadali pri vytváraní exportného súboru." + }, + "importDestination": { + "message": "Cieľ importu" + }, + "learnAboutImportOptions": { + "message": "Zistiť viac o možnostiach importu" + }, + "selectImportFolder": { + "message": "Vyberte priečinok" + }, + "selectImportCollection": { + "message": "Vyberte zbierku" + }, + "importTargetHint": { + "message": "Zvoľte túto možnosť, ak chcete obsah importovaného súboru presunúť do $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Súbor obsahuje nepriradené položky." + }, + "selectFormat": { + "message": "Vyberte formát súboru importu" + }, + "selectImportFile": { + "message": "Vybrať súbor na import" + }, + "chooseFile": { + "message": "Vybrať súbor" + }, + "noFileChosen": { + "message": "Nebol vybratý žiadny súbor" + }, + "orCopyPasteFileContents": { + "message": "alebo kopírujte/vložte obsah súboru" + }, + "instructionsFor": { + "message": "$NAME$ pokyny", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Potvrdiť import trezoru" + }, + "confirmVaultImportDesc": { + "message": "Tento súbor je chránený heslom. Ak chcete importovať údaje, zadajte heslo súboru." + }, + "confirmFilePassword": { + "message": "Potvrdiť heslo súboru" + }, + "typePasskey": { + "message": "Prístupový kľúč" + }, + "passkeyNotCopied": { + "message": "Prístupový kód sa neskopíruje" + }, + "passkeyNotCopiedAlert": { + "message": "Prístupový kľúč sa do klonovanej položky neskopíruje. Chcete pokračovať v klonovaní tejto položky?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Overenie požadované iniciujúcim webom. Táto funkcia zatiaľ nie je implementovaná pre účty bez hlavného hesla." + }, + "logInWithPasskey": { + "message": "Prihlásiť sa s prístupovým kľúčom?" + }, + "passkeyAlreadyExists": { + "message": "Pre túto aplikáciu už existuje prístupový kľúč." + }, + "noPasskeysFoundForThisApplication": { + "message": "Pre túto aplikáciu neboli nájdené žiadne prístupové kľúče." + }, + "noMatchingPasskeyLogin": { + "message": "Pre túto stránku nemáte zodpovedajúce prihlasovacie údaje." + }, + "confirm": { + "message": "Potvrdiť" + }, + "savePasskey": { + "message": "Uložiť prístupový kľúč" + }, + "savePasskeyNewLogin": { + "message": "Uložiť prístupový kľúč ako nové prihlasovacie údaje" + }, + "choosePasskey": { + "message": "Vyberte prihlasovacie údaje, do ktorých chcete uložiť prístupový kľúč" + }, + "passkeyItem": { + "message": "Položka prístupového kľúča" + }, + "overwritePasskey": { + "message": "Prepísať prístupový kľúč?" + }, + "overwritePasskeyAlert": { + "message": "Táto položka už obsahuje prístupový kľúč. Naozaj chcete prepísať aktuálny prístupový kľúč?" + }, + "featureNotSupported": { + "message": "Funkcia ešte nie je podporovaná" + }, + "yourPasskeyIsLocked": { + "message": "Na použitie prístupového kľúča sa vyžaduje overenie. Ak chcete pokračovať, overte svoju totožnosť." + }, + "multifactorAuthenticationCancelled": { + "message": "Viacfaktorové overenie zrušené" + }, + "noLastPassDataFound": { + "message": "Nenašli sa žiadne údaje z LastPass" + }, + "incorrectUsernameOrPassword": { + "message": "Nesprávne používateľské meno alebo heslo" + }, + "incorrectPassword": { + "message": "Nesprávne heslo" + }, + "incorrectCode": { + "message": "Nesprávny kód" + }, + "incorrectPin": { + "message": "Nesprávny PIN kód" + }, + "multifactorAuthenticationFailed": { + "message": "Viacfaktorové overenie zlyhalo" + }, + "includeSharedFolders": { + "message": "Zahrnúť zdieľané priečinky" + }, + "lastPassEmail": { + "message": "E-mail LastPass" + }, + "importingYourAccount": { + "message": "Importovanie vášho účtu..." + }, + "lastPassMFARequired": { + "message": "Vyžaduje sa viacfaktorové overenie LastPass" + }, + "lastPassMFADesc": { + "message": "Zadajte jednorazový prístupový kód z aplikácie na overovanie" + }, + "lastPassOOBDesc": { + "message": "Schváľte žiadosť o prihlásenie v aplikácii na overovanie alebo zadajte jednorazový prístupový kód." + }, + "passcode": { + "message": "Prístupový kód" + }, + "lastPassMasterPassword": { + "message": "Hlavné heslo LastPass" + }, + "lastPassAuthRequired": { + "message": "Vyžaduje sa overenie LastPass" + }, + "awaitingSSO": { + "message": "Čaká sa na overenie SSO" + }, + "awaitingSSODesc": { + "message": "Pokračujte v prihlasovaní pomocou prihlasovacích údajov svojej spoločnosti." + }, + "seeDetailedInstructions": { + "message": "Podrobné pokyny nájdete na našej stránke pomoci na adrese", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Importovať priamo z LastPass" + }, + "importFromCSV": { + "message": "Importovať z CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Skúste to znova alebo vyhľadajte e-mail od spoločnosti LastPass, na overenie, či ste to vy." + }, + "collection": { + "message": "Zbierka" + }, + "lastPassYubikeyDesc": { + "message": "Vložte kľúč YubiKey priradený k vášmu účtu LastPass do USB portu počítača a potom sa dotknite jeho tlačidla." + }, + "switchAccount": { + "message": "Prepnúť účet" + }, + "switchAccounts": { + "message": "Prepnúť účty" + }, + "switchToAccount": { + "message": "Prepnúť na účet" + }, + "activeAccount": { + "message": "Aktívny účet" + }, + "availableAccounts": { + "message": "Dostupné účty" + }, + "accountLimitReached": { + "message": "Dosiahnutý limit účtu. Odhláste sa z účtu, ak chcete pridať ďalší." + }, + "active": { + "message": "aktívne" + }, + "locked": { + "message": "zamknuté" + }, + "unlocked": { + "message": "odomknuté" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hotované na" + }, + "useDeviceOrHardwareKey": { + "message": "Použiť vaše zariadenie alebo hardvérový kľúč" + }, + "justOnce": { + "message": "Iba raz" + }, + "alwaysForThisSite": { + "message": "Vždy pre túto stránku" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ pridaná do vylúčených domén.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Bežné formáty", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Nastaviť Bitwarden ako predvoleného správcu hesiel?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ak nenastavíte túto možnosť, môže to spôsobiť konflikty medzi ponukou automatického vypĺňania Bitwardenu a ponukou vášho prehliadača.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Nastaviť Bitwarden ako predvolený správca hesiel", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Nie je možné nastaviť Bitwarden ako predvoleného správcu hesiel", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Ak chcete nastaviť Bitwarden ako predvoleného správcu hesiel, musíte mu udeliť oprávnenia na ochranu súkromia v prehliadači.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Nastaviť ako predvolený", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Prihlasovacie údaje boli úspešne uložené!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Prihlasovacie údaje boli úspešne aktualizované!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Chyba pri ukladaní prihlasovacích údajov. Viac informácii nájdete v konzole.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Odstrániť prístupový kľúč" + }, + "passkeyRemoved": { + "message": "Prístupový kľúč bol odstránený" + }, + "unassignedItemsBanner": { + "message": "Upozornenie: Nepriradené položky organizácie už nie sú viditeľné v zobrazení Všetky Trezory a sú prístupné len cez administrátorskú konzolu. Aby boli viditeľné, priraďte tieto položky do kolekcie z konzoly administrátora." } } diff --git a/apps/browser/src/_locales/sl/messages.json b/apps/browser/src/_locales/sl/messages.json index e7b9b7b8a7..3e2690be30 100644 --- a/apps/browser/src/_locales/sl/messages.json +++ b/apps/browser/src/_locales/sl/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Samodejno izpolnjevanje" }, + "autoFillLogin": { + "message": "Samodejno izpolni prijavo" + }, + "autoFillCard": { + "message": "Samodejno izpolni kartico" + }, + "autoFillIdentity": { + "message": "Samodejno izpolni identiteto" + }, "generatePasswordCopied": { "message": "Generiraj geslo (kopirano)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Ni ustreznih prijav." }, + "noCards": { + "message": "Ni kartic" + }, + "noIdentities": { + "message": "Ni identitet" + }, + "addLoginMenu": { + "message": "Dodaj prijavo" + }, + "addCardMenu": { + "message": "Dodaj kartico" + }, + "addIdentityMenu": { + "message": "Dodaj identiteto" + }, "unlockVaultMenu": { "message": "Odkleni svoj trezor" }, @@ -244,6 +268,9 @@ "length": { "message": "Dolžina" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Velike črke (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Geslo" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Večbesedno geslo" }, @@ -338,6 +368,12 @@ "other": { "message": "Drugo" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Da spremenite časovne omejitve trezorja, nastavite metodo odklepanja." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Ocenite to razširitev" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Zakleni zdaj" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Takoj" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Vaš račun je ustvarjen. Lahko se prijavite." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "Poslali smo vam e-poštno spročilo z namigom za vaše glavno geslo." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Izbrane prijave na tej strani ni mogoče samodejno izpolniti. Namesto tega podatke kopirajte in prilepite." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Odjavljen" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Predlagaj dodajanje novega elementa, če v trezorju ni ustreznega." }, + "addLoginNotificationDescAlt": { + "message": "Če predmeta ni v trezorju, ga je potrebno dodati. Velja za vse prijavljene račune." + }, "showCardsCurrentTab": { "message": "Prikaži kartice na strani Zavihek" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Vprašaj, ali naj Bitwarden posodobi geslo prijave, kadar zazna spremembo gesla na spletni strani" }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Želite, da Bitwarden shrani spremembo tega gesla?" }, "notificationChangeSave": { "message": "Da, posodobi zdaj" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Prikaži možnosti kontekstnega menuja" }, "contextMenuItemDesc": { "message": "Z desnim klikom se vam prikažejo možnosti generiranja gesel in shranjenih prijav za spletno stran, na kateri ste." }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "Privzet način preverjanja ujemanja URI-ja", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Spremeni temo aplikacije." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Temno", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Funkcija ni na voljo." }, - "updateKey": { - "message": "To funkcijo lahko uporabite šele, ko posodobite svoj šifrirni ključ." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium članstvo" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB šifriranega prostora za shrambo podatkov." }, - "ppremiumSignUpTwoStep": { - "message": "Dodatne možnosti za prijavo v dveh korakih, n.pr. YubiKey, FIDO U2F in Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Higiena gesel, zdravje računa in poročila o kraji podatkov, ki vam pomagajo ohraniti varnost vašega trezorja." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Samodejno izpolni, ko se stran naloži" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Nepravilna PIN-koda." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Prijava z biometriko" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Obnovi element" }, - "restoreItemConfirmation": { - "message": "Ste prepričani, da želite obnoviti ta element?" - }, "restoredItem": { "message": "Element obnovljen" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Dovoljenje manjka" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Izključene domene" }, "excludedDomainsDesc": { "message": "Za te domene Bitwarden ne bo predlagal shranjevanja prijavnih podatkov. Sprememba nastavitev stopi v veljavo šele, ko osvežite stran." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ ni veljavna domena", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Izberi mapo..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Ur" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Izvoženi bodo samo posamezni elementi trezorja, ki so povezani z $EMAIL$. Elementi trezorjev organizacij ne bodo izvoženi.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Verzija strežnika" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "Kako uporabljati samodejno izpolnjevanje" }, "autofillSelectInfoWithCommand": { - "message": "Izberite element na tej strani ali pa uporabite bližnjico $COMMAND$.", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Izberite element na tej strani ali pa nastavite bližnjico v nastavitvah." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Razumem" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Odpre se v novem oknu" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/sr/messages.json b/apps/browser/src/_locales/sr/messages.json index 12d1c66da8..fef1a4eb8a 100644 --- a/apps/browser/src/_locales/sr/messages.json +++ b/apps/browser/src/_locales/sr/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Аутоматско допуњавање" }, + "autoFillLogin": { + "message": "Ауто-пуњење пријаве" + }, + "autoFillCard": { + "message": "Ауто-пуњење картице" + }, + "autoFillIdentity": { + "message": "Ауто-пуњење идентитета" + }, "generatePasswordCopied": { "message": "Генериши Лозинку (копирано)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Нема одговарајућих пријављивања." }, + "noCards": { + "message": "Нема карте" + }, + "noIdentities": { + "message": "Нема идентитета" + }, + "addLoginMenu": { + "message": "Нема пријаве" + }, + "addCardMenu": { + "message": "Додати картицу" + }, + "addIdentityMenu": { + "message": "Додати идентитет" + }, "unlockVaultMenu": { "message": "Откључај свој сеф" }, @@ -244,6 +268,9 @@ "length": { "message": "Дужина" }, + "passwordMinLength": { + "message": "Минимална дужина лозинке" + }, "uppercase": { "message": "Велика слова (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Лозинка" }, + "totp": { + "message": "Тајна аутентификатора" + }, "passphrase": { "message": "Фраза лозинке" }, @@ -338,6 +368,12 @@ "other": { "message": "Остало" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Подесите метод откључавања да бисте променили радњу временског ограничења сефа." + }, + "unlockMethodNeeded": { + "message": "Подесите метод откључавања у подешавањима" + }, "rateExtension": { "message": "Оцени овај додатак" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Закључај одмах" }, + "lockAll": { + "message": "Закључај све" + }, "immediately": { "message": "Одмах" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Ваш налог је креиран! Сада се можете пријавити." }, + "youSuccessfullyLoggedIn": { + "message": "Успешно сте се пријавили" + }, + "youMayCloseThisWindow": { + "message": "Можете затворити овај прозор" + }, "masterPassSent": { "message": "Послали смо Вам поруку са саветом главне лозинке." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Није могуће аутоматско допуњавање одабране ставке на овој страници. Уместо тога копирајте и налепите информације." }, + "totpCaptureError": { + "message": "Није могуће скенирати QR кôд са тренутне веб странице" + }, + "totpCaptureSuccess": { + "message": "Верификациони кôд додат" + }, + "totpCapture": { + "message": "Скенирајте QR кôд аутентификатора са тренутне веб странице" + }, + "copyTOTP": { + "message": "Копирати једнократни кôд (TOTP)" + }, "loggedOut": { "message": "Одјављено" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "„Нотификације Додај Лозинку“ аутоматски тражи да сачувате нове пријаве у сефу кад год се први пут пријавите на њих." }, + "addLoginNotificationDescAlt": { + "message": "Затражите да додате ставку ако она није пронађена у вашем сефу. Односи се на све пријављене налоге." + }, "showCardsCurrentTab": { "message": "Прикажи кредитне картице на страници картице" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Прикажи потврду за ажурирање тренутне лозинке за пријаву када се промена препозна на Web страници." }, + "changedPasswordNotificationDescAlt": { + "message": "Затражите ажурирање лозинке за пријаву када се открије промена на веб локацији. Односи се на све пријављене налоге." + }, + "enableUsePasskeys": { + "message": "Затражите за сачувавање и коришћење приступне кључеве" + }, + "usePasskeysDesc": { + "message": "Затражите да сачувате нове приступне кључеве или се пријавите са приступним кључевима ускладиштеним у вашем сефу. Односи се на све пријављене налоге." + }, "notificationChangeDesc": { "message": "Да ли желите да ажурирате ову лозинку за Bitwarden?" }, "notificationChangeSave": { "message": "Ажурирај" }, + "notificationUnlockDesc": { + "message": "Откључати Bitwarden сеф да би извршили ауто-пуњење." + }, + "notificationUnlock": { + "message": "Откључај" + }, "enableContextMenuItem": { "message": "Прикажи контекстни мени" }, "contextMenuItemDesc": { "message": "Користите други клик за приступање генерисању лозинки и пријавама за тренутну web страницу. " }, + "contextMenuItemDescAlt": { + "message": "Користите други клик за приступање генерисању лозинки и пријавама за тренутну web страницу. Односи се на све пријављене налоге." + }, "defaultUriMatchDetection": { "message": "Стандардно налажење УРЛ", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Промени боје апликације" }, + "themeDescAlt": { + "message": "Промените тему боје апликације. Односи се на све пријављене налоге." + }, "dark": { "message": "Тамна", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Функција је недоступна" }, - "updateKey": { - "message": "Не можете да користите ову способност док не промените Ваш кључ за шифровање." + "encryptionKeyMigrationRequired": { + "message": "Потребна је миграција кључа за шифровање. Пријавите се преко веб сефа да бисте ажурирали кључ за шифровање." }, "premiumMembership": { "message": "Премијум чланство" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1ГБ шифровано складиште за прилоге." }, - "ppremiumSignUpTwoStep": { - "message": "Додатне опције пријаве у два корака као што су YubiKey, FIDO U2F, и Duo." + "premiumSignUpTwoStepOptions": { + "message": "Приоритарне опције пријаве у два корака као што су YubiKey и Duo." }, "ppremiumSignUpReports": { "message": "Извештаји о хигијени лозинки, здравственом стању налога и кршењу података да бисте заштитили сеф." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "УРЛ адресе окружења су сачуване." }, + "showAutoFillMenuOnFormFields": { + "message": "Прикажи мени за ауто-попуњавање на пољима обрасца", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Односи се на све пријављене налоге." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Искључите уграђен менаџер лозинки вашег претраживача да бисте избегли сукобе." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Измените подешавања претраживача." + }, + "autofillOverlayVisibilityOff": { + "message": "Искључено", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Када је поље изабрано (у фокусу)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Када је изабрана икона ауто-попуњавања", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Омогући аутоматско попуњавање након учитавања странице" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Прикажи препознатљиву слику поред сваке ставке за пријаву." }, + "faviconDescAlt": { + "message": "Приказује препознатљиву слику поред сваке пријаве. Важи за све пријављене налоге." + }, "enableBadgeCounter": { "message": "Прикажи бедж са бројачем" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Погрешан ПИН код." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Превише покушаја уноса неважећег ПИН-а. Одјављивања." + }, "unlockWithBiometrics": { "message": "Откључавајте помоћу биометрије" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Врати ставку" }, - "restoreItemConfirmation": { - "message": "Да ли сте сигурни да желите да вратите ову ставку?" - }, "restoredItem": { "message": "Ставка враћена" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Биометрија прегледача није подржана на овом уређају." }, + "biometricsFailedTitle": { + "message": "Биометрија није успела" + }, + "biometricsFailedDesc": { + "message": "Биометрија се не може завршити, размислите о коришћењу главне лозинке или одјавите се. Ако се ово настави, контактирајте подршку Bitwarden-а." + }, "nativeMessaginPermissionErrorTitle": { "message": "Дозвола није дата" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "смернице организације утичу на ваше могућности власништва." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Политика организације је блокирала увоз ставки у ваш појединачни сеф." + }, "excludedDomains": { "message": "Изузети домени" }, "excludedDomainsDesc": { "message": "Bitwarden неће тражити да сачува податке за пријављивање за ове домене. Морате освежити страницу да би промене ступиле на снагу." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden неће тражити да сачува податке за пријављивање за ове домене за све пријављене налоге. Морате освежити страницу да би промене ступиле на снагу." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ није важећи домен", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Изаберите фасциклу..." }, - "ssoCompleteRegistration": { - "message": "Да бисте довршили пријављивање помоћу SSO, молимо да поставите главну лозинку за приступ и заштиту вашег сефа." + "noFoldersFound": { + "message": "Нису пронађене фасцикле", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Дозволе за вашу организацију су ажуриране, што захтева да поставите главну лозинку.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Ваша организација захтева да поставите главну лозинку.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Потребдна верификација", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Сата" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Извоз личног сефа" }, - "exportingPersonalVaultDescription": { - "message": "Само предмети личног сефа повезани са $EMAIL$ биће извезени. Ставке организационог сефа неће бити укључене.", + "exportingIndividualVaultDescription": { + "message": "Само појединачне ставке сефа повезане са $EMAIL$ ће бити извењене. Ставке организационог сефа неће бити укључене. Само информације о ставкама из сефа ће бити извезене и неће укључивати повезане прилоге.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Верзија сервера" }, - "selfHosted": { - "message": "Личан хостинг" + "selfHostedServer": { + "message": "личан хостинг" }, "thirdParty": { "message": "Трећа страна" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Обавештење је послато на ваш уређај." }, - "logInInitiated": { + "loginInitiated": { "message": "Пријава је покренута" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Како ауто-попуњавати" }, "autofillSelectInfoWithCommand": { - "message": "Изаберите ставку са ове странице или користите пречицу: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Изаберите ставку са ове странице или поставите пречицу у подешавањима." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Разумем" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Регион" + "loggingInOn": { + "message": "Пријављено на" }, "opensInANewWindow": { "message": "Отвара се у новом прозору" }, + "deviceApprovalRequired": { + "message": "Потребно је одобрење уређаја. Изаберите опцију одобрења испод:" + }, + "rememberThisDevice": { + "message": "Запамти овај уређај" + }, + "uncheckIfPublicDevice": { + "message": "Искључите ако се користи јавни уређај" + }, + "approveFromYourOtherDevice": { + "message": "Одобри са мојим другим уређајем" + }, + "requestAdminApproval": { + "message": "Затражити одобрење администратора" + }, + "approveWithMasterPassword": { + "message": "Одобрити са главном лозинком" + }, + "ssoIdentifierRequired": { + "message": "Потребан је SSO идентификатор организације." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Одбијен приступ. Немате дозволу да видите ову страницу." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Приказ" + }, + "accountSuccessfullyCreated": { + "message": "Налог је успешно креиран!" + }, + "adminApprovalRequested": { + "message": "Захтевано је одобрење администратора" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Ваш захтев је послат вашем администратору." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Бићете обавештени када буде одобрено." + }, + "troubleLoggingIn": { + "message": "Имате проблема са пријављивањем?" + }, + "loginApproved": { + "message": "Пријава је одобрена" + }, + "userEmailMissing": { + "message": "Недостаје имејл корисника" + }, + "deviceTrusted": { + "message": "Уређај поуздан" + }, + "inputRequired": { + "message": "Унос је потребан." + }, + "required": { + "message": "обавезно" + }, + "search": { + "message": "Тражи" + }, + "inputMinLength": { + "message": "Унос трба имати најмање $COUNT$ слова.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Унос не сме бити већи од $COUNT$ карактера.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Следећи знакови нису дозвољени: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Вредност мора бити најмање $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Вредност не сме бити већа од $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 или више имејлова су неважећи" + }, + "inputTrimValidator": { + "message": "Унос не сме да садржи само размак.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Унос није имејл." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ поље(а) изнад захтевај(у) вашу пажњу.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Одабрати --" + }, + "multiSelectPlaceholder": { + "message": "-- Тип за филтрирање --" + }, + "multiSelectLoading": { + "message": "Преузимање опција..." + }, + "multiSelectNotFound": { + "message": "Нема предмета" + }, + "multiSelectClearAll": { + "message": "Обриши све" + }, + "plusNMore": { + "message": "+ још $QUANTITY$", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Под-мени" + }, + "toggleCollapse": { + "message": "Промени проширење", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Увезите своје податке у Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Заштитите своје LastPass податке и увезите у Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Сачувати као нешифровану датотеку", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Увоз у Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Увоз...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Подаци су успешно увезени!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Грешка при увозу. Проверите конзолу за детаље.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Дошло је до грешке на мрежи током увоза.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Домен алијаса" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Ставке са упитом за поновно постављање главне лозинке не могу се ауто-попунити при учитавању странице. Ауто-попуњавање при учитавању странице је искључено.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Ауто-попуњавање при учитавању странице је подешено да користи подразумевано подешавање.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Искључите поновни упит главне лозинке да бисте уредили ово поље", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Прескочи на садржај" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden мени дугмета ауто-попуњавања", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Пребаци мени ауто-попуњавања Bitwarden-а", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden мени ауто-попуњавања", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Откључајте налог да бисте видели подударне пријаве", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Откључај налог", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Попунити акредитиве за", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Делимично корисничко име", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Нема ставки за приказивање", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Нова ставке", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Додајте нову ставку сефу", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Мени ауто-попуњавања Bitwarden-а је доступан. Притисните тастер са стрелицом надоле да бисте изабрали.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Укључи" + }, + "ignore": { + "message": "Игнориши" + }, + "importData": { + "message": "Увези податке", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Грешка при увозу" + }, + "importErrorDesc": { + "message": "Појавио се проблем са подацима које сте покушали да увезете. Решите проблеме у изворној датотеци наведене испод и покушајте поново." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Поправите грешке испод и покушајте поново." + }, + "description": { + "message": "Опис" + }, + "importSuccess": { + "message": "Подаци су увезени" + }, + "importSuccessNumberOfItems": { + "message": "$AMOUNT$ ставке/и су увезене.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Покушајте поново" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "За ову радњу је потребна верификација. Подесите ПИН да бисте наставили." + }, + "setPin": { + "message": "Поставите PIN" + }, + "verifyWithBiometrics": { + "message": "Верификујте помоћу биометрије" + }, + "awaitingConfirmation": { + "message": "Чека се потврда" + }, + "couldNotCompleteBiometrics": { + "message": "Није могуће завршити биометрију." + }, + "needADifferentMethod": { + "message": "Потребан вам је други начин?" + }, + "useMasterPassword": { + "message": "Користите главну лозинку" + }, + "usePin": { + "message": "Користите ПИН" + }, + "useBiometrics": { + "message": "Користите биометрију" + }, + "enterVerificationCodeSentToEmail": { + "message": "Унесите верификациони кôд који је послат на Вашу е-адресу." + }, + "resendCode": { + "message": "Поново пошаљите кôд" + }, + "total": { + "message": "Збир" + }, + "importWarning": { + "message": "Увозите податке у $ORGANIZATION$. Ваши подаци могу бити подељени са члановима ове организације. Да ли желите да наставите?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Покренути DUO и пратите кораке да бисте завршили пријављивање." + }, + "duoRequiredForAccount": { + "message": "Duo пријава у два корака је потребна за ваш налог." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Искачући додатак да бисте довршили пријаву." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Покренути DUO" + }, + "importFormatError": { + "message": "Подаци нису правилно форматирани. Проверите датотеку за увоз и покушајте поново." + }, + "importNothingError": { + "message": "Ништа није увежено." + }, + "importEncKeyError": { + "message": "Грешка у дешифрирању извозне датотеке. Ваш кључ за шифровање не одговара кључу који се користио за извоз података." + }, + "invalidFilePassword": { + "message": "Неважећа лозинка за датотеку, користите лозинку коју сте унели када сте креирали датотеку за извоз." + }, + "importDestination": { + "message": "Смештај увоза" + }, + "learnAboutImportOptions": { + "message": "Сазнајте више о опцијама увоза" + }, + "selectImportFolder": { + "message": "Изабери фасциклу" + }, + "selectImportCollection": { + "message": "Изабери колекцију" + }, + "importTargetHint": { + "message": "Изаберите ову опцију ако желите да се садржај увезене датотеке премести у $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Датотека садржи недодељене ставке." + }, + "selectFormat": { + "message": "Одабрати формат датотеке за увоз" + }, + "selectImportFile": { + "message": "Одабрати датотеку за увоз" + }, + "chooseFile": { + "message": "Изабери датотеку" + }, + "noFileChosen": { + "message": "Није изабрана ниједна датотека" + }, + "orCopyPasteFileContents": { + "message": "или копирајте/налепите садржај датотеке за увоз" + }, + "instructionsFor": { + "message": "Инструкције за $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Потврдите увоз сефа" + }, + "confirmVaultImportDesc": { + "message": "Ова датотека је заштићена лозинком. Унесите лозинку датотеке да бисте увезли податке." + }, + "confirmFilePassword": { + "message": "Потврдити лозинку датотеке" + }, + "typePasskey": { + "message": "Приступачни кључ" + }, + "passkeyNotCopied": { + "message": "Приступачни кључ неће бити копиран" + }, + "passkeyNotCopiedAlert": { + "message": "Приступачни кључ неће бити копиран на клонирану ставку. Да ли желите да наставите са клонирањем ставке?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Верификацију захтева сајт који покреће. Ова функција још увек није имплементирана за налоге без главне лозинке." + }, + "logInWithPasskey": { + "message": "Пријавите се са приступачним кључем?" + }, + "passkeyAlreadyExists": { + "message": "За ову апликацију већ постоји приступачни кључ." + }, + "noPasskeysFoundForThisApplication": { + "message": "Нису пронађени приступни кључеви за ову апликацију." + }, + "noMatchingPasskeyLogin": { + "message": "Немате одговарајућу пријаву за овај сајт." + }, + "confirm": { + "message": "Потврди" + }, + "savePasskey": { + "message": "Сачувати приступни кључ" + }, + "savePasskeyNewLogin": { + "message": "Сачувати приступни кључ као нову пријаву" + }, + "choosePasskey": { + "message": "Изаберите пријаву да бисте сачували овај приступни кључ" + }, + "passkeyItem": { + "message": "Ставка приступачног кључа" + }, + "overwritePasskey": { + "message": "Заменити приступни кључ?" + }, + "overwritePasskeyAlert": { + "message": "Ова ставка већ садржи приступни кључ. Да ли сте сигурни да желите да замените тренутни приступни кључ?" + }, + "featureNotSupported": { + "message": "Функција још није подржана" + }, + "yourPasskeyIsLocked": { + "message": "За коришћење приступног кључа је потребна аутентификација. Потврдите свој идентитет да бисте наставили." + }, + "multifactorAuthenticationCancelled": { + "message": "Вишефакторска аутентификација је отказана" + }, + "noLastPassDataFound": { + "message": "Нема LastPass податке" + }, + "incorrectUsernameOrPassword": { + "message": "Неважеће корисничко име или лозинка" + }, + "incorrectPassword": { + "message": "Погрешна лозинка" + }, + "incorrectCode": { + "message": "Погрешан кôд" + }, + "incorrectPin": { + "message": "Нетачан PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Вишефакторска аутентификација је неуспешна" + }, + "includeSharedFolders": { + "message": "Укључи дељене фасцикле" + }, + "lastPassEmail": { + "message": "LastPass имејл" + }, + "importingYourAccount": { + "message": "Увоз налога..." + }, + "lastPassMFARequired": { + "message": "LastPass вишефакторска аутентификација је потребна" + }, + "lastPassMFADesc": { + "message": "Унесите своју једнократну лозинку из апликације за аутентификацију" + }, + "lastPassOOBDesc": { + "message": "Одобрите захтев за пријаву у апликацији за аутентификацију или унесите једнократну лозинку." + }, + "passcode": { + "message": "Лозинка" + }, + "lastPassMasterPassword": { + "message": "LastPass главна лозинка" + }, + "lastPassAuthRequired": { + "message": "LastPass аутентификација је потребна" + }, + "awaitingSSO": { + "message": "Чекање SSO аутентификације" + }, + "awaitingSSODesc": { + "message": "Наставите да се пријављујете користећи акредитиве своје компаније." + }, + "seeDetailedInstructions": { + "message": "Погледајте детаљна упутства на нашој веб локацији за помоћ на", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Директан увоз из LastPass-а" + }, + "importFromCSV": { + "message": "Увоз из CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Покушајте поново или потражите имејл од LastPass за потврду идентитета." + }, + "collection": { + "message": "Колекција" + }, + "lastPassYubikeyDesc": { + "message": "Унети YubiKey који је асоциран са LastPass налогом у УСБ порт вашег рачунара, и затим додирните његово дугме." + }, + "switchAccount": { + "message": "Промени налог" + }, + "switchAccounts": { + "message": "Промени налог" + }, + "switchToAccount": { + "message": "Пребаците се на налог" + }, + "activeAccount": { + "message": "Активан налог" + }, + "availableAccounts": { + "message": "Доступни налози" + }, + "accountLimitReached": { + "message": "Граница налога достигнута. Одјавите се од једног налога да би додали други." + }, + "active": { + "message": "активан" + }, + "locked": { + "message": "закључан" + }, + "unlocked": { + "message": "деблокиран" + }, + "server": { + "message": "сервер" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Користите свој уређај или хардверски кључ" + }, + "justOnce": { + "message": "Само једном" + }, + "alwaysForThisSite": { + "message": "Увек за овај сајт" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ додато на искључене домене.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Уобичајени формати", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Урадите да Bitwarden буде ваш подразумевани менаџер лозинки?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Игнорисање ове опције може довести до сукоба између љутопуњења Bitwarden-а и вашег прегледача.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Урадите да Bitwarden буде ваш подразумевани менаџер лозинки", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Не може да се постави Bitwarden као подразумевани менаџер лозинки", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Морате дати дозволе за приватност прегледача Bitwarden-у да би се поставио као подразумевани менаџер.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Постави као подразумевано", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Акредитиви су успешно сачувани!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Акредитиви су успешно ажурирани!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Грешка при чувању акредитива. Проверите конзолу за детаље.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Уклонити приступачни кључ" + }, + "passkeyRemoved": { + "message": "Приступачни кључ је уклоњен" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/sv/messages.json b/apps/browser/src/_locales/sv/messages.json index 21291110b2..0a27862c74 100644 --- a/apps/browser/src/_locales/sv/messages.json +++ b/apps/browser/src/_locales/sv/messages.json @@ -11,7 +11,7 @@ "description": "Extension description" }, "loginOrCreateNewAccount": { - "message": "Logga in eller skapa ett nytt konto för att komma åt dina lösenord." + "message": "Logga in eller skapa ett nytt konto för att komma åt ditt säkra valv." }, "createAccount": { "message": "Skapa konto" @@ -91,6 +91,15 @@ "autoFill": { "message": "Fyll i automatiskt" }, + "autoFillLogin": { + "message": "Autofyll inloggning" + }, + "autoFillCard": { + "message": "Autofyll kort" + }, + "autoFillIdentity": { + "message": "Autofyll identitet" + }, "generatePasswordCopied": { "message": "Skapa lösenord (kopierad)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Inga matchande inloggningar" }, + "noCards": { + "message": "Inga kort" + }, + "noIdentities": { + "message": "Inga identiteter" + }, + "addLoginMenu": { + "message": "Lägg till inloggning" + }, + "addCardMenu": { + "message": "Lägg till kort" + }, + "addIdentityMenu": { + "message": "Lägg till identitet" + }, "unlockVaultMenu": { "message": "Lås upp ditt valv" }, @@ -233,7 +257,7 @@ "message": "Välj" }, "generatePassword": { - "message": "Skapa lösenord" + "message": "Generera lösenord" }, "regeneratePassword": { "message": "Återskapa lösenord" @@ -244,6 +268,9 @@ "length": { "message": "Längd" }, + "passwordMinLength": { + "message": "Minsta tillåtna lösenordslängd" + }, "uppercase": { "message": "Versaler (A-Ö)" }, @@ -299,6 +326,9 @@ "password": { "message": "Lösenord" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Lösenordsfras" }, @@ -338,11 +368,17 @@ "other": { "message": "Annat" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Ställ in en upplåsningsmetod i Inställningar" + }, "rateExtension": { "message": "Betygsätt tillägget" }, "rateExtensionDesc": { - "message": "Överväg gärna att hjälpa oss genom att ge oss en bra recension!" + "message": "Överväg gärna att skriva en recension om oss!" }, "browserNotSupportClipboard": { "message": "Din webbläsare har inte stöd för att enkelt kopiera till urklipp. Kopiera till urklipp manuellt istället." @@ -370,7 +406,7 @@ } }, "invalidMasterPassword": { - "message": "Felaktigt huvudlösenord" + "message": "Ogiltigt huvudlösenord" }, "vaultTimeout": { "message": "Valvets tidsgräns" @@ -378,6 +414,9 @@ "lockNow": { "message": "Lås nu" }, + "lockAll": { + "message": "Lås alla" + }, "immediately": { "message": "Omedelbart" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Ditt nya konto har skapats! Du kan logga in nu." }, + "youSuccessfullyLoggedIn": { + "message": "Du är nu inloggad" + }, + "youMayCloseThisWindow": { + "message": "Du kan stänga detta fönster" + }, "masterPassSent": { "message": "Vi har skickat ett e-postmeddelande till dig med din huvudlösenordsledtråd." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Kunde inte automatiskt fylla i det valda objektet på den här webbsidan. Klipp/klistra informationen istället." }, + "totpCaptureError": { + "message": "Det går inte att skanna QR-koden från den aktuella webbsidan" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Kopiera autentiseringsnyckel (TOTP)" + }, "loggedOut": { "message": "Utloggad" }, @@ -534,7 +591,7 @@ "message": "Lösenord kopierat" }, "uri": { - "message": "URI (länk)" + "message": "URI" }, "uriPosition": { "message": "URI $POSITION$", @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Be om att lägga till ett objekt om det inte finns i ditt valv." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Visa kort på fliksida" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Be om att uppdatera ett lösenord när en ändring upptäcks på en webbplats." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Be om att spara och använda lösennycklar" + }, + "usePasskeysDesc": { + "message": "Be om att spara nya lösennycklar eller logga in med nycklar som lagras i ditt valv. Gäller för alla inloggade konton." + }, "notificationChangeDesc": { "message": "Vill du uppdatera det här lösenordet i Bitwarden?" }, "notificationChangeSave": { "message": "Uppdatera" }, + "notificationUnlockDesc": { + "message": "Lås upp ditt Bitwarden-valv för att slutföra begäran om automatisk ifyllnad." + }, + "notificationUnlock": { + "message": "Lås upp" + }, "enableContextMenuItem": { "message": "Visa alternativ för snabbmenyn" }, "contextMenuItemDesc": { "message": "Använd ett andra klick för att komma åt lösenordsgenerering och matchande inloggningar för webbplatsen. " }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "Standardmatchning för URI", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Ändra programmets färgtema." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Mörkt", "description": "Dark color" @@ -690,7 +771,7 @@ "message": "Delad" }, "learnOrg": { - "message": "Lär dig om organisationer" + "message": "Läs mer om organisationer" }, "learnOrgConfirmation": { "message": "Bitwarden gör det möjligt för dig att dela objekt i valvet med andra genom att använda en organisation. Vill du besöka bitwarden.com för att lära dig mer?" @@ -730,7 +811,7 @@ "message": "Kopiera verifieringskod" }, "attachments": { - "message": "Bifogade filer" + "message": "Bilagor" }, "deleteAttachment": { "message": "Radera bilaga" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Funktion ej tillgänglig" }, - "updateKey": { - "message": "Du kan inte använda denna funktion förrän du uppdaterar din krypteringsnyckel." + "encryptionKeyMigrationRequired": { + "message": "Migrering av krypteringsnyckel krävs. Logga in på webbvalvet för att uppdatera din krypteringsnyckel." }, "premiumMembership": { "message": "Premium-medlemskap" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB lagring av krypterade filer." }, - "ppremiumSignUpTwoStep": { - "message": "Ytterligare alternativ för tvåstegsverifiering såsom YubiKey, FIDO U2F och Duo." + "premiumSignUpTwoStepOptions": { + "message": "Premium-alternativ för tvåstegsverifiering, såsom YubiKey och Duo." }, "ppremiumSignUpReports": { "message": "Lösenordshygien, kontohälsa och dataintrångsrapporter för att hålla ditt valv säkert." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Miljö-URL:erna har sparats" }, + "showAutoFillMenuOnFormFields": { + "message": "Visa menyn för automatisk ifyllnad på formulärfält", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Gäller för alla inloggade konton." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Av", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "När ikonen för automatisk ifyllnad är vald", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Aktivera automatisk ifyllnad vid sidhämtning" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Visa en identifierbar bild bredvid varje inloggning." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Visa aktivitetsräknaren" }, @@ -1125,7 +1234,7 @@ "message": "Säkerhetskod" }, "ex": { - "message": "t.ex." + "message": "t. ex." }, "title": { "message": "Titel" @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Ogiltig PIN-kod." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "För många ogiltiga PIN-inmatningsförsök. Loggar ut." + }, "unlockWithBiometrics": { "message": "Lås upp med biometri" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Återställ objekt" }, - "restoreItemConfirmation": { - "message": "Är du säker på att du vill återställa detta objekt?" - }, "restoredItem": { "message": "Återställde objekt" }, @@ -1468,7 +1577,7 @@ "message": "Vill du fortfarande fylla i denna inloggning?" }, "autofillIframeWarning": { - "message": "The form is hosted by a different domain than the URI of your saved login. Choose OK to auto-fill anyway, or Cancel to stop." + "message": "Formuläret kommer från en annan domän än den URI för din sparade inloggning. Välj OK att automatiskt fylla i ändå, eller Avbryt för att stoppa." }, "autofillIframeWarningTip": { "message": "För att förhindra denna varning i framtiden, spara denna URI, $HOSTNAME$, till ditt Bitwarden inloggningsobjekt för denna webbplats.", @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Biometri i webbläsaren stöds inte på den här enheten." }, + "biometricsFailedTitle": { + "message": "Biometri misslyckades" + }, + "biometricsFailedDesc": { + "message": "Biometri kan inte slutföras, överväg att använda ett huvudlösenord eller logga ut. Om detta kvarstår, kontakta Bitwardens support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Behörighet ej beviljad" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "En organisationspolicy påverkar dina ägarskapsalternativ." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Exkluderade domäner" }, "excludedDomainsDesc": { "message": "Bitwarden kommer inte att fråga om att få spara inloggningsuppgifter för dessa domäner. Du måste uppdatera sidan för att ändringarna ska träda i kraft." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ är inte en giltig domän", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1872,7 +1993,7 @@ "message": "Ditt huvudlösenord ändrades nyligen av en administratör i din organisation. För att få tillgång till valvet måste du uppdatera det nu. Om du fortsätter kommer du att loggas ut från din nuvarande session, vilket kräver att du loggar in igen. Aktiva sessioner på andra enheter kan komma att vara aktiva i upp till en timme." }, "updateWeakMasterPasswordWarning": { - "message": "Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Ditt huvudlösenord följer inte ett eller flera av din organisations regler. För att komma åt ditt valv så måste du ändra ditt huvudlösenord nu. Om du gör det kommer du att loggas du ut ur din nuvarande session så du måste logga in på nytt. Aktiva sessioner på andra enheter kommer fortsatt vara aktiva i upp till en timme." }, "resetPasswordPolicyAutoEnroll": { "message": "Automatiskt deltagande" @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Välj mapp…" }, - "ssoCompleteRegistration": { - "message": "För att slutföra inloggning med SSO, ange ett huvudlösenord för att komma åt och skydda ditt valv." + "noFoldersFound": { + "message": "Inga mappar hittades", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Din organisations behörigheter uppdaterades, vilket kräver att du anger ett huvudlösenord.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Din organisation kräver att du anger ett huvudlösenord.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verifiering krävs", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Timmar" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporterar individuellt valv" }, - "exportingPersonalVaultDescription": { - "message": "Endast de personliga valvobjekt som är associerade med $EMAIL$ kommer att exporteras. Organisationens valvobjekt kommer inte att inkluderas.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -1995,7 +2129,7 @@ "message": "Återskapa användarnamn" }, "generateUsername": { - "message": "Skapa användarnamn" + "message": "Generera användarnamn" }, "usernameType": { "message": "Typ av användarnamn" @@ -2023,7 +2157,7 @@ "message": "Webbplatsnamn" }, "whatWouldYouLikeToGenerate": { - "message": "Vad vill du skapa?" + "message": "Vad skulle du vilja generera?" }, "passwordType": { "message": "Typ av lösenord" @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Serverversion" }, - "selfHosted": { - "message": "Lokalt installerad" + "selfHostedServer": { + "message": "självhostad" }, "thirdParty": { "message": "Tredje part" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "En avisering har skickats till din enhet." }, - "logInInitiated": { + "loginInitiated": { "message": "Inloggning påbörjad" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Hur du fyller i automatiskt" }, "autofillSelectInfoWithCommand": { - "message": "Välj ett objekt från denna sida eller använd genvägen: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Välj ett objekt från den här sidan eller ange en genväg i inställningarna." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Förstått" @@ -2221,27 +2355,658 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logga in på" }, "opensInANewWindow": { "message": "Öppnas i ett nytt fönster" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Kom ihåg denna enhet" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Godkänn från din andra enhet" + }, + "requestAdminApproval": { + "message": "Be om godkännande från administratör" + }, + "approveWithMasterPassword": { + "message": "Godkänn med huvudlösenord" + }, + "ssoIdentifierRequired": { + "message": "Organisationens SSO-identifierare krävs." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "USA", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, "general": { - "message": "General" + "message": "Allmänt" }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Ditt konto har skapats!" + }, + "adminApprovalRequested": { + "message": "Godkännande från administratör har begärts" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Din begäran har skickats till din administratör." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Du kommer att meddelas vid godkännande." + }, + "troubleLoggingIn": { + "message": "Problem med att logga in?" + }, + "loginApproved": { + "message": "Inloggning godkänd" + }, + "userEmailMissing": { + "message": "Användarens e-postadress saknas" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Inmatning är obligatoriskt." + }, + "required": { + "message": "obligatoriskt" + }, + "search": { + "message": "Sök" + }, + "inputMinLength": { + "message": "Inmatningen måste innehålla minst $COUNT$ tecken.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Följande tecken är inte tillåtna: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "En eller flera e-postadresser är ogiltiga" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Inmatningen är inte en e-postadress." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ fält ovan kräver din uppmärksamhet.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Välj --" + }, + "multiSelectPlaceholder": { + "message": "-- Skriv för att filtrera --" + }, + "multiSelectLoading": { + "message": "Hämtar alternativ..." + }, + "multiSelectNotFound": { + "message": "Inga objekt hittades" + }, + "multiSelectClearAll": { + "message": "Rensa alla" + }, + "plusNMore": { + "message": "+ $QUANTITY$ till", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Undermeny" + }, + "toggleCollapse": { + "message": "Växla synlig/dold", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Importera din data till Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Skydda din LastPass-data och importera till Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Spara som okrypterad fil", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Importera till Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importerar...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data har importerats till ditt valv!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Nätverksfel uppstod vid import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Aliasdomän" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Objekt med \"Återupprepa huvudlösenord\" kan inte fyllas i automatiskt vid sidladdning. Automatisk ifyllning vid sidladdning avstängd.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Aktivera automatisk ifyllnad vid sidhämtning sattes till att använda standardinställningen.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Stäng av \"återupprepa huvudlösenord\" för att redigera detta fält", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Hoppa till innehåll" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden automatisk ifyllnadsmenyknapp", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Växla Bitwarden automatisk ifyllnadsmeny", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden automatisk ifyllnadsmeny", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Lås upp konto", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fyll i uppgifter för", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Inga objekt att visa", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Nytt objekt", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Lägg till nytt valvobjekt", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden automatisk ifyllnadsmeny är tillgänglig. Tryck på nedåtpilen för att välja.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Aktivera" + }, + "ignore": { + "message": "Ignorera" + }, + "importData": { + "message": "Importera data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Fel vid import" + }, + "importErrorDesc": { + "message": "Det uppstod ett problem med den data du försökte importera. Åtgärda de fel som anges nedan i din källfil och försök igen." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Åtgärda felen nedan och försök igen." + }, + "description": { + "message": "Beskrivning" + }, + "importSuccess": { + "message": "Data har importerats till ditt valv" + }, + "importSuccessNumberOfItems": { + "message": "Sammanlagt $AMOUNT$ objekt importerades.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Försök igen" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verifiering krävs för denna åtgärd. Ange en PIN-kod för att fortsätta." + }, + "setPin": { + "message": "Ställ in PIN-kod" + }, + "verifyWithBiometrics": { + "message": "Verifiera med biometri" + }, + "awaitingConfirmation": { + "message": "Väntar på bekräftelse" + }, + "couldNotCompleteBiometrics": { + "message": "Det gick inte att slutföra biometri." + }, + "needADifferentMethod": { + "message": "Behöver du en annan metod?" + }, + "useMasterPassword": { + "message": "Använd huvudlösenord" + }, + "usePin": { + "message": "Använd PIN-kod" + }, + "useBiometrics": { + "message": "Använd biometri" + }, + "enterVerificationCodeSentToEmail": { + "message": "Ange verifieringskoden som skickades till din e-postadress." + }, + "resendCode": { + "message": "Skicka kod igen" + }, + "total": { + "message": "Totalt" + }, + "importWarning": { + "message": "Du importerar data till $ORGANIZATION$. Din data kan komma att delas med medlemmar i den här organisationen. Vill du fortsätta?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Starta Duo" + }, + "importFormatError": { + "message": "Datan är inte korrekt formaterad. Vänligen kontrollera din importerade fil och försök igen." + }, + "importNothingError": { + "message": "Ingenting har importerats." + }, + "importEncKeyError": { + "message": "Ett fel uppstod vid dekryptering av den exporterade filen. Din krypteringsnyckel matchar inte krypteringsnyckeln som användes för att exportera datan." + }, + "invalidFilePassword": { + "message": "Ogiltigt fillösenord, använd lösenordet du angav när du skapade exportfilen." + }, + "importDestination": { + "message": "Importdestination" + }, + "learnAboutImportOptions": { + "message": "Läs mer om dina importalternativ" + }, + "selectImportFolder": { + "message": "Välj en mapp" + }, + "selectImportCollection": { + "message": "Välj en samling" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Filen innehåller otilldelade objekt." + }, + "selectFormat": { + "message": "Välj importfilens format" + }, + "selectImportFile": { + "message": "Välj importfilen" + }, + "chooseFile": { + "message": "Välj fil" + }, + "noFileChosen": { + "message": "Ingen fil vald" + }, + "orCopyPasteFileContents": { + "message": "eller kopiera och klistra in innehållet från filen" + }, + "instructionsFor": { + "message": "Instruktioner för $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Bekräfta importering av valv" + }, + "confirmVaultImportDesc": { + "message": "Den här filen är lösenordsskyddad. Ange lösenordet för att importera data." + }, + "confirmFilePassword": { + "message": "Bekräfta fillösenord" + }, + "typePasskey": { + "message": "Lösennyckel" + }, + "passkeyNotCopied": { + "message": "Lösennyckeln kommer inte kopieras" + }, + "passkeyNotCopiedAlert": { + "message": "Lösennyckeln kommer inte att kopieras till det klonade objektet. Vill du fortsätta klona det här objektet?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verifiering krävs av den initierande webbplatsen. Denna funktion är ännu inte implementerad för konton utan huvudlösenord." + }, + "logInWithPasskey": { + "message": "Logga in med lösennyckel?" + }, + "passkeyAlreadyExists": { + "message": "En lösennyckel finns redan för detta program." + }, + "noPasskeysFoundForThisApplication": { + "message": "Inga lösennycklar hittades för detta program." + }, + "noMatchingPasskeyLogin": { + "message": "Det finns ingen matchande inloggning för denna webbplats." + }, + "confirm": { + "message": "Bekräfta" + }, + "savePasskey": { + "message": "Spara lösennyckel" + }, + "savePasskeyNewLogin": { + "message": "Spara lösennyckel som ny inloggning" + }, + "choosePasskey": { + "message": "Välj en inloggning för att spara denna lösennyckel till" + }, + "passkeyItem": { + "message": "Lösennyckelobjekt" + }, + "overwritePasskey": { + "message": "Skriv över lösennyckel?" + }, + "overwritePasskeyAlert": { + "message": "Detta objekt innehåller redan en lösennyckel. Är du säker på att du vill skriva över nuvarande lösennyckeln?" + }, + "featureNotSupported": { + "message": "Funktionen stöds ännu inte" + }, + "yourPasskeyIsLocked": { + "message": "Autentisering krävs för att använda lösennyckel. Verifiera din identitet för att fortsätta." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "Ingen LastPass-data hittades" + }, + "incorrectUsernameOrPassword": { + "message": "Felaktigt användarnamn eller lösenord" + }, + "incorrectPassword": { + "message": "Felaktigt lösenord" + }, + "incorrectCode": { + "message": "Felaktig kod" + }, + "incorrectPin": { + "message": "Felaktig PIN-kod" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Inkludera delade mappar" + }, + "lastPassEmail": { + "message": "LastPass E-post" + }, + "importingYourAccount": { + "message": "Importerar ditt konto..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Ange din engångskod från din autentiseringsapp" + }, + "lastPassOOBDesc": { + "message": "Godkänn inloggningsbegäran i din autentiseringsapp eller ange en engångskod." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass Huvudlösenord" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "Se detaljerade instruktioner på vår hjälpsida på", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Importera direkt från LastPass" + }, + "importFromCSV": { + "message": "Importera från CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Samling" + }, + "lastPassYubikeyDesc": { + "message": "Sätt in YubiKey som associeras med ditt LastPass-konto i din dators USB-port, tryck sedan på knappen." + }, + "switchAccount": { + "message": "Byt konto" + }, + "switchAccounts": { + "message": "Byt konto" + }, + "switchToAccount": { + "message": "Byt till konto" + }, + "activeAccount": { + "message": "Aktivt konto" + }, + "availableAccounts": { + "message": "Tillgängliga konton" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Använd din enhet eller hårdvarunyckel" + }, + "justOnce": { + "message": "Bara en gång" + }, + "alwaysForThisSite": { + "message": "Alltid för denna webbplats" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Låt Bitwarden hantera lösenord som standard?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Låt Bitwarden hantera lösenord som standard", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Gör till standard", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/te/messages.json b/apps/browser/src/_locales/te/messages.json index 9e46b55f19..dc91c1e6a9 100644 --- a/apps/browser/src/_locales/te/messages.json +++ b/apps/browser/src/_locales/te/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Auto-fill" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "No matching logins" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "Unlock your vault" }, @@ -244,6 +268,9 @@ "length": { "message": "Length" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "Uppercase (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Password" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Passphrase" }, @@ -338,6 +368,12 @@ "other": { "message": "Other" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Immediately" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Your new account has been created! You may now log in." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "We've sent you an email with your master password hint." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected item on this page. Copy and paste the information instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Logged out" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Ask to add an item if one isn't found in your vault." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Show cards on Tab page" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Do you want to update this password in Bitwarden?" }, "notificationChangeSave": { "message": "Update" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "Show context menu options" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Use a secondary click to access password generation and matching logins for the website." + }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." }, "defaultUriMatchDetection": { "message": "Default URI match detection", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Dark", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature unavailable" }, - "updateKey": { - "message": "You cannot use this feature until you update your encryption key." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." }, - "ppremiumSignUpTwoStep": { - "message": "Additional two-step login options such as YubiKey, FIDO U2F, and Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Password hygiene, account health, and data breach reports to keep your vault safe." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Invalid PIN code." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Unlock with biometrics" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Restore item" }, - "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" - }, "restoredItem": { "message": "Item restored" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/th/messages.json b/apps/browser/src/_locales/th/messages.json index 2b93ace3a0..ecc346513d 100644 --- a/apps/browser/src/_locales/th/messages.json +++ b/apps/browser/src/_locales/th/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "กรอกข้อมูลอัตโนมัติ" }, + "autoFillLogin": { + "message": "Auto-fill login" + }, + "autoFillCard": { + "message": "Auto-fill card" + }, + "autoFillIdentity": { + "message": "Auto-fill identity" + }, "generatePasswordCopied": { "message": "Generate Password (copied)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "ไม่พบข้อมูลล็อกอินที่ตรงกัน" }, + "noCards": { + "message": "No cards" + }, + "noIdentities": { + "message": "No identities" + }, + "addLoginMenu": { + "message": "Add login" + }, + "addCardMenu": { + "message": "Add card" + }, + "addIdentityMenu": { + "message": "Add identity" + }, "unlockVaultMenu": { "message": "ปลดล็อกกตู้นิรภัยของคุณ" }, @@ -244,6 +268,9 @@ "length": { "message": "ความยาว" }, + "passwordMinLength": { + "message": "Minimum password length" + }, "uppercase": { "message": "ตัวพิมพ์ใหญ่ (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "รหัสผ่าน" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "ข้อความรหัสผ่าน" }, @@ -338,6 +368,12 @@ "other": { "message": "อื่น ๆ" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Set up an unlock method to change your vault timeout action." + }, + "unlockMethodNeeded": { + "message": "Set up an unlock method in Settings" + }, "rateExtension": { "message": "Rate the Extension" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Lock Now" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "ทันที" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "บัญชีใหม่ของคุณถูกสร้างขึ้นแล้ว! ตอนนี้คุณสามารถเข้าสู่ระบบ" }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "เราได้ส่งอีเมลพร้อมคำใบ้รหัสผ่านหลักของคุณออกไปแล้ว" }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Unable to auto-fill the selected login on this page. Copy/paste your username and/or password instead." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "ออกจากระบบ" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "The \"Add Login Notification\" automatically prompts you to save new logins to your vault whenever you log into them for the first time." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "แสดงการ์ดบนหน้าแท็บ" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Ask to update a login's password when a change is detected on a website." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "คุณต้องการอัปเดตรหัสผ่านนี้ใน Bitwarden หรือไม่?" }, "notificationChangeSave": { "message": "Yes, Update Now" }, + "notificationUnlockDesc": { + "message": "Unlock your Bitwarden vault to complete the auto-fill request." + }, + "notificationUnlock": { + "message": "Unlock" + }, "enableContextMenuItem": { "message": "แสดงตัวเลือกเมนูบริบท" }, "contextMenuItemDesc": { "message": "ใช้การคลิกสำรองเพื่อเข้าถึงการสร้างรหัสผ่านและการเข้าสู่ระบบที่ตรงกันสำหรับเว็บไซต์ " }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "การตรวจจับการจับคู่ URI เริ่มต้น", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Change the application's color theme." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "มืด", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Feature Unavailable" }, - "updateKey": { - "message": "คุณไม่สามารถใช้คุณลักษณะนี้ได้จนกว่าคุณจะปรับปรุงคีย์การเข้ารหัสลับของคุณ" + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Premium Membership" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB of encrypted file storage." }, - "ppremiumSignUpTwoStep": { - "message": "ตัวเลือกการเข้าสู่ระบบแบบสองขั้นตอนเพิ่มเติม เช่น YubiKey, FIDO U2F และ Duo" + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "สุขอนามัยของรหัสผ่าน ความสมบูรณ์ของบัญชี และรายงานการละเมิดข้อมูลเพื่อให้ตู้นิรภัยของคุณปลอดภัย" @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Environment URLs saved" }, + "showAutoFillMenuOnFormFields": { + "message": "Show auto-fill menu on form fields", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Applies to all logged in accounts." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Turn off your browser’s built in password manager settings to avoid conflicts." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "When auto-fill icon is selected", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Enable Auto-fill On Page Load." }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Show a recognizable image next to each login." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Show badge counter" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "PIN ไม่ถูกต้อง" }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "ปลดล็อกด้วยไบโอเมตริก" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "กู้คืนรายการ" }, - "restoreItemConfirmation": { - "message": "คุณแน่ใจหรือไม่ว่าต้องการกู้คืนรายการนี้" - }, "restoredItem": { "message": "คืนค่ารายการแล้ว" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Browser biometrics is not supported on this device." }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Permission not provided" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Excluded domains" }, "excludedDomainsDesc": { "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ is not a valid domain", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Select folder..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Hours" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Server version" }, - "selfHosted": { - "message": "Self-hosted" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Third-party" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "A notification has been sent to your device." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Exposed Master Password" @@ -2180,7 +2314,7 @@ "message": "How to auto-fill" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/tr/messages.json b/apps/browser/src/_locales/tr/messages.json index f438c3baa9..f6c00a58b8 100644 --- a/apps/browser/src/_locales/tr/messages.json +++ b/apps/browser/src/_locales/tr/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Otomatik doldur" }, + "autoFillLogin": { + "message": "Hesabı otomatik doldur" + }, + "autoFillCard": { + "message": "Kartı otomatik doldur" + }, + "autoFillIdentity": { + "message": "Kimliği otomatik doldur" + }, "generatePasswordCopied": { "message": "Parola oluştur (ve kopyala)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Eşleşen hesap yok" }, + "noCards": { + "message": "Kart yok" + }, + "noIdentities": { + "message": "Kimlik yok" + }, + "addLoginMenu": { + "message": "Hesap ekle" + }, + "addCardMenu": { + "message": "Kart ekle" + }, + "addIdentityMenu": { + "message": "Kimlik ekle" + }, "unlockVaultMenu": { "message": "Kasanızın kilidini açın" }, @@ -244,6 +268,9 @@ "length": { "message": "Uzunluk" }, + "passwordMinLength": { + "message": "Minimum parola uzunluğu" + }, "uppercase": { "message": "Büyük harf (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Parola" }, + "totp": { + "message": "Authenticator secret" + }, "passphrase": { "message": "Uzun söz" }, @@ -338,6 +368,12 @@ "other": { "message": "Diğer" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Kasa zaman aşımı eyleminizi değiştirmek için kilit açma yönteminizi ayarlayın." + }, + "unlockMethodNeeded": { + "message": "Ayarlar'da bir kilit açma yöntemi ayarlayın" + }, "rateExtension": { "message": "Uzantıyı değerlendirin" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Şimdi kilitle" }, + "lockAll": { + "message": "Tümünü kilitle" + }, "immediately": { "message": "Hemen" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Yeni hesabınız oluşturuldu! Şimdi giriş yapabilirsiniz." }, + "youSuccessfullyLoggedIn": { + "message": "Başarıyla giriş yaptınız" + }, + "youMayCloseThisWindow": { + "message": "Bu pencereyi kapatabilirsiniz" + }, "masterPassSent": { "message": "Size ana parolanızın ipucunu içeren bir e-posta gönderdik." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Seçilen hesap bu sayfada otomatik olarak doldurulamadı. Lütfen bilgileri elle kopyalayıp yapıştırın." }, + "totpCaptureError": { + "message": "Mevcut web sayfasından QR kodu taranamıyor" + }, + "totpCaptureSuccess": { + "message": "Kimlik doğrulama anahtarı eklendi" + }, + "totpCapture": { + "message": "Mevcut web sayfasından kimlik doğrulayıcı QR kodunu tarayın" + }, + "copyTOTP": { + "message": "Kimlik Doğrulayıcı anahtarını kopyala (TOTP)" + }, "loggedOut": { "message": "Çıkış yapıldı" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "\"Hesap ekle\" bildirimi, ilk kez kullandığınız hesap bilgilerini kasanıza kaydetmek isteyip istemediğinizi otomatik olarak sorar." }, + "addLoginNotificationDescAlt": { + "message": "Kasanızda bulunmayan kayıtların eklenmesini isteyip istemediğinizi sorar. Oturum açmış tüm hesaplar için geçerlidir." + }, "showCardsCurrentTab": { "message": "Sekme sayfasında kartları göster" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Sitede bir değişiklik tespit edildiğinde hesap parolasını güncellemeyi öner." }, + "changedPasswordNotificationDescAlt": { + "message": "Bir sitede değişiklik tespit edildiğinde hesap parolasını güncellemek isteyip istemediğiniz sorar. Oturum açmış tüm hesaplar için geçerlidir." + }, + "enableUsePasskeys": { + "message": "Geçiş anahtarlarını kaydet ve kullan" + }, + "usePasskeysDesc": { + "message": "Yeni geçiş anahtarlarını kaydetmek ve kasanızda saklanan geçiş anahtarlarıyla giriş yapmak için sor. Giriş yapmış tüm hesaplar için geçerlidir." + }, "notificationChangeDesc": { "message": "Bu parolayı Bitwarden'da güncellemek ister misiniz?" }, "notificationChangeSave": { "message": "Güncelle" }, + "notificationUnlockDesc": { + "message": "Otomatik doldurma isteğini tamamlamak için Bitwarden kasanızın kilidini açın." + }, + "notificationUnlock": { + "message": "Kilidi aç" + }, "enableContextMenuItem": { "message": "Bağlam menüsü seçeneklerini göster" }, "contextMenuItemDesc": { - "message": "Parola oluşturma ve eşlesen hesaplara ulaşmak için sağ tıklamayı kullan." + "message": "Parola oluşturmak ve eşleşen hesaplara ulaşmak için sağ tıklamayı kullan." + }, + "contextMenuItemDescAlt": { + "message": "Web sitesi için parola oluşturmak ve eşleşen hesap bilgilerine erişmek için sağ tıklamayı kullanabilirsiniz. Oturum açmış tüm hesaplar için geçerlidir." }, "defaultUriMatchDetection": { "message": "Varsayılan URI eşleşme tespiti", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Uygulamanın renk temasını değiştir." }, + "themeDescAlt": { + "message": "Uygulamanın renk temasını değiştirir. Oturum açmış tüm hesaplar için geçerlidir." + }, "dark": { "message": "Koyu", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Özellik kullanılamıyor" }, - "updateKey": { - "message": "Şifreleme anahtarınızı güncellemeden bu özelliği kullanamazsınız." + "encryptionKeyMigrationRequired": { + "message": "Şifreleme anahtarınızın güncellenmesi gerekiyor. Şifreleme anahtarınızı güncellemek için lütfen web kasasına giriş yapın." }, "premiumMembership": { "message": "Premium üyelik" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "Dosya ekleri için 1 GB şifrelenmiş depolama." }, - "ppremiumSignUpTwoStep": { - "message": "YubiKey, FIDO U2F ve Duo gibi iki aşamalı giriş seçenekleri." + "premiumSignUpTwoStepOptions": { + "message": "YubiKey ve Duo gibi marka bazlı iki aşamalı giriş seçenekleri." }, "ppremiumSignUpReports": { "message": "Kasanızı güvende tutmak için parola hijyeni, hesap sağlığı ve veri ihlali raporları." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Ortam URL'leri kaydedildi" }, + "showAutoFillMenuOnFormFields": { + "message": "Form alanlarında otomatik doldurma menüsünü göster", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Oturum açmış tüm hesaplara uygulanır." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Çakışmaları önlemek için tarayıcınızın yerleşik şifre yöneticisi ayarlarını kapatın." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Tarayıcı ayarlarını düzenleyin." + }, + "autofillOverlayVisibilityOff": { + "message": "Kapalı", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Alan seçili olduğunda", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Otomatik doldurma simgesi seçildiğinde", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Sayfa yüklendiğinde otomatik doldur" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Hesapların yanında tanıdık görseller göster." }, + "faviconDescAlt": { + "message": "Her hesabın yanında tanınabilir bir resim göster. Oturum açmış tüm hesaplar için geçerlidir." + }, "enableBadgeCounter": { "message": "Rozet sayacını göster" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "PIN kodu geçersiz." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Çok fazla geçersiz PIN girişi denemesi. Oturum kapatılıyor." + }, "unlockWithBiometrics": { "message": "Kilidi biyometri ile aç" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Kaydı geri yükle" }, - "restoreItemConfirmation": { - "message": "Bu kaydı geri yüklemek istediğinizden emin misiniz?" - }, "restoredItem": { "message": "Kayıt geri yüklendi" }, @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Tarayıcı biyometrisi bu cihazda desteklenmiyor." }, + "biometricsFailedTitle": { + "message": "Biyometri doğrulanamadı" + }, + "biometricsFailedDesc": { + "message": "Biyometri doğrulaması tamamlanamadı. Ana parolanızı kullanabilir veya çıkış yapabilirsiniz. Sorun devam ederse Bitwarden destek ekibiyle iletişime geçin." + }, "nativeMessaginPermissionErrorTitle": { "message": "İzin verilmedi" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Bir kuruluş ilkesi sahiplik seçeneklerinizi etkiliyor." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Bir kuruluş ilkesi, kayıtları kişisel kasanıza içe aktarmayı engelledi." + }, "excludedDomains": { "message": "Hariç tutulan alan adları" }, "excludedDomainsDesc": { "message": "Bitwarden bu alan adlarında hesaplarınızı kaydetmeyi sormayacaktır. Değişikliklerin etkili olması için sayfayı yenilemelisiniz." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden, oturum açmış tüm hesaplar için bu alan adlarının hesap bilgilerini kaydetmeyi sormayacaktır. Değişikliklerin etkili olması için sayfayı yenilemeniz gerekir." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ geçerli bir alan adı değil", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Klasör seç..." }, - "ssoCompleteRegistration": { - "message": "SSO ile girişinizi tamamlamak için lütfen kasanıza erişirken kullanacağınız ana parolayı belirleyin." + "noFoldersFound": { + "message": "Herhangi bir klasör bulunamadı", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Kuruluş izinleriniz güncellendi ve bir ana parola belirlemeniz gerekiyor.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Kuruluşunuz bir ana parola belirlemenizi gerektiriyor.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Doğrulama gerekli", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Saat" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "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.", + "exportingIndividualVaultDescription": { + "message": "Yalnızca $EMAIL$ ile ilişkili kasa kayıtları dışa aktarılacaktır. Kuruluş kasasındaki kayıtlar dahil edilmeyecektir. Yalnızca kasa kayıt bilgileri dışa aktarılacak, kayıtlara eklenen dosyalar aktarılmayacaktır.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Sunucu sürümü" }, - "selfHosted": { - "message": "Barındırılan" + "selfHostedServer": { + "message": "şirket içinde barındırılan" }, "thirdParty": { "message": "Üçüncü taraf" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Cihazınıza bir bildirim gönderildi." }, - "logInInitiated": { + "loginInitiated": { "message": "Giriş başlatıldı" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Otomatik doldurma nasıl yapılır?" }, "autofillSelectInfoWithCommand": { - "message": "Bu sayfadan bir kayıt seçin veya $COMMAND$ kısayolunu kullanın.", + "message": "Bu ekrandan bir öğe seçin, $COMMAND$ kısayolunu kullanın veya ayarlardaki diğer seçenekleri keşfedin.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Bu sayfadan bir kayıt seçin veya ayarlardan bir kısayol ayarlayın." + "message": "Bu ekrandan bir öğe seçin veya ayarlardaki diğer seçenekleri keşfedin." }, "gotIt": { "message": "Anladım" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Bölge" + "loggingInOn": { + "message": "Giriş yapılan konum" }, "opensInANewWindow": { "message": "Yeni pencerede açılır" }, + "deviceApprovalRequired": { + "message": "Cihaz onayı gerekiyor. Lütfen onay yönteminizi seçin:" + }, + "rememberThisDevice": { + "message": "Bu cihazı hatırla" + }, + "uncheckIfPublicDevice": { + "message": "Paylaşılan bir cihaz kullanıyorsanız işaretlemeyin" + }, + "approveFromYourOtherDevice": { + "message": "Diğer cihazımdan onayla" + }, + "requestAdminApproval": { + "message": "Yönetici onayı iste" + }, + "approveWithMasterPassword": { + "message": "Ana parola ile onayla" + }, + "ssoIdentifierRequired": { + "message": "Kuruluş SSO tanımlayıcısı gereklidir." + }, "eu": { "message": "AB", "description": "European Union" }, - "us": { - "message": "ABD", - "description": "United States" - }, "accessDenied": { "message": "Erişim engellendi. Bu sayfayı görüntüleme iznine sahip değilsiniz." }, @@ -2242,6 +2393,620 @@ "message": "Genel" }, "display": { - "message": "Display" + "message": "Görünüm" + }, + "accountSuccessfullyCreated": { + "message": "Hesap başarıyla oluşturuldu!" + }, + "adminApprovalRequested": { + "message": "Yönetici onayı istendi" + }, + "adminApprovalRequestSentToAdmins": { + "message": "İsteğiniz yöneticinize gönderildi." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Onaylandıktan sonra bilgilendirileceksiniz." + }, + "troubleLoggingIn": { + "message": "Giriş yaparken sorun mu yaşıyorsunuz?" + }, + "loginApproved": { + "message": "Giriş onaylandı" + }, + "userEmailMissing": { + "message": "Kullanıcının e-postası eksik" + }, + "deviceTrusted": { + "message": "Cihaza güvenildi" + }, + "inputRequired": { + "message": "Girdi gerekli." + }, + "required": { + "message": "gerekli" + }, + "search": { + "message": "Ara" + }, + "inputMinLength": { + "message": "Girdi en az $COUNT$ karakter uzunluğunda olmalıdır.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Girdi $COUNT$ karakter uzunluğunu geçmemelidir.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Şu karakterlere izin verilmez: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Girdi değeri en az $MIN$ olmalı.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Girdi değeri en fazla $MAX$ olmalı.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "Bir veya daha fazla e-posta geçersiz" + }, + "inputTrimValidator": { + "message": "Girdi yalnızca boşluktan ibaret olamaz.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Girdi bir e-posta adresi değil." + }, + "fieldsNeedAttention": { + "message": "Yukarıdaki $COUNT$ alanla ilgilenmeniz gerekiyor.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Seçin --" + }, + "multiSelectPlaceholder": { + "message": "-- Filtrelemek için yazın --" + }, + "multiSelectLoading": { + "message": "Seçenekler alınıyor..." + }, + "multiSelectNotFound": { + "message": "Hiç kayıt bulunamadı" + }, + "multiSelectClearAll": { + "message": "Tümünü temizle" + }, + "plusNMore": { + "message": "+ $QUANTITY$ tane daha", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Alt menü" + }, + "toggleCollapse": { + "message": "Daraltmayı aç/kapat", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Verileriniz Bitwarden'a aktarılsın mı?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "LastPass verileriniz korunsun ve Bitwarden'a aktarılsın mı?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Şifrelenmemiş dosya olarak kaydet", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Bitwarden'a aktar", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "İçe aktarılıyor...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Veriler başarıyla içe aktarıldı!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "İçe aktarma hatası. Ayrıntılar için konsolu kontrol edin.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "İçe aktarma sırasında ağ hatasıyla karşılaşıldı.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias alan adı" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Ana parolayı yeniden isteyen kayıtlar sayfa yüklendiğinde otomatik olarak doldurulamaz. Sayfa yüklendiğinde otomatik doldurma kapatıldı.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Sayfa yüklendiğinde otomatik doldurma, varsayılan ayarı kullanacak şekilde ayarlandı.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Bu alanı düzenlemek için ana parolayı yeniden istemeyi kapatın", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "İçeriğe geç" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden otomatik doldurma menüsü düğmesi", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Bitwarden otomatik doldurma menüsünü aç/kapat", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden otomatik doldurma menüsü", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Eşleşen hesaplarınızı görmek için hesabınızın kilidini açın", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Hesap kilidini aç", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Bilgileri doldur", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Kısmi kullanıcı adı", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Gösterilecek kayıt yok", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Yeni kayıt", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Kasaya yeni kayıt ekle", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden otomatik doldurma menüsü mevcut. Seçmek için aşağı ok tuşuna basın.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Aç" + }, + "ignore": { + "message": "Yok say" + }, + "importData": { + "message": "Verileri içe aktar", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "İçe aktarma hatası" + }, + "importErrorDesc": { + "message": "İçe aktarmaya çalıştığınız verilerle ilgili bir problem var. Lütfen kaynak dosyanızdaki aşağıda belirtilen hataları çözüp tekrar deneyin." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Aşağıdaki hataları düzeltip yeniden deneyin." + }, + "description": { + "message": "Açıklama" + }, + "importSuccess": { + "message": "Veriler başarıyla içe aktarıldı" + }, + "importSuccessNumberOfItems": { + "message": "Toplam $AMOUNT$ kayıt içe aktarıldı.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Tekrar deneyin" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Bu işlem için doğrulama gerekiyor. Devam etmek için bir PIN ayarlayın." + }, + "setPin": { + "message": "PIN Belirle" + }, + "verifyWithBiometrics": { + "message": "Biyometri ile doğrula" + }, + "awaitingConfirmation": { + "message": "Onay bekleniyor" + }, + "couldNotCompleteBiometrics": { + "message": "Biyometri işlemi tamamlanamadı." + }, + "needADifferentMethod": { + "message": "Farklı bir yönteme mi ihtiyacınız var?" + }, + "useMasterPassword": { + "message": "Ana parolayı kullanın" + }, + "usePin": { + "message": "PIN kullan" + }, + "useBiometrics": { + "message": "Biyometri kullan" + }, + "enterVerificationCodeSentToEmail": { + "message": "E-posta adresinize gönderilen doğrulama kodunu girin." + }, + "resendCode": { + "message": "Kodu tekrar gönder" + }, + "total": { + "message": "Toplam" + }, + "importWarning": { + "message": "$ORGANIZATION$ kuruluşuna veri aktarıyorsunuz. Verileriniz bu kuruluşun üyeleriyle paylaşılabilir. Devam etmek istiyor musunuz?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "DUO'yu başlatın ve oturum açmayı tamamlamak için adımları izleyin." + }, + "duoRequiredForAccount": { + "message": "Hesabınız için Duo'ya iki adımlı giriş yapmanız gerekiyor." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Oturum açma işlemini tamamlamak için uzantıyı açın." + }, + "popoutExtension": { + "message": "Popout uzantısı" + }, + "launchDuo": { + "message": "DUO'yu başlat" + }, + "importFormatError": { + "message": "Veriler doğru biçimlendirilmemiş. Lütfen içe aktarma dosyanızı kontrol edin ve tekrar deneyin." + }, + "importNothingError": { + "message": "Hiçbir şey içe aktarılmadı." + }, + "importEncKeyError": { + "message": "Dışa aktarılmış dosya çözülemedi. Şifreleme anahtarınız, veriler dışa aktarılırken kullanılanla uyuşmuyor." + }, + "invalidFilePassword": { + "message": "Geçersiz dosya parolası. Lütfen dışa aktardığınız dosyayı oluştururken girdiğiniz parolayı kullanın." + }, + "importDestination": { + "message": "İçe aktarma hedefi" + }, + "learnAboutImportOptions": { + "message": "İçe aktarma seçeneklerinizi öğrenin" + }, + "selectImportFolder": { + "message": "Bir klasör seçin" + }, + "selectImportCollection": { + "message": "Bir koleksiyon seçin" + }, + "importTargetHint": { + "message": "İçe aktarılan dosya içeriklerinin $DESTINATION$ konumuna taşınmasını istiyorsanız bu seçeneği seçin", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Dosya atanmamış öğeler içeriyor." + }, + "selectFormat": { + "message": "İçe aktarma dosyasının biçimini seçin" + }, + "selectImportFile": { + "message": "İçe aktarma dosyasını seçin" + }, + "chooseFile": { + "message": "Dosya seçin" + }, + "noFileChosen": { + "message": "Dosya seçilmedi" + }, + "orCopyPasteFileContents": { + "message": "veya içe aktarma dosyasının içeriğini kopyalayıp yapıştırın" + }, + "instructionsFor": { + "message": "$NAME$ Talimatları", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Kasayı içe aktarmayı onaylayın" + }, + "confirmVaultImportDesc": { + "message": "Bu dosya parola korumalıdır. Verileri içe aktarmak için lütfen dosya parolasını girin." + }, + "confirmFilePassword": { + "message": "Dosya parolasını onaylayın" + }, + "typePasskey": { + "message": "Geçiş anahtarı" + }, + "passkeyNotCopied": { + "message": "Geçiş anahtarı kopyalanmayacak" + }, + "passkeyNotCopiedAlert": { + "message": "Geçiş anahtarı klonlanan öğeye kopyalanmayacaktır. Bu öğeyi klonlamaya devam etmek istiyor musunuz?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Açılan sitenin gerektirdiği doğrulama. Bu özellik henüz ana şifresi olmayan hesaplara uygulanmamaktadır." + }, + "logInWithPasskey": { + "message": "Geçiş anahtarı ile giriş yapılsın mı?" + }, + "passkeyAlreadyExists": { + "message": "Bu uygulama için bir geçiş anahtarı zaten mevcut." + }, + "noPasskeysFoundForThisApplication": { + "message": "Bu uygulamaya ait hiç geçiş anahtarı bulunamadı." + }, + "noMatchingPasskeyLogin": { + "message": "Bu siteyle eşleşen hiç hesabınız yok." + }, + "confirm": { + "message": "Onayla" + }, + "savePasskey": { + "message": "Geçiş anahtarını kaydet" + }, + "savePasskeyNewLogin": { + "message": "Geçiş anahtarını yeni hesap olarak kaydet" + }, + "choosePasskey": { + "message": "Bu geçiş anahtarının kaydedileceği hesabı seçin" + }, + "passkeyItem": { + "message": "Geçiş anahtarı kaydı" + }, + "overwritePasskey": { + "message": "Geçiş anahtarının üzerine yazılsın mı?" + }, + "overwritePasskeyAlert": { + "message": "Bu öğe zaten bir şifre anahtarı içeriyor. Geçerli şifrenin üzerine yazmak istediğinizden emin misiniz?" + }, + "featureNotSupported": { + "message": "Bu özellik henüz desteklenmiyor" + }, + "yourPasskeyIsLocked": { + "message": "Şifreyi kullanmak için kimlik doğrulama gerekiyor. Devam etmek için kimliğinizi doğrulayın." + }, + "multifactorAuthenticationCancelled": { + "message": "Çok faktörlü kimlik doğrulama iptal edildi" + }, + "noLastPassDataFound": { + "message": "LastPass verisi bulunamadı" + }, + "incorrectUsernameOrPassword": { + "message": "Kullanıcı adı veya parola yanlış" + }, + "incorrectPassword": { + "message": "Yanlış parola" + }, + "incorrectCode": { + "message": "Yanlış kod" + }, + "incorrectPin": { + "message": "Yanlış PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Çok faktörlü kimlik doğrulama başarısız oldu" + }, + "includeSharedFolders": { + "message": "Paylaşılan klasörleri dahil et" + }, + "lastPassEmail": { + "message": "LastPass E-postası" + }, + "importingYourAccount": { + "message": "Hesabınız içe aktarılıyor..." + }, + "lastPassMFARequired": { + "message": "LastPass çok faktörlü kimlik doğrulaması gerekli" + }, + "lastPassMFADesc": { + "message": "Kimlik doğrulama uygulamanızdaki tek kullanımlık kodu girin" + }, + "lastPassOOBDesc": { + "message": "Kimlik doğrulama uygulamanızda oturum açma isteğini onaylayın veya tek kullanımlık kodu girin." + }, + "passcode": { + "message": "Kod" + }, + "lastPassMasterPassword": { + "message": "LastPass ana parolası" + }, + "lastPassAuthRequired": { + "message": "LastPass kimlik doğrulaması gerekli" + }, + "awaitingSSO": { + "message": "SSO kimlik doğrulaması bekleniyor" + }, + "awaitingSSODesc": { + "message": "Lütfen şirket hesabınızla giriş yapmaya devam edin." + }, + "seeDetailedInstructions": { + "message": "Ayrıntılı talimatları yardım sitemizde bulabilirsiniz:", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Doğrudan LastPass'ten içe aktar" + }, + "importFromCSV": { + "message": "CSV'den içe aktar" + }, + "lastPassTryAgainCheckEmail": { + "message": "Tekrar deneyin veya LastPass'ten gelecek kimlik doğrulama e-postasını kontrol edin." + }, + "collection": { + "message": "Koleksiyon" + }, + "lastPassYubikeyDesc": { + "message": "LastPass hesabınızla ilişkili YubiKey'i bilgisayarınızın USB portuna takıp düğmesine dokunun." + }, + "switchAccount": { + "message": "Hesabı değiştir" + }, + "switchAccounts": { + "message": "Hesapları değiştir" + }, + "switchToAccount": { + "message": "Hesaba geç" + }, + "activeAccount": { + "message": "Aktif hesap" + }, + "availableAccounts": { + "message": "Mevcut hesaplar" + }, + "accountLimitReached": { + "message": "Hesap sınırına ulaştınız. Yeni hesap eklemek için hesaplardan birinden çıkış yapın." + }, + "active": { + "message": "aktif" + }, + "locked": { + "message": "kilitli" + }, + "unlocked": { + "message": "kilitli değil" + }, + "server": { + "message": "sunucu" + }, + "hostedAt": { + "message": "konum" + }, + "useDeviceOrHardwareKey": { + "message": "Cihazınızı veya donanım anahtarınızı kullanın" + }, + "justOnce": { + "message": "Yalnızca bir kez" + }, + "alwaysForThisSite": { + "message": "Bu site için her zaman" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ hariç tutulan alan adlarına eklendi.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Ortak formatlar", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Bitwarden varsayılan şifre yöneticiniz yapılsın mı?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Bu seçeneğin göz ardı edilmesi, Bitwarden otomatik doldurma menüsü ile tarayıcınızınki arasında çakışmalara neden olabilir.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Bitwarden'ı varsayılan şifre yöneticiniz yapın", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Bitwarden varsayılan parola yöneticisi olarak ayarlanamıyor", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Bitwarden'ı varsayılan parola yöneticisi olarak ayarlamak için tarayıcı gizlilik izinlerini vermeniz gerekir.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Varsayılan yap", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Kimlik bilgileri başarıyla kaydedildi!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Kimlik bilgileri başarıyla güncellendi!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Kimlik bilgileri kaydedilirken hata oluştu. Ayrıntılar için konsolu kontrol edin.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/uk/messages.json b/apps/browser/src/_locales/uk/messages.json index f9459c393a..873cfad2c6 100644 --- a/apps/browser/src/_locales/uk/messages.json +++ b/apps/browser/src/_locales/uk/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Автозаповнення" }, + "autoFillLogin": { + "message": "Автозаповнення входу" + }, + "autoFillCard": { + "message": "Автозаповнення картки" + }, + "autoFillIdentity": { + "message": "Автозаповнення особистих даних" + }, "generatePasswordCopied": { "message": "Генерувати пароль (з копіюванням)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Немає відповідних записів" }, + "noCards": { + "message": "Немає карток" + }, + "noIdentities": { + "message": "Немає особистих даних" + }, + "addLoginMenu": { + "message": "Додати запис входу" + }, + "addCardMenu": { + "message": "Додати картку" + }, + "addIdentityMenu": { + "message": "Додати особисті дані" + }, "unlockVaultMenu": { "message": "Розблокуйте сховище" }, @@ -244,6 +268,9 @@ "length": { "message": "Довжина" }, + "passwordMinLength": { + "message": "Мінімальна довжина пароля" + }, "uppercase": { "message": "Верхній регістр (A-Z)" }, @@ -285,7 +312,7 @@ "message": "Змінити" }, "view": { - "message": "Перегляд" + "message": "Переглянути" }, "noItemsInList": { "message": "Немає записів." @@ -299,6 +326,9 @@ "password": { "message": "Пароль" }, + "totp": { + "message": "Секретний ключ автентифікації" + }, "passphrase": { "message": "Парольна фраза" }, @@ -321,7 +351,7 @@ "message": "Видалити запис" }, "viewItem": { - "message": "Перегляд запису" + "message": "Переглянути запис" }, "launch": { "message": "Перейти" @@ -338,6 +368,12 @@ "other": { "message": "Інше" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Налаштуйте спосіб розблокування, щоб змінити час очікування сховища." + }, + "unlockMethodNeeded": { + "message": "Встановіть спосіб розблокування в налаштуваннях" + }, "rateExtension": { "message": "Оцінити розширення" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Блокувати зараз" }, + "lockAll": { + "message": "Заблокувати все" + }, "immediately": { "message": "Негайно" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Ваш обліковий запис створений! Тепер ви можете увійти." }, + "youSuccessfullyLoggedIn": { + "message": "Ви успішно увійшли в систему" + }, + "youMayCloseThisWindow": { + "message": "Можете закрити це вікно" + }, "masterPassSent": { "message": "Ми надіслали вам лист з підказкою для головного пароля." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Не вдається заповнити пароль на цій сторінці. Скопіюйте і вставте ім'я користувача та/або пароль." }, + "totpCaptureError": { + "message": "Неможливо сканувати QR-код з поточної сторінки" + }, + "totpCaptureSuccess": { + "message": "Ключ автентифікації додано" + }, + "totpCapture": { + "message": "Скануйте QR-код програмою автентифікації" + }, + "copyTOTP": { + "message": "Скопіюйте ключ автентифікації (TOTP)" + }, "loggedOut": { "message": "Ви вийшли" }, @@ -507,7 +564,7 @@ "message": "Ви можете змінити головний пароль в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" }, "twoStepLoginConfirmation": { - "message": "Двоетапна перевірка дає змогу надійніше захистити ваш обліковий запис, вимагаючи підтвердження входу з використанням іншого пристрою, наприклад, за допомогою коду безпеки, програми авторизації, SMS, телефонного виклику, або е-пошти. Ви можете налаштувати двоетапну перевірку в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" + "message": "Двоетапна перевірка дає змогу надійніше захистити ваш обліковий запис, вимагаючи підтвердження входу з використанням іншого пристрою, наприклад, за допомогою ключа безпеки, програми автентифікації, SMS, телефонного виклику, або е-пошти. Ви можете налаштувати двоетапну перевірку в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" }, "editedFolder": { "message": "Теку збережено" @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "Запитувати про додавання запису, якщо його немає у вашому сховищі." }, + "addLoginNotificationDescAlt": { + "message": "Запитувати про додавання запису, якщо такого не знайдено у вашому сховищі. Застосовується для всіх облікових записів, до яких виконано вхід." + }, "showCardsCurrentTab": { "message": "Показувати картки на вкладці" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "Запитувати про оновлення пароля запису, якщо на вебсайті виявлено його зміну." }, + "changedPasswordNotificationDescAlt": { + "message": "Запитувати про оновлення пароля для запису, якщо виявлено його зміну на вебсайті. Застосовується для всіх облікових записів, до яких виконано вхід." + }, + "enableUsePasskeys": { + "message": "Запитувати про збереження та використання ключів доступу" + }, + "usePasskeysDesc": { + "message": "Запитувати про збереження нових ключів доступу та використання збережених ключів доступу. Застосовується для всіх облікових записів, до яких виконано вхід." + }, "notificationChangeDesc": { "message": "Ви хочете оновити цей пароль в Bitwarden?" }, "notificationChangeSave": { "message": "Оновити" }, + "notificationUnlockDesc": { + "message": "Розблокуйте своє сховище Bitwarden, щоб завершити запит автозаповнення." + }, + "notificationUnlock": { + "message": "Розблокувати" + }, "enableContextMenuItem": { "message": "Показувати в контекстному меню" }, "contextMenuItemDesc": { - "message": "Використовувати доступ до генератора паролів та відповідних записів для вебсайту через контекстне меню." + "message": "Використовувати контекстне меню для доступу до генератора паролів та відповідних записів для вебсайту." + }, + "contextMenuItemDescAlt": { + "message": "Використовувати контекстне меню для доступу до генератора паролів та відповідних записів для вебсайту. Застосовується для всіх облікових записів, до яких виконано вхід." }, "defaultUriMatchDetection": { "message": "Типове виявлення збігів URI", @@ -649,6 +727,9 @@ "themeDesc": { "message": "Змінити колірну тему додатка." }, + "themeDescAlt": { + "message": "Змінити колірну тему програми. Застосовується для всіх облікових записів, до яких виконано вхід." + }, "dark": { "message": "Темна", "description": "Dark color" @@ -721,7 +802,7 @@ "message": "Докладніше" }, "authenticatorKeyTotp": { - "message": "Ключ авторизації (TOTP)" + "message": "Ключ автентифікації (TOTP)" }, "verificationCodeTotp": { "message": "Код підтвердження (TOTP)" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Функція недоступна" }, - "updateKey": { - "message": "Ви не можете використовувати цю функцію доки не оновите свій ключ шифрування." + "encryptionKeyMigrationRequired": { + "message": "Потрібно перенести ключ шифрування. Увійдіть у вебсховище та оновіть свій ключ шифрування." }, "premiumMembership": { "message": "Преміум статус" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 ГБ зашифрованого сховища для файлів." }, - "ppremiumSignUpTwoStep": { - "message": "Додаткові можливості двоетапної перевірки, наприклад, YubiKey, FIDO U2F та Duo." + "premiumSignUpTwoStepOptions": { + "message": "Додаткові можливості двоетапної авторизації, як-от YubiKey та Duo." }, "ppremiumSignUpReports": { "message": "Гігієна паролів, здоров'я облікового запису, а також звіти про вразливості даних, щоб зберігати ваше сховище в безпеці." @@ -829,7 +910,7 @@ "message": "Автоматично копіювати коди TOTP" }, "disableAutoTotpCopyDesc": { - "message": "Якщо запис має ключ авторизації, копіювати код підтвердження TOTP до буфера обміну під час автозаповнення." + "message": "Якщо запис має ключ автентифікації, копіювати код підтвердження TOTP до буфера обміну під час автозаповнення." }, "enableAutoBiometricsPrompt": { "message": "Запитувати біометрію під час запуску" @@ -841,7 +922,7 @@ "message": "Для використання цієї функції необхідна передплата преміум." }, "enterVerificationCodeApp": { - "message": "Введіть 6-значний код підтвердження з програми авторизації." + "message": "Введіть 6-значний код підтвердження з програми автентифікації." }, "enterVerificationCodeEmail": { "message": "Введіть 6-значний код підтвердження, надісланий на $EMAIL$.", @@ -883,7 +964,7 @@ "message": "Відкрити нову вкладку" }, "webAuthnAuthenticate": { - "message": "Авторизація WebAuthn" + "message": "Автентифікація WebAuthn" }, "loginUnavailable": { "message": "Вхід недоступний" @@ -892,7 +973,7 @@ "message": "Для цього облікового запису увімкнено двоетапну перевірку. Однак, жоден із налаштованих провайдерів не підтримується цим браузером." }, "noTwoStepProviders2": { - "message": "Будь ласка, скористайтеся підтримуваним браузером (наприклад, Chrome) та/або іншими провайдерами, що краще підтримуються браузерами (наприклад, програма авторизації)." + "message": "Будь ласка, скористайтеся підтримуваним браузером (наприклад, Chrome) та/або іншими провайдерами, що краще підтримуються браузерами (як-от програма автентифікації)." }, "twoStepOptions": { "message": "Налаштування двоетапної перевірки" @@ -904,10 +985,10 @@ "message": "Код відновлення" }, "authenticatorAppTitle": { - "message": "Програма авторизації" + "message": "Програма автентифікації" }, "authenticatorAppDesc": { - "message": "Використовуйте програму авторизації (наприклад, Authy або Google Authenticator), щоб генерувати тимчасові коди підтвердження.", + "message": "Використовуйте програму автентифікації (наприклад, Authy або Google Authenticator), щоб генерувати тимчасові коди підтвердження.", "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." }, "yubiKeyTitle": { @@ -940,7 +1021,7 @@ "message": "Середовище власного хостингу" }, "selfHostedEnvironmentFooter": { - "message": "Вкажіть основну URL-адресу Bitwarden на вашому сервері." + "message": "Вкажіть основну URL-адресу Bitwarden, встановленого на локальному хостингу." }, "customEnvironment": { "message": "Власне середовище" @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "URL-адреси середовища збережено" }, + "showAutoFillMenuOnFormFields": { + "message": "Меню автозаповнення на полях форм", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Застосовується для всіх облікових записів, до яких виконано вхід." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Для уникнення конфліктів вимкніть вбудований у браузер менеджер паролів." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Зміна налаштувань браузера." + }, + "autofillOverlayVisibilityOff": { + "message": "Вимк", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "Якщо вибрано поле (у фокусі)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Якщо вибрано піктограму автозаповнення", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Автозаповнення на сторінці" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Показувати впізнаване зображення біля кожного запису." }, + "faviconDescAlt": { + "message": "Показати впізнаване зображення поруч з кожним записом. Застосовується для всіх облікових записів, до яких виконано вхід." + }, "enableBadgeCounter": { "message": "Показувати лічильник" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Неправильний PIN-код." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Забагато невдалих спроб введення PIN-коду. Вихід з системи." + }, "unlockWithBiometrics": { "message": "Розблокувати з біометрією" }, @@ -1440,14 +1552,11 @@ "restoreItem": { "message": "Відновити запис" }, - "restoreItemConfirmation": { - "message": "Ви дійсно хочете відновити цей запис?" - }, "restoredItem": { "message": "Запис відновлено" }, "vaultTimeoutLogOutConfirmation": { - "message": "Вихід скасує всі права доступу до вашого сховища і вимагатиме авторизації після завершення часу очікування. Ви дійсно хочете використати цей параметр?" + "message": "Вихід скасує всі права доступу до вашого сховища і вимагатиме автентифікацію після завершення часу очікування. Ви дійсно хочете використати цей параметр?" }, "vaultTimeoutLogOutConfirmationTitle": { "message": "Підтвердження дії часу очікування" @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Біометрія в браузері не підтримується на цьому пристрої." }, + "biometricsFailedTitle": { + "message": "Збій біометрії" + }, + "biometricsFailedDesc": { + "message": "Неможливо виконати біометрію. Скористайтеся головним паролем або вийдіть із системи. Якщо проблема не зникне, зверніться до служби підтримки Bitwarden." + }, "nativeMessaginPermissionErrorTitle": { "message": "Дозвіл не надано" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Політика організації впливає на ваші параметри власності." }, + "personalOwnershipPolicyInEffectImports": { + "message": "Політика організації заблокувала імпортування елементів до вашого особистого сховища." + }, "excludedDomains": { "message": "Виключені домени" }, "excludedDomainsDesc": { "message": "Bitwarden не запитуватиме про збереження даних входу для цих доменів. Потрібно оновити сторінку для застосування змін." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden не запитуватиме про збереження даних входу для цих доменів для всіх облікових записів, до яких виконано вхід. Потрібно оновити сторінку для застосування змін." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ не є дійсним доменом", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Обрати теку..." }, - "ssoCompleteRegistration": { - "message": "Щоб завершити налаштування входу з SSO, встановіть головний пароль для доступу і захисту сховища." + "noFoldersFound": { + "message": "Тек не знайдено", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Оновлено дозволи вашої організації – вимагається встановлення головного пароля.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Ваша організація вимагає, щоб ви встановили головний пароль.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Потрібне підтвердження", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Годин" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Експортування особистого сховища" }, - "exportingPersonalVaultDescription": { - "message": "Будуть експортовані лише записи особистого сховища, пов'язані з $EMAIL$. Записи сховища організації не буде включено.", + "exportingIndividualVaultDescription": { + "message": "Будуть експортовані лише записи особистого сховища, пов'язані з $EMAIL$. Записи сховища організації не буде включено. Експортуються лише дані записів сховища без пов'язаних вкладень.", "placeholders": { "email": { "content": "$1", @@ -2005,7 +2139,7 @@ "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { - "message": "Використовуйте розширені можливості адрес вашого постачальника електронної пошти." + "message": "Використовуйте розширені можливості адрес вашого провайдера електронної пошти." }, "catchallEmail": { "message": "Адреса е-пошти Catch-all" @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Версія сервера" }, - "selfHosted": { - "message": "Власне розміщення" + "selfHostedServer": { + "message": "власне розміщення" }, "thirdParty": { "message": "Сторонній" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "Сповіщення було надіслано на ваш пристрій." }, - "logInInitiated": { + "loginInitiated": { "message": "Ініційовано вхід" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "Як працює автозаповнення" }, "autofillSelectInfoWithCommand": { - "message": "Виберіть елемент із цієї сторінки або використайте комбінацію клавіш: $COMMAND$", + "message": "Виберіть елемент із цього екрану, скористайтеся комбінацією клавіш $COMMAND$, або дізнайтеся про інші можливості в налаштуваннях.", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Виберіть елемент із цієї сторінки або встановіть комбінацію клавіш у налаштуваннях." + "message": "Виберіть елемент із цього екрану або дізнайтеся про інші можливості в налаштуваннях." }, "gotIt": { "message": "Зрозуміло" @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Регіон" + "loggingInOn": { + "message": "Увійти на" }, "opensInANewWindow": { "message": "Відкривається у новому вікні" }, + "deviceApprovalRequired": { + "message": "Необхідне підтвердження пристрою. Виберіть варіант підтвердження нижче:" + }, + "rememberThisDevice": { + "message": "Запам'ятати цей пристрій" + }, + "uncheckIfPublicDevice": { + "message": "Зніміть позначку, якщо використовуєте загальнодоступний пристрій" + }, + "approveFromYourOtherDevice": { + "message": "Затвердіть з іншого пристрою" + }, + "requestAdminApproval": { + "message": "Запит підтвердження адміністратора" + }, + "approveWithMasterPassword": { + "message": "Затвердити з головним паролем" + }, + "ssoIdentifierRequired": { + "message": "Потрібен SSO-ідентифікатор організації." + }, "eu": { "message": "ЄС", "description": "European Union" }, - "us": { - "message": "США", - "description": "United States" - }, "accessDenied": { "message": "Доступ заборонено. У вас немає дозволу на перегляд цієї сторінки." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Екран" + }, + "accountSuccessfullyCreated": { + "message": "Обліковий запис успішно створено!" + }, + "adminApprovalRequested": { + "message": "Запитано затвердження адміністратором" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Ваш запит відправлено адміністратору." + }, + "youWillBeNotifiedOnceApproved": { + "message": "Ви отримаєте сповіщення після затвердження." + }, + "troubleLoggingIn": { + "message": "Проблема під час входу?" + }, + "loginApproved": { + "message": "Вхід затверджено" + }, + "userEmailMissing": { + "message": "Немає адреси електронної пошти" + }, + "deviceTrusted": { + "message": "Довірений пристрій" + }, + "inputRequired": { + "message": "Необхідно ввести дані." + }, + "required": { + "message": "обов'язково" + }, + "search": { + "message": "Пошук" + }, + "inputMinLength": { + "message": "Введені дані мають бути довжиною принаймні $COUNT$ символів.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Вхідне значення не повинно перевищувати $COUNT$ символів.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "Вказані символи заборонені: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Значення має бути принаймні $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Значення не може перевищувати $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 або більше адрес е-пошти недійсні" + }, + "inputTrimValidator": { + "message": "Введене значення не повинно містити лише пробіл.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Введені дані не є адресою е-пошти." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ поле (поля) вище потребують вашої уваги.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Оберіть--" + }, + "multiSelectPlaceholder": { + "message": "-- Введіть для фільтрування --" + }, + "multiSelectLoading": { + "message": "Параметри отримання..." + }, + "multiSelectNotFound": { + "message": "Нічого не знайдено" + }, + "multiSelectClearAll": { + "message": "Очистити все" + }, + "plusNMore": { + "message": "+ ще $QUANTITY$", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Підменю" + }, + "toggleCollapse": { + "message": "Згорнути/розгорнути", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Імпортувати ваші дані до Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Захистити ваші дані LastPass та імпортувати до Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Зберегти незашифрований файл", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Імпортувати до Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Триває імпортування...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Дані успішно імпортовано!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Помилка імпортування. Перевірте консоль для перегляду подробиць.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Під час імпортування сталася мережева помилка.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Псевдонім домену" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Записи з повторним запитом головного пароля не можна автоматично заповнювати під час завантаження сторінки. Автозаповнення на сторінці вимкнено.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Автозаповнення на сторінці налаштовано з типовими параметрами.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Вимкніть повторний запит головного пароля, щоб редагувати це поле", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Перейти до вмісту" + }, + "bitwardenOverlayButton": { + "message": "Кнопка меню автозаповнення Bitwarden", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Перемкнути меню автозаповнення Bitwarden", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Меню автозаповнення Bitwarden", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Розблокуйте обліковий запис, щоб побачити відповідні записи", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Розблокувати обліковий запис", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Заповнити облікові дані для", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Часткове ім'я користувача", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "Немає записів для показу", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "Новий запис", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Додати новий запис сховища", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Доступне меню автозаповнення Bitwarden. Натисніть клавішу стрілки для вибору.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Увімкнути" + }, + "ignore": { + "message": "Ігнорувати" + }, + "importData": { + "message": "Імпортувати дані", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Помилка імпорту" + }, + "importErrorDesc": { + "message": "Під час спроби імпортування ваших даних виникла проблема. Будь ласка, виправте вказані нижче помилки у вихідному файлі та спробуйте знову." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Розв'яжіть зазначені помилки та повторіть спробу." + }, + "description": { + "message": "Опис" + }, + "importSuccess": { + "message": "Дані успішно імпортовано" + }, + "importSuccessNumberOfItems": { + "message": "Всього імпортовано $AMOUNT$ елементів.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Спробуйте знову" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Ця дія потребує підтвердження. Встановіть PIN-код, щоб продовжити." + }, + "setPin": { + "message": "Встановити PIN-код" + }, + "verifyWithBiometrics": { + "message": "Підтвердити з біометрією" + }, + "awaitingConfirmation": { + "message": "Очікується підтвердження" + }, + "couldNotCompleteBiometrics": { + "message": "Не вдалося виконати біометричну перевірку." + }, + "needADifferentMethod": { + "message": "Потрібен інший спосіб?" + }, + "useMasterPassword": { + "message": "Використати головний пароль" + }, + "usePin": { + "message": "Використати PIN-код" + }, + "useBiometrics": { + "message": "Використати біометрію" + }, + "enterVerificationCodeSentToEmail": { + "message": "Введіть код підтвердження, надісланий на вашу електронну пошту." + }, + "resendCode": { + "message": "Надіслати новий код" + }, + "total": { + "message": "Всього" + }, + "importWarning": { + "message": "Ви імпортуєте дані до $ORGANIZATION$. Ваші дані можуть бути доступні учасникам цієї організації. Хочете продовжити?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Запустіть Duo і виконайте дії для завершення входу." + }, + "duoRequiredForAccount": { + "message": "Для вашого облікового запису необхідна двоетапна перевірка з Duo." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Відкріпіть розширення для завершення входу." + }, + "popoutExtension": { + "message": "Відкріпити вікно розширення" + }, + "launchDuo": { + "message": "Запустити Duo" + }, + "importFormatError": { + "message": "Дані мають некоректне форматування. Перевірте файл імпорту і спробуйте знову." + }, + "importNothingError": { + "message": "Нічого не імпортовано." + }, + "importEncKeyError": { + "message": "Помилка розшифрування експортованого файлу. Ваш ключ шифрування відрізняється від ключа, використаного для експортування даних." + }, + "invalidFilePassword": { + "message": "Неправильний пароль файлу. Використайте пароль, який ви вводили під час створення експортованого файлу." + }, + "importDestination": { + "message": "Призначення імпорту" + }, + "learnAboutImportOptions": { + "message": "Дізнайтеся про параметри імпорту" + }, + "selectImportFolder": { + "message": "Вибрати теку" + }, + "selectImportCollection": { + "message": "Вибрати збірку" + }, + "importTargetHint": { + "message": "Оберіть цю опцію, якщо ви хочете, щоб вміст імпортованого файлу було збережено в $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "Файл містить непризначені елементи." + }, + "selectFormat": { + "message": "Оберіть формат імпортованого файлу" + }, + "selectImportFile": { + "message": "Оберіть файл для імпорту" + }, + "chooseFile": { + "message": "Вибрати файл" + }, + "noFileChosen": { + "message": "Файл не вибрано" + }, + "orCopyPasteFileContents": { + "message": "або скопіюйте і вставте вміст файлу для імпорту" + }, + "instructionsFor": { + "message": "Інструкції для $NAME$", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Підтвердити імпорт сховища" + }, + "confirmVaultImportDesc": { + "message": "Цей файл захищений паролем. Будь ласка, введіть пароль для імпортування даних." + }, + "confirmFilePassword": { + "message": "Підтвердьте пароль файлу" + }, + "typePasskey": { + "message": "Ключ доступу" + }, + "passkeyNotCopied": { + "message": "Ключ доступу не буде скопійовано" + }, + "passkeyNotCopiedAlert": { + "message": "Ключ доступу не буде скопійовано до клонованого запису. Хочете продовжити клонування цього запису?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Сайт ініціює обов'язкову верифікацію. Ця функція ще не реалізована для облікових записів без головного пароля." + }, + "logInWithPasskey": { + "message": "Увійти з ключем доступу?" + }, + "passkeyAlreadyExists": { + "message": "Ключ доступу для цієї програми вже існує." + }, + "noPasskeysFoundForThisApplication": { + "message": "Для цієї програми не знайдено ключів доступу." + }, + "noMatchingPasskeyLogin": { + "message": "У вас немає відповідних записів для цього сайту." + }, + "confirm": { + "message": "Підтвердити" + }, + "savePasskey": { + "message": "Зберегти ключ доступу" + }, + "savePasskeyNewLogin": { + "message": "Зберегти ключ доступу як новий запис" + }, + "choosePasskey": { + "message": "Виберіть запис для збереження цього ключа доступу" + }, + "passkeyItem": { + "message": "Ключ доступу" + }, + "overwritePasskey": { + "message": "Перезаписати ключ доступу?" + }, + "overwritePasskeyAlert": { + "message": "Цей елемент вже містить ключ доступу. Ви впевнені, що хочете перезаписати поточний ключ доступу?" + }, + "featureNotSupported": { + "message": "Функція ще не підтримується" + }, + "yourPasskeyIsLocked": { + "message": "Для використання ключа доступу потрібна автентифікація. Пройдіть перевірку, щоб продовжити." + }, + "multifactorAuthenticationCancelled": { + "message": "Багатофакторну автентифікацію скасовано" + }, + "noLastPassDataFound": { + "message": "Дані LastPass не знайдено" + }, + "incorrectUsernameOrPassword": { + "message": "Неправильне ім'я користувача або пароль" + }, + "incorrectPassword": { + "message": "Неправильний пароль" + }, + "incorrectCode": { + "message": "Неправильний код" + }, + "incorrectPin": { + "message": "Неправильний PIN-код" + }, + "multifactorAuthenticationFailed": { + "message": "Збій багатофакторної автентифікації" + }, + "includeSharedFolders": { + "message": "Включити спільні теки" + }, + "lastPassEmail": { + "message": "Електронна пошта LastPass" + }, + "importingYourAccount": { + "message": "Ваш обліковий запис імпортується..." + }, + "lastPassMFARequired": { + "message": "Необхідно пройти багатофакторну автентифікацію LastPass" + }, + "lastPassMFADesc": { + "message": "Введіть одноразовий код з програми автентифікації" + }, + "lastPassOOBDesc": { + "message": "Схваліть запит входу в програмі автентифікації або введіть одноразовий код." + }, + "passcode": { + "message": "Код" + }, + "lastPassMasterPassword": { + "message": "Головний пароль LastPass" + }, + "lastPassAuthRequired": { + "message": "Необхідно пройти автентифікацію LastPass" + }, + "awaitingSSO": { + "message": "Очікується автентифікація SSO" + }, + "awaitingSSODesc": { + "message": "Увійдіть з використанням облікових даних вашої компанії." + }, + "seeDetailedInstructions": { + "message": "Перегляньте докладні інструкції на нашому довідковому сайті", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Імпортувати безпосередньо з LastPass" + }, + "importFromCSV": { + "message": "Імпортувати з файлу CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Спробуйте ще раз або перевірте електронну пошту від LastPass для підтвердження дії." + }, + "collection": { + "message": "Збірка" + }, + "lastPassYubikeyDesc": { + "message": "Вставте YubiKey пов'язаний з обліковим записом LastPass в USB порт вашого комп'ютера, потім торкніться його кнопки." + }, + "switchAccount": { + "message": "Перемкнути обліковий запис" + }, + "switchAccounts": { + "message": "Перемкнути облікові записи" + }, + "switchToAccount": { + "message": "Перемкнути на обліковий запис" + }, + "activeAccount": { + "message": "Активний обліковий запис" + }, + "availableAccounts": { + "message": "Доступні облікові записи" + }, + "accountLimitReached": { + "message": "Досягнуто обмеження облікового запису. Вийдіть, щоб додати інший обліковий запис." + }, + "active": { + "message": "активний" + }, + "locked": { + "message": "заблокований" + }, + "unlocked": { + "message": "розблокований" + }, + "server": { + "message": "сервер" + }, + "hostedAt": { + "message": "розміщений на" + }, + "useDeviceOrHardwareKey": { + "message": "Скористайтеся своїм пристроєм або апаратним ключем" + }, + "justOnce": { + "message": "Лише раз" + }, + "alwaysForThisSite": { + "message": "Завжди для цього сайту" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ додано до винятків.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Поширені формати", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Зробити Bitwarden типовим менеджером паролів?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Якщо ігнорувати цей параметр, можуть виникнути конфлікти автозаповнення між Bitwarden і браузером.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Зробити Bitwarden типовим менеджером паролів", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Неможливо зробити Bitwarden типовим менеджером паролів", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "Щоб зробити Bitwarden типовим менеджером паролів, ви маєте надати дозволи приватності у налаштуваннях розширень браузера.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Зробити типовим", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Облікові дані успішно збережено!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Облікові дані успішно оновлено!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Помилка збереження облікових даних. Перегляньте подробиці в консолі.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Вилучити ключ доступу" + }, + "passkeyRemoved": { + "message": "Ключ доступу вилучено" + }, + "unassignedItemsBanner": { + "message": "Увага: непризначені елементи організації більше не видимі у поданні \"Усі сховища\" і доступні лише в консолі адміністратора. Щоб зробити їх видимими, призначте ці елементи збірці в консолі адміністратора." } } diff --git a/apps/browser/src/_locales/vi/messages.json b/apps/browser/src/_locales/vi/messages.json index 35234feeb3..d71fa3322f 100644 --- a/apps/browser/src/_locales/vi/messages.json +++ b/apps/browser/src/_locales/vi/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "Tự động điền" }, + "autoFillLogin": { + "message": "Tự động điền thông tin đăng nhập" + }, + "autoFillCard": { + "message": "Tự động điền thẻ" + }, + "autoFillIdentity": { + "message": "Tự động điền danh tính" + }, "generatePasswordCopied": { "message": "Tạo mật khẩu (đã sao chép)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "Không có thông tin đăng nhập phù hợp." }, + "noCards": { + "message": "Không có thẻ" + }, + "noIdentities": { + "message": "Không có danh tính" + }, + "addLoginMenu": { + "message": "Thêm thông tin đăng nhập" + }, + "addCardMenu": { + "message": "Thêm thẻ" + }, + "addIdentityMenu": { + "message": "Thêm danh tính" + }, "unlockVaultMenu": { "message": "Mở khoá kho lưu trữ của bạn" }, @@ -244,6 +268,9 @@ "length": { "message": "Độ dài" }, + "passwordMinLength": { + "message": "Độ dài mật khẩu tối thiểu" + }, "uppercase": { "message": "Chữ in hoa (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "Mật khẩu" }, + "totp": { + "message": "Khóa xác thực" + }, "passphrase": { "message": "Cụm từ mật khẩu" }, @@ -338,6 +368,12 @@ "other": { "message": "Khác" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "Thiết lập phương thức mở khóa để thay đổi hành động hết thời gian chờ của vault." + }, + "unlockMethodNeeded": { + "message": "Thiết lập phương pháp mở khóa trong Cài đặt" + }, "rateExtension": { "message": "Đánh giá tiện ích mở rộng" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "Khóa ngay" }, + "lockAll": { + "message": "Lock all" + }, "immediately": { "message": "Ngay lập tức" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "Tài khoản mới của bạn đã được tạo! Bạn có thể đăng nhập từ bây giờ." }, + "youSuccessfullyLoggedIn": { + "message": "You successfully logged in" + }, + "youMayCloseThisWindow": { + "message": "You may close this window" + }, "masterPassSent": { "message": "Chúng tôi đã gửi cho bạn email có chứa gợi ý mật khẩu chính của bạn." }, @@ -476,6 +521,18 @@ "autofillError": { "message": "Không thể tự động điền mục đã chọn trên trang này. Hãy thực hiện sao chép và dán thông tin một cách thủ công." }, + "totpCaptureError": { + "message": "Unable to scan QR code from the current webpage" + }, + "totpCaptureSuccess": { + "message": "Authenticator key added" + }, + "totpCapture": { + "message": "Scan authenticator QR code from current webpage" + }, + "copyTOTP": { + "message": "Copy Authenticator key (TOTP)" + }, "loggedOut": { "message": "Đã đăng xuất" }, @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "'Thông báo Thêm đăng nhập' sẽ tự động nhắc bạn lưu các đăng nhập mới vào hầm an toàn của bạn bất cứ khi nào bạn đăng nhập trang web lần đầu tiên." }, + "addLoginNotificationDescAlt": { + "message": "Ask to add an item if one isn't found in your vault. Applies to all logged in accounts." + }, "showCardsCurrentTab": { "message": "Hiển thị thẻ trên trang Tab" }, @@ -624,18 +684,36 @@ "changedPasswordNotificationDesc": { "message": "Yêu cầu cập nhật mật khẩu đăng nhập khi phát hiện thay đổi trên trang web." }, + "changedPasswordNotificationDescAlt": { + "message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts." + }, + "enableUsePasskeys": { + "message": "Ask to save and use passkeys" + }, + "usePasskeysDesc": { + "message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts." + }, "notificationChangeDesc": { "message": "Bạn có muốn cập nhật mật khẩu này trên Bitwarden không?" }, "notificationChangeSave": { "message": "Cập nhật" }, + "notificationUnlockDesc": { + "message": "Vui lòng mở khóa Kho Bitwarden của bạn để hoàn thành quá trình tự động điền." + }, + "notificationUnlock": { + "message": "Mở khóa" + }, "enableContextMenuItem": { "message": "Hiển thị tuỳ chọn menu ngữ cảnh" }, "contextMenuItemDesc": { "message": "Sử dụng một đúp chuột để truy cập vào việc tạo mật khẩu và thông tin đăng nhập phù hợp cho trang web. " }, + "contextMenuItemDescAlt": { + "message": "Use a secondary click to access password generation and matching logins for the website. Applies to all logged in accounts." + }, "defaultUriMatchDetection": { "message": "Phương thức kiểm tra URI mặc định", "description": "Default URI match detection for auto-fill." @@ -649,6 +727,9 @@ "themeDesc": { "message": "Thay đổi màu sắc ứng dụng." }, + "themeDescAlt": { + "message": "Change the application's color theme. Applies to all logged in accounts." + }, "dark": { "message": "Tối", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "Tính năng không có sẵn" }, - "updateKey": { - "message": "Bạn không thể sử dụng tính năng này cho đến khi bạn cập nhật khoá mã hóa." + "encryptionKeyMigrationRequired": { + "message": "Encryption key migration required. Please login through the web vault to update your encryption key." }, "premiumMembership": { "message": "Thành viên Cao Cấp" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1GB bộ nhớ lưu trữ tập tin được mã hóa." }, - "ppremiumSignUpTwoStep": { - "message": "Tuỳ chọn đăng nhập 2 bước bổ sung như YubiKey, FIDO U2F, và Duo." + "premiumSignUpTwoStepOptions": { + "message": "Proprietary two-step login options such as YubiKey and Duo." }, "ppremiumSignUpReports": { "message": "Thanh lọc mật khẩu, kiểm tra an toàn tài khoản và các báo cáo rò rĩ dữ liệu là để giữ cho kho của bạn an toàn." @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "Địa chỉ môi trường đã được lưu." }, + "showAutoFillMenuOnFormFields": { + "message": "Hiển thị menu tự động điền trên các trường biểu mẫu", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "Áp dụng cho tất cả tài khoản đã đăng nhập." + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "Tắt cài đặt trình quản lý mật khẩu tích hợp trong trình duyệt của bạn để tránh xung đột." + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "Edit browser settings." + }, + "autofillOverlayVisibilityOff": { + "message": "Off", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "When field is selected (on focus)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "Khi chọn biểu tượng tự động điền", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "Tự động điền khi tải trang" }, @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "Hiển thị một ảnh nhận dạng bên cạnh mỗi lần đăng nhập." }, + "faviconDescAlt": { + "message": "Show a recognizable image next to each login. Applies to all logged in accounts." + }, "enableBadgeCounter": { "message": "Hiển thị biểu tượng bộ đếm" }, @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "Mã PIN không hợp lệ." }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "Too many invalid PIN entry attempts. Logging out." + }, "unlockWithBiometrics": { "message": "Mở khóa bằng sinh trắc học" }, @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "Khôi phục mục" }, - "restoreItemConfirmation": { - "message": "Bạn có chắc chắn muốn khôi phục mục này không?" - }, "restoredItem": { "message": "Mục đã được khôi phục" }, @@ -1462,16 +1571,16 @@ "message": "Đã tự động điền mục " }, "insecurePageWarning": { - "message": "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." + "message": "Cảnh báo: Đây là một trang HTTP không an toàn, và mọi thông tin bạn nhập ở đây có khả năng được xem & thay đổi bởi người khác. Thông tin Đăng nhập này ban đầu được lưu ở một trang an toàn (HTTPS)." }, "insecurePageWarningFillPrompt": { - "message": "Do you still wish to fill this login?" + "message": "Bạn vẫn muốn điền thông tin đăng nhập?" }, "autofillIframeWarning": { - "message": "The form is hosted by a different domain than the URI of your saved login. Choose OK to auto-fill anyway, or Cancel to stop." + "message": "Mẫu điền thông tin này được lưu tại một tên miền khác với URI lưu tại thông tin đăng nhập của bạn. Hãy chọn OK để tiếp tục tự động điền, hoặc Hủy bỏ để dừng lại." }, "autofillIframeWarningTip": { - "message": "To prevent this warning in the future, save this URI, $HOSTNAME$, to your Bitwarden login item for this site.", + "message": "Để chặn cảnh báo này trong tương lai, hãy lưu URI này, $HOSTNAME$, vào thông tin đăng nhập của bạn cho trang này ở Kho Bitwarden.", "placeholders": { "hostname": { "content": "$1", @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "Nhận dạng sinh trắc học trên trình duyệt không được hỗ trợ trên thiết bị này" }, + "biometricsFailedTitle": { + "message": "Biometrics failed" + }, + "biometricsFailedDesc": { + "message": "Biometrics cannot be completed, consider using a master password or logging out. If this persists, please contact Bitwarden support." + }, "nativeMessaginPermissionErrorTitle": { "message": "Quyền chưa được cấp" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "Chính sách của tổ chức đang ảnh hưởng đến các tùy chọn quyền sở hữu của bạn." }, + "personalOwnershipPolicyInEffectImports": { + "message": "An organization policy has blocked importing items into your individual vault." + }, "excludedDomains": { "message": "Tên miền đã loại trừ" }, "excludedDomainsDesc": { "message": "Bitwarden sẽ không yêu cầu lưu thông tin đăng nhập cho các miền này. Bạn phải làm mới trang để các thay đổi có hiệu lực." }, + "excludedDomainsDescAlt": { + "message": "Bitwarden will not ask to save login details for these domains for all logged in accounts. You must refresh the page for changes to take effect." + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ không phải là tên miền hợp lệ", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "Chọn thư mục..." }, - "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "noFoldersFound": { + "message": "No folders found", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "Your organization permissions were updated, requiring you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "Your organization requires you to set a master password.", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "Verification required", + "description": "Default title for the user verification dialog." }, "hours": { "message": "Giờ" @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "Exporting individual vault" }, - "exportingPersonalVaultDescription": { - "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "exportingIndividualVaultDescription": { + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.", "placeholders": { "email": { "content": "$1", @@ -2080,8 +2214,8 @@ "serverVersion": { "message": "Phiên bản máy chủ" }, - "selfHosted": { - "message": "Tự lưu trữ" + "selfHostedServer": { + "message": "self-hosted" }, "thirdParty": { "message": "Bên thứ ba" @@ -2140,8 +2274,8 @@ "notificationSentDevice": { "message": "Một thông báo đã được gửi đến thiết bị của bạn." }, - "logInInitiated": { - "message": "Log in initiated" + "loginInitiated": { + "message": "Login initiated" }, "exposedMasterPassword": { "message": "Mật khẩu chính bị lộ" @@ -2174,13 +2308,13 @@ } }, "autofillPageLoadPolicyActivated": { - "message": "Your organization policies have turned on auto-fill on page load." + "message": "Chính sách quản lí của bạn đã bật chức năng tự động điền khi tải trang." }, "howToAutofill": { - "message": "How to auto-fill" + "message": "Cách tự đồng điền" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.", "placeholders": { "command": { "content": "$1", @@ -2189,22 +2323,22 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Select an item from this screen, or explore other options in settings." }, "gotIt": { "message": "Got it" }, "autofillSettings": { - "message": "Auto-fill settings" + "message": "Cài đặt tự động điền" }, "autofillShortcut": { - "message": "Auto-fill keyboard shortcut" + "message": "Phím tắt tự động điền" }, "autofillShortcutNotSet": { - "message": "The auto-fill shortcut is not set. Change this in the browser's settings." + "message": "Chưa cài đặt phím tắt cho chức năng tự động điền. Vui lòng thay đổi trong cài đặt của trình duyệt." }, "autofillShortcutText": { - "message": "The auto-fill shortcut is: $COMMAND$. Change this in the browser's settings.", + "message": "Phím tắt cho chức năng tự động điền là $COMMAND$. Vui lòng thay đổi trong cài đặt của trình duyệt.", "placeholders": { "command": { "content": "$1", @@ -2213,7 +2347,7 @@ } }, "autofillShortcutTextSafari": { - "message": "Default auto-fill shortcut: $COMMAND$.", + "message": "Phím tắt mặc định cho chức năng tự động điền: $COMMAND$.", "placeholders": { "command": { "content": "$1", @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "Region" + "loggingInOn": { + "message": "Logging in on" }, "opensInANewWindow": { "message": "Opens in a new window" }, + "deviceApprovalRequired": { + "message": "Device approval required. Select an approval option below:" + }, + "rememberThisDevice": { + "message": "Remember this device" + }, + "uncheckIfPublicDevice": { + "message": "Uncheck if using a public device" + }, + "approveFromYourOtherDevice": { + "message": "Approve from your other device" + }, + "requestAdminApproval": { + "message": "Request admin approval" + }, + "approveWithMasterPassword": { + "message": "Approve with master password" + }, + "ssoIdentifierRequired": { + "message": "Organization SSO identifier is required." + }, "eu": { "message": "EU", "description": "European Union" }, - "us": { - "message": "US", - "description": "United States" - }, "accessDenied": { "message": "Access denied. You do not have permission to view this page." }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "Display" + }, + "accountSuccessfullyCreated": { + "message": "Account successfully created!" + }, + "adminApprovalRequested": { + "message": "Admin approval requested" + }, + "adminApprovalRequestSentToAdmins": { + "message": "Your request has been sent to your admin." + }, + "youWillBeNotifiedOnceApproved": { + "message": "You will be notified once approved." + }, + "troubleLoggingIn": { + "message": "Trouble logging in?" + }, + "loginApproved": { + "message": "Login approved" + }, + "userEmailMissing": { + "message": "User email missing" + }, + "deviceTrusted": { + "message": "Device trusted" + }, + "inputRequired": { + "message": "Input is required." + }, + "required": { + "message": "required" + }, + "search": { + "message": "Search" + }, + "inputMinLength": { + "message": "Input must be at least $COUNT$ characters long.", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "Input must not exceed $COUNT$ characters in length.", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "The following characters are not allowed: $CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "Input value must be at least $MIN$.", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "Input value must not exceed $MAX$.", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "1 or more emails are invalid" + }, + "inputTrimValidator": { + "message": "Input must not contain only whitespace.", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "Input is not an email address." + }, + "fieldsNeedAttention": { + "message": "$COUNT$ field(s) above need your attention.", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- Select --" + }, + "multiSelectPlaceholder": { + "message": "-- Type to filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "Submenu" + }, + "toggleCollapse": { + "message": "Toggle collapse", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "Import your data to Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "Protect your LastPass data and import to Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "Save as unencrypted file", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "Import to Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "Importing...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "Data successfully imported!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "Error importing. Check console for details.", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "Network error encountered during import.", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "Alias domain" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "Items with master password re-prompt cannot be auto-filled on page load. Auto-fill on page load turned off.", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "Auto-fill on page load set to use default setting.", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "Turn off master password re-prompt to edit this field", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "Skip to content" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden auto-fill menu button", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "Toggle Bitwarden auto-fill menu", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden auto-fill menu", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "Unlock your account to view matching logins", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "Unlock account", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "Fill credentials for", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "Partial username", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "No items to show", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "New item", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "Add new vault item", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden auto-fill menu available. Press the down arrow key to select.", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "Turn on" + }, + "ignore": { + "message": "Ignore" + }, + "importData": { + "message": "Import data", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "Import error" + }, + "importErrorDesc": { + "message": "There was a problem with the data you tried to import. Please resolve the errors listed below in your source file and try again." + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "Resolve the errors below and try again." + }, + "description": { + "message": "Description" + }, + "importSuccess": { + "message": "Data successfully imported" + }, + "importSuccessNumberOfItems": { + "message": "A total of $AMOUNT$ items were imported.", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "Try again" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "Verification required for this action. Set a PIN to continue." + }, + "setPin": { + "message": "Set PIN" + }, + "verifyWithBiometrics": { + "message": "Verify with biometrics" + }, + "awaitingConfirmation": { + "message": "Awaiting confirmation" + }, + "couldNotCompleteBiometrics": { + "message": "Could not complete biometrics." + }, + "needADifferentMethod": { + "message": "Need a different method?" + }, + "useMasterPassword": { + "message": "Use master password" + }, + "usePin": { + "message": "Use PIN" + }, + "useBiometrics": { + "message": "Use biometrics" + }, + "enterVerificationCodeSentToEmail": { + "message": "Enter the verification code that was sent to your email." + }, + "resendCode": { + "message": "Resend code" + }, + "total": { + "message": "Total" + }, + "importWarning": { + "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "Launch Duo and follow the steps to finish logging in." + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "Launch Duo" + }, + "importFormatError": { + "message": "Data is not formatted correctly. Please check your import file and try again." + }, + "importNothingError": { + "message": "Nothing was imported." + }, + "importEncKeyError": { + "message": "Error decrypting the exported file. Your encryption key does not match the encryption key used export the data." + }, + "invalidFilePassword": { + "message": "Invalid file password, please use the password you entered when you created the export file." + }, + "importDestination": { + "message": "Import destination" + }, + "learnAboutImportOptions": { + "message": "Learn about your import options" + }, + "selectImportFolder": { + "message": "Select a folder" + }, + "selectImportCollection": { + "message": "Select a collection" + }, + "importTargetHint": { + "message": "Select this option if you want the imported file contents moved to a $DESTINATION$", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "File contains unassigned items." + }, + "selectFormat": { + "message": "Select the format of the import file" + }, + "selectImportFile": { + "message": "Select the import file" + }, + "chooseFile": { + "message": "Choose File" + }, + "noFileChosen": { + "message": "No file chosen" + }, + "orCopyPasteFileContents": { + "message": "or copy/paste the import file contents" + }, + "instructionsFor": { + "message": "$NAME$ Instructions", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "Confirm vault import" + }, + "confirmVaultImportDesc": { + "message": "This file is password-protected. Please enter the file password to import data." + }, + "confirmFilePassword": { + "message": "Confirm file password" + }, + "typePasskey": { + "message": "Passkey" + }, + "passkeyNotCopied": { + "message": "Passkey will not be copied" + }, + "passkeyNotCopiedAlert": { + "message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password." + }, + "logInWithPasskey": { + "message": "Log in with passkey?" + }, + "passkeyAlreadyExists": { + "message": "A passkey already exists for this application." + }, + "noPasskeysFoundForThisApplication": { + "message": "No passkeys found for this application." + }, + "noMatchingPasskeyLogin": { + "message": "You do not have a matching login for this site." + }, + "confirm": { + "message": "Confirm" + }, + "savePasskey": { + "message": "Save passkey" + }, + "savePasskeyNewLogin": { + "message": "Save passkey as new login" + }, + "choosePasskey": { + "message": "Choose a login to save this passkey to" + }, + "passkeyItem": { + "message": "Passkey Item" + }, + "overwritePasskey": { + "message": "Overwrite passkey?" + }, + "overwritePasskeyAlert": { + "message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?" + }, + "featureNotSupported": { + "message": "Feature not yet supported" + }, + "yourPasskeyIsLocked": { + "message": "Authentication required to use passkey. Verify your identity to continue." + }, + "multifactorAuthenticationCancelled": { + "message": "Multifactor authentication cancelled" + }, + "noLastPassDataFound": { + "message": "No LastPass data found" + }, + "incorrectUsernameOrPassword": { + "message": "Incorrect username or password" + }, + "incorrectPassword": { + "message": "Incorrect password" + }, + "incorrectCode": { + "message": "Incorrect code" + }, + "incorrectPin": { + "message": "Incorrect PIN" + }, + "multifactorAuthenticationFailed": { + "message": "Multifactor authentication failed" + }, + "includeSharedFolders": { + "message": "Include shared folders" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "Importing your account..." + }, + "lastPassMFARequired": { + "message": "LastPass multifactor authentication required" + }, + "lastPassMFADesc": { + "message": "Enter your one-time passcode from your authentication app" + }, + "lastPassOOBDesc": { + "message": "Approve the login request in your authentication app or enter a one-time passcode." + }, + "passcode": { + "message": "Passcode" + }, + "lastPassMasterPassword": { + "message": "LastPass master password" + }, + "lastPassAuthRequired": { + "message": "LastPass authentication required" + }, + "awaitingSSO": { + "message": "Awaiting SSO authentication" + }, + "awaitingSSODesc": { + "message": "Please continue to log in using your company credentials." + }, + "seeDetailedInstructions": { + "message": "See detailed instructions on our help site at", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "Import directly from LastPass" + }, + "importFromCSV": { + "message": "Import from CSV" + }, + "lastPassTryAgainCheckEmail": { + "message": "Try again or look for an email from LastPass to verify it's you." + }, + "collection": { + "message": "Collection" + }, + "lastPassYubikeyDesc": { + "message": "Insert the YubiKey associated with your LastPass account into your computer's USB port, then touch its button." + }, + "switchAccount": { + "message": "Switch account" + }, + "switchAccounts": { + "message": "Switch accounts" + }, + "switchToAccount": { + "message": "Switch to account" + }, + "activeAccount": { + "message": "Active account" + }, + "availableAccounts": { + "message": "Available accounts" + }, + "accountLimitReached": { + "message": "Account limit reached. Log out of an account to add another." + }, + "active": { + "message": "active" + }, + "locked": { + "message": "locked" + }, + "unlocked": { + "message": "unlocked" + }, + "server": { + "message": "server" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "Just once" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "Make default", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json index e4a970a45d..85fb5f6d2e 100644 --- a/apps/browser/src/_locales/zh_CN/messages.json +++ b/apps/browser/src/_locales/zh_CN/messages.json @@ -41,7 +41,7 @@ "message": "主密码是您访问密码库的唯一密码。它非常重要,请您不要忘记。一旦忘记,无任何办法恢复此密码。" }, "masterPassHintDesc": { - "message": "主密码提示可以在你忘记密码时帮你回忆起来。" + "message": "主密码提示可以在您忘记密码时帮您回忆起来。" }, "reTypeMasterPass": { "message": "再次输入主密码" @@ -91,6 +91,15 @@ "autoFill": { "message": "自动填充" }, + "autoFillLogin": { + "message": "自动填充登录" + }, + "autoFillCard": { + "message": "自动填充支付卡" + }, + "autoFillIdentity": { + "message": "自动填充身份" + }, "generatePasswordCopied": { "message": "生成密码(并复制)" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "无匹配的登录项目" }, + "noCards": { + "message": "无支付卡" + }, + "noIdentities": { + "message": "无身份" + }, + "addLoginMenu": { + "message": "添加登录项目" + }, + "addCardMenu": { + "message": "添加支付卡" + }, + "addIdentityMenu": { + "message": "添加身份" + }, "unlockVaultMenu": { "message": "解锁您的密码库" }, @@ -153,7 +177,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." }, "yourAccountsFingerprint": { - "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." }, "twoStepLogin": { @@ -244,6 +268,9 @@ "length": { "message": "长度" }, + "passwordMinLength": { + "message": "最小密码长度" + }, "uppercase": { "message": "大写 (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "密码" }, + "totp": { + "message": "验证器机密" + }, "passphrase": { "message": "密码短语" }, @@ -338,6 +368,12 @@ "other": { "message": "其他" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "设置一个解锁方式以更改您的密码库超时动作。" + }, + "unlockMethodNeeded": { + "message": "在设置中设置一个解锁方式" + }, "rateExtension": { "message": "为本扩展打分" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "立即锁定" }, + "lockAll": { + "message": "全部锁定" + }, "immediately": { "message": "立即" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "您的新账户已创建!您现在可以登录了。" }, + "youSuccessfullyLoggedIn": { + "message": "您已成功登录" + }, + "youMayCloseThisWindow": { + "message": "您可以关闭此窗口" + }, "masterPassSent": { "message": "我们已经为您发送了包含主密码提示的邮件。" }, @@ -476,14 +521,26 @@ "autofillError": { "message": "无法在此页面上自动填充所选项目。请改为手工复制并粘贴。" }, + "totpCaptureError": { + "message": "无法从当前网页扫描二维码" + }, + "totpCaptureSuccess": { + "message": "已添加验证器密钥" + }, + "totpCapture": { + "message": "从当前网页扫描验证器二维码" + }, + "copyTOTP": { + "message": "复制验证器密钥 (TOTP)" + }, "loggedOut": { - "message": "已退出账户" + "message": "已注销" }, "loginExpired": { "message": "您的登录会话已过期。" }, "logOutConfirmation": { - "message": "您确定要退出账户吗?" + "message": "确定要注销吗?" }, "yes": { "message": "是" @@ -507,13 +564,13 @@ "message": "您可以在 bitwarden.com 网页版密码库修改主密码。您现在要访问这个网站吗?" }, "twoStepLoginConfirmation": { - "message": "两步登录要求您从其他设备(例如安全钥匙、验证器应用、短信、电话或者电子邮件)来验证您的登录,这能使您的账户更加安全。两步登录需要在 bitwarden.com 网页版密码库中设置。现在访问此网站吗?" + "message": "两步登录要求您从其他设备(例如安全钥匙、验证器 App、短信、电话或者电子邮件)来验证您的登录,这能使您的账户更加安全。两步登录需要在 bitwarden.com 网页版密码库中设置。现在访问此网站吗?" }, "editedFolder": { "message": "文件夹已保存" }, "deleteFolderConfirmation": { - "message": "您确定要删除此文件夹吗?" + "message": "确定要删除此文件夹吗?" }, "deletedFolder": { "message": "文件夹已删除" @@ -565,13 +622,13 @@ "message": "覆盖密码" }, "overwritePasswordConfirmation": { - "message": "您确定要覆盖当前密码吗?" + "message": "确定要覆盖当前密码吗?" }, "overwriteUsername": { "message": "覆盖用户名" }, "overwriteUsernameConfirmation": { - "message": "您确定要覆盖当前用户名吗?" + "message": "确定要覆盖当前用户名吗?" }, "searchFolder": { "message": "搜索文件夹" @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "在密码库中找不到匹配项目时询问添加一个。" }, + "addLoginNotificationDescAlt": { + "message": "如果在密码库中找不到项目,询问添加一个。适用于所有已登录的账户。" + }, "showCardsCurrentTab": { "message": "在标签页上显示支付卡" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "在网站上检测到更改时询问更新登录密码。" }, + "changedPasswordNotificationDescAlt": { + "message": "当在网站上检测到更改时,询问更新登录项目的密码。适用于所有已登录的账户。" + }, + "enableUsePasskeys": { + "message": "询问保存和使用通行密钥" + }, + "usePasskeysDesc": { + "message": "询问保存新的通行密钥或使用存储在密码库中的通行密钥登录。适用于所有已登录的账户。" + }, "notificationChangeDesc": { "message": "是否要在 Bitwarden 中更新此密码?" }, "notificationChangeSave": { "message": "更新" }, + "notificationUnlockDesc": { + "message": "解锁 Bitwarden 密码库以完成自动填充请求。" + }, + "notificationUnlock": { + "message": "解锁​​​​" + }, "enableContextMenuItem": { "message": "显示上下文菜单选项" }, "contextMenuItemDesc": { - "message": "使用辅助点击来访问密码生成和匹配的网站登录项目。 " + "message": "使用辅助点击来访问密码生成和匹配的网站登录项目。" + }, + "contextMenuItemDescAlt": { + "message": "使用辅助点击来访问密码生成和匹配的网站登录项目。适用于所有已登录的账户。" }, "defaultUriMatchDetection": { "message": "默认 URI 匹配检测", @@ -649,6 +727,9 @@ "themeDesc": { "message": "更改本应用程序的颜色主题。" }, + "themeDescAlt": { + "message": "更改应用程序的颜色主题。适用于所有已登录的账户。" + }, "dark": { "message": "深色", "description": "Dark color" @@ -684,7 +765,7 @@ "message": "每个 Bitwarden 用户账户的账户加密密钥都是唯一的,因此您无法将加密的导出导入到另一个账户。" }, "exportMasterPassword": { - "message": "输入主密码来导出你的密码库。" + "message": "输入您的主密码以导出你的密码库数据。" }, "shared": { "message": "已共享" @@ -736,13 +817,13 @@ "message": "删除附件" }, "deleteAttachmentConfirmation": { - "message": "您确定要删除此附件吗?" + "message": "确定要删除此附件吗?" }, "deletedAttachment": { "message": "附件已删除" }, "newAttachment": { - "message": "添加新的附件" + "message": "添加新附件" }, "noAttachments": { "message": "没有附件。" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "功能不可用" }, - "updateKey": { - "message": "在您更新加密密钥前,您不能使用此功能。" + "encryptionKeyMigrationRequired": { + "message": "需要迁移加密密钥。请登录网页版密码库来更新您的加密密钥。" }, "premiumMembership": { "message": "高级会员" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "1 GB 文件附件加密存储。" }, - "ppremiumSignUpTwoStep": { - "message": "额外的两步登录选项,如 YubiKey、FIDO U2F 和 Duo。" + "premiumSignUpTwoStepOptions": { + "message": "专有的两步登录选项,如 YubiKey 和 Duo。" }, "ppremiumSignUpReports": { "message": "密码健康、账户体检以及数据泄露报告,保障您的密码库安全。" @@ -841,10 +922,10 @@ "message": "使用此功能需要高级会员资格。" }, "enterVerificationCodeApp": { - "message": "请输入您的验证器应用中的 6 位验证码。" + "message": "请输入您的验证器 App 中的 6 位数验证码。" }, "enterVerificationCodeEmail": { - "message": "请输入通过电子邮件发送给 $EMAIL$ 的 6 位验证码。", + "message": "请输入发送给电子邮件 $EMAIL$ 的 6 位数验证码。", "placeholders": { "email": { "content": "$1", @@ -871,10 +952,10 @@ "message": "使用其他两步登录方式" }, "insertYubiKey": { - "message": "将您的 YubiKey 插入计算机的 USB 端口,然后按下按钮。" + "message": "将您的 YubiKey 插入计算机的 USB 端口,然后触摸其按钮。" }, "insertU2f": { - "message": "将您的安全钥匙插入计算机的 USB 端口。如果它有按钮,请按下它。" + "message": "将您的安全钥匙插入计算机的 USB 端口。如果它有按钮,请触摸它。" }, "webAuthnNewTab": { "message": "要开始 WebAuthn 2FA 验证,请点击下面的按钮打开一个新标签页,并按照新标签页中提供的说明操作。" @@ -892,7 +973,7 @@ "message": "此账户已设置两步登录,但此浏览器不支持任何已配置的两步登录提供程序。" }, "noTwoStepProviders2": { - "message": "请使用支持的网页浏览器(例如 Chrome),和/或添加其他对跨浏览器支持更广泛的提供程序(例如验证器应用)。" + "message": "请使用支持的网页浏览器(例如 Chrome)和/或添加其他支持更广泛的提供程序(例如验证器 App)。" }, "twoStepOptions": { "message": "两步登录选项" @@ -904,10 +985,10 @@ "message": "恢复代码" }, "authenticatorAppTitle": { - "message": "验证器应用" + "message": "验证器 App" }, "authenticatorAppDesc": { - "message": "使用验证器应用(例如 Authy 或 Google Authenticator)来生成基于时间的验证码。", + "message": "使用验证器 App(例如 Authy 或 Google Authenticator)来生成基于时间的验证码。", "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." }, "yubiKeyTitle": { @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "环境 URL 已保存" }, + "showAutoFillMenuOnFormFields": { + "message": "在表单字段上显示自动填充菜单", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "适用于所有已登录的账户。" + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "关闭您浏览器自带的密码管理器设置以避免冲突。" + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "编辑浏览器设置。" + }, + "autofillOverlayVisibilityOff": { + "message": "关闭", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "选中字段时(焦点上)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "选中自动填充图标时", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "页面加载时自动填充" }, @@ -1027,7 +1133,7 @@ "message": "值" }, "newCustomField": { - "message": "新建自定义字段" + "message": "新增自定义字段" }, "dragToSort": { "message": "拖动排序" @@ -1050,7 +1156,7 @@ "description": "This describes a value that is 'linked' (tied) to another value." }, "popup2faCloseMessage": { - "message": "如果您点击弹窗外的任何区域,将导致弹窗关闭。您想在新窗口中打开此弹窗,以便它不会关闭吗?" + "message": "如果您点击弹窗外的区域以检查您的验证码电子邮件,将导致弹窗关闭。您想在新窗口中打开此弹窗,以便它不会关闭吗?" }, "popupU2fCloseMessage": { "message": "此浏览器无法处理此弹出窗口中的 U2F 请求。您想要在新窗口中打开此弹出窗口吗?" @@ -1059,7 +1165,10 @@ "message": "显示网站图标" }, "faviconDesc": { - "message": "在每个登录旁显示一个可识别的图像。" + "message": "在每个登录项目旁边显示一个可识别的图像。" + }, + "faviconDescAlt": { + "message": "在每个登录的旁边显示一个可识别的图像。适用于所有已登录的账户。" }, "enableBadgeCounter": { "message": "显示角标计数器" @@ -1083,7 +1192,7 @@ "message": "过期年份" }, "expiration": { - "message": "过期日" + "message": "有效期" }, "january": { "message": "一月" @@ -1173,7 +1282,7 @@ "message": "许可证号码" }, "email": { - "message": "Email" + "message": "电子邮件" }, "phone": { "message": "电话" @@ -1342,7 +1451,7 @@ "description": "ex. Date this password was updated" }, "neverLockWarning": { - "message": "您确定要使用「从不」选项吗?将锁定选项设置为「从不」会将密码库的加密密钥存储在您的设备上。如果使用此选项,您必须确保您的设备安全。" + "message": "确定要使用「从不」选项吗?将锁定选项设置为「从不」会将密码库的加密密钥存储在您的设备上。如果使用此选项,您必须确保您的设备安全。" }, "noOrganizationsList": { "message": "您没有加入任何组织。组织允许您与其他用户安全地共享项目。" @@ -1382,7 +1491,7 @@ "message": "使用 PIN 码解锁" }, "setYourPinCode": { - "message": "设置您用来解锁 Bitwarden 的 PIN 码。您的 PIN 设置将在您退出账户时被重置。" + "message": "设定您用来解锁 Bitwarden 的 PIN 码。您的 PIN 设置将在您完全注销此应用程序时被重置。" }, "pinRequired": { "message": "需要 PIN 码。" @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "无效 PIN 码。" }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "无效的 PIN 输入尝试次数过多,正在注销。" + }, "unlockWithBiometrics": { "message": "使用生物识别解锁" }, @@ -1432,7 +1544,7 @@ "message": "永久删除项目" }, "permanentlyDeleteItemConfirmation": { - "message": "您确定要永久删除此项目吗?" + "message": "确定要永久删除此项目吗?" }, "permanentlyDeletedItem": { "message": "项目已永久删除" @@ -1440,14 +1552,11 @@ "restoreItem": { "message": "恢复项目" }, - "restoreItemConfirmation": { - "message": "您确定要恢复此项目吗?" - }, "restoredItem": { "message": "项目已恢复" }, "vaultTimeoutLogOutConfirmation": { - "message": "超时后退出账户将解除对密码库的所有访问权限,并需要进行在线身份验证。确定使用此设置吗?" + "message": "超时后注销账户将解除对密码库的所有访问权限,并需要进行在线身份验证。确定使用此设置吗?" }, "vaultTimeoutLogOutConfirmationTitle": { "message": "超时动作确认" @@ -1599,11 +1708,17 @@ "biometricsNotSupportedDesc": { "message": "此设备不支持浏览器生物识别。" }, + "biometricsFailedTitle": { + "message": "生物识别失败" + }, + "biometricsFailedDesc": { + "message": "生物识别无法完成,请尝试使用主密码或注销。如果仍无法解决,请联系 Bitwarden 支持。" + }, "nativeMessaginPermissionErrorTitle": { "message": "未提供权限" }, "nativeMessaginPermissionErrorDesc": { - "message": "没有与 Bitwarden 桌面应用程序通信的权限,我们无法在浏览器扩展中提供生物识别。请再试一次。" + "message": "没有与 Bitwarden 桌面应用程序通信的权限,我们无法在浏览器扩展中提供生物识别。请重试。" }, "nativeMessaginPermissionSidebarTitle": { "message": "权限请求错误" @@ -1612,23 +1727,29 @@ "message": "此操作不能在侧边栏中完成,请在弹出窗口或弹出对话框中重试。" }, "personalOwnershipSubmitError": { - "message": "由于某个企业策略,您被限制为保存项目到您的个人密码库。将所有权选项更改为组织,然后从可用的集合中选择。" + "message": "由于某个企业策略,您不能将项目保存到您的个人密码库。将所有权选项更改为组织,并从可用的集合中选择。" }, "personalOwnershipPolicyInEffect": { "message": "一个组织策略正影响您的所有权选项。" }, + "personalOwnershipPolicyInEffectImports": { + "message": "组织策略已阻止将项目导入您的个人密码库。" + }, "excludedDomains": { "message": "排除域名" }, "excludedDomainsDesc": { "message": "Bitwarden 将不会询问是否为这些域名保存登录信息。您必须刷新页面才能使更改生效。" }, + "excludedDomainsDescAlt": { + "message": "Bitwarden 不会询问保存所有已登录的账户的这些域名的登录信息。必须刷新页面才能使更改生效。" + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ 不是一个有效的域名", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1784,14 +1905,14 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "新建密码" + "message": "新密码" }, "sendDisabled": { "message": "Send 已禁用", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { - "message": "由于企业策略,您只能删除现有的 Send。", + "message": "由于某个企业策略,您只能删除现有的 Send。", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { @@ -1848,7 +1969,7 @@ "message": "一个或多个组织策略正在影响您的 Send 选项。" }, "passwordPrompt": { - "message": "重新询问主密码" + "message": "主密码重新提示" }, "passwordConfirmation": { "message": "确认主密码" @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "选择文件夹..." }, - "ssoCompleteRegistration": { - "message": "要完成 SSO 登陆配置,请设置一个主密码以访问和保护您的密码库。" + "noFoldersFound": { + "message": "找不到文件夹", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "您的组织权限已更新,要求您设置主密码。", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "您的组织要求您设置主密码。", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "需要验证", + "description": "Default title for the user verification dialog." }, "hours": { "message": "小时" @@ -1965,7 +2099,7 @@ "message": "主密码已移除" }, "leaveOrganizationConfirmation": { - "message": "您确定要退出该组织吗?" + "message": "确定要退出该组织吗?" }, "leftOrganization": { "message": "您已经退出该组织。" @@ -1974,13 +2108,13 @@ "message": "字符计数开关" }, "sessionTimeout": { - "message": "您的会话已超时。请返回并尝试重新登录。" + "message": "您的会话已超时。请返回然后尝试重新登录。" }, "exportingPersonalVaultTitle": { "message": "导出个人密码库" }, - "exportingPersonalVaultDescription": { - "message": "仅会导出与 $EMAIL$ 关联的个人密码库项目。组织密码库的项目不会导出。", + "exportingIndividualVaultDescription": { + "message": "仅会导出与 $EMAIL$ 关联的个人密码库项目,不包括组织密码库项目。仅会导出密码库项目信息,不包括关联的附件。", "placeholders": { "email": { "content": "$1", @@ -2080,7 +2214,7 @@ "serverVersion": { "message": "服务器版本" }, - "selfHosted": { + "selfHostedServer": { "message": "自托管" }, "thirdParty": { @@ -2120,10 +2254,10 @@ "message": "记住电子邮件地址" }, "loginWithDevice": { - "message": "设备登录" + "message": "使用设备登录" }, "loginWithDeviceEnabledInfo": { - "message": "设备登录必须在 Bitwarden 应用程序的设置中设启用。需要其他选项吗?" + "message": "设备登录必须在 Bitwarden 应用程序的设置中启用。需要其他登录选项吗?" }, "fingerprintPhraseHeader": { "message": "指纹短语" @@ -2140,7 +2274,7 @@ "notificationSentDevice": { "message": "通知已发送到您的设备。" }, - "logInInitiated": { + "loginInitiated": { "message": "登录已发起" }, "exposedMasterPassword": { @@ -2180,7 +2314,7 @@ "message": "如何自动填充" }, "autofillSelectInfoWithCommand": { - "message": "从此页面选择一个项目,或使用快捷方式:$COMMAND$", + "message": "从此界面选择一个项目,使用快捷键 $COMMAND$,或探索设置中的其他选项。", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "从此页面选择一个项目,或者在设置中设置一个快捷方式。" + "message": "从此界面选择一个项目,或探索设置中的其他选项。" }, "gotIt": { "message": "明白了" @@ -2201,10 +2335,10 @@ "message": "自动填充键盘快捷键" }, "autofillShortcutNotSet": { - "message": "未设置自动填充快捷方式。请在浏览器设置中更改此设置。" + "message": "未设置自动填充快捷键。可在浏览器的设置中更改它。" }, "autofillShortcutText": { - "message": "自动填充快捷方式为: $COMMAND$。在浏览器设置中更改此项。", + "message": "自动填充快捷键为:$COMMAND$。可在浏览器的设置中更改它。", "placeholders": { "command": { "content": "$1", @@ -2221,20 +2355,37 @@ } } }, - "region": { - "message": "区域" + "loggingInOn": { + "message": "登录到" }, "opensInANewWindow": { "message": "在新窗口中打开" }, + "deviceApprovalRequired": { + "message": "需要设备批准。请在下面选择一个批准选项:" + }, + "rememberThisDevice": { + "message": "记住此设备" + }, + "uncheckIfPublicDevice": { + "message": "若使用公共设备,请取消勾选" + }, + "approveFromYourOtherDevice": { + "message": "从您的其他设备批准" + }, + "requestAdminApproval": { + "message": "请求管理员批准" + }, + "approveWithMasterPassword": { + "message": "使用主密码批准" + }, + "ssoIdentifierRequired": { + "message": "必须填写组织 SSO 标识符。" + }, "eu": { "message": "欧盟", "description": "European Union" }, - "us": { - "message": "美国", - "description": "United States" - }, "accessDenied": { "message": "访问被拒绝。您没有权限查看此页面。" }, @@ -2243,5 +2394,619 @@ }, "display": { "message": "显示" + }, + "accountSuccessfullyCreated": { + "message": "账户已成功创建!" + }, + "adminApprovalRequested": { + "message": "已请求管理员批准" + }, + "adminApprovalRequestSentToAdmins": { + "message": "您的请求已发送给您的管理员。" + }, + "youWillBeNotifiedOnceApproved": { + "message": "批准后,您将收到通知。" + }, + "troubleLoggingIn": { + "message": "登录遇到问题?" + }, + "loginApproved": { + "message": "登录已批准" + }, + "userEmailMissing": { + "message": "缺少用户电子邮件" + }, + "deviceTrusted": { + "message": "设备已信任" + }, + "inputRequired": { + "message": "必须输入内容。" + }, + "required": { + "message": "必填" + }, + "search": { + "message": "搜索" + }, + "inputMinLength": { + "message": "至少输入 $COUNT$ 个字符。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "输入长度不能超过 $COUNT$ 个字符。", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "以下字符不被允许:$CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "输入的值不能低于 $MIN$。", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "输入的值不能超过 $MAX$。", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "一个或多个电子邮件地址无效" + }, + "inputTrimValidator": { + "message": "输入不能只包含空格。", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "输入的不是电子邮件地址。" + }, + "fieldsNeedAttention": { + "message": "上面的 $COUNT$ 个字段需要您注意。", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- 选择 --" + }, + "multiSelectPlaceholder": { + "message": "-- 输入以筛选 --" + }, + "multiSelectLoading": { + "message": "正在获取选项..." + }, + "multiSelectNotFound": { + "message": "未找到任何条目" + }, + "multiSelectClearAll": { + "message": "清除全部" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "子菜单" + }, + "toggleCollapse": { + "message": "切换折叠", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "导入您的数据到 Bitwarden 吗?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "保护您的 LastPass 数据并导入到 Bitwarden 吗?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "保存为未加密的文件", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "导入到 Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "导入中...", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "数据导入成功!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "导入时出错。检查控制台以获取详细信息。", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "导入过程中遇到网络错误。", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "别名域" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "具有主密码重新提示的项目无法在页面加载时自动填充。页面加载时的自动填充功能已关闭。", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "页面加载时自动填充设置为默认设置。", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "关闭主密码重新提示以编辑此字段", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "跳转到正文" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden 自动填充菜单按钮", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "切换 Bitwarden 自动填充菜单", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden 自动填充菜单", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "解锁您的账户以查看匹配的登录", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "解锁账户", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "填写凭据", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "部分用户名", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "没有可显示的项目", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "新增项目", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "添加新的密码库项目", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden 自动填充菜单可用。按向下箭头键进行选择。", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "开启" + }, + "ignore": { + "message": "忽略" + }, + "importData": { + "message": "导入数据", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "导入出错" + }, + "importErrorDesc": { + "message": "您尝试导入的数据有问题。请解决如下列出的源文件中的错误,然后重试。" + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "解决下面的错误,然后重试。" + }, + "description": { + "message": "描述" + }, + "importSuccess": { + "message": "数据导入成功" + }, + "importSuccessNumberOfItems": { + "message": "一共导入了 $AMOUNT$ 个项目。", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "再试一次" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "此操作需要验证。设置一个 PIN 码以继续。" + }, + "setPin": { + "message": "设置 PIN 码" + }, + "verifyWithBiometrics": { + "message": "使用生物识别验证" + }, + "awaitingConfirmation": { + "message": "等待确认" + }, + "couldNotCompleteBiometrics": { + "message": "无法完成生物识别。" + }, + "needADifferentMethod": { + "message": "需要一个不同的方法?" + }, + "useMasterPassword": { + "message": "使用主密码" + }, + "usePin": { + "message": "使用 PIN 码" + }, + "useBiometrics": { + "message": "使用生物识别" + }, + "enterVerificationCodeSentToEmail": { + "message": "输入发送到您电子邮箱的验证码。" + }, + "resendCode": { + "message": "重新发送代码" + }, + "total": { + "message": "总计" + }, + "importWarning": { + "message": "您正在将数据导入到 $ORGANIZATION$。您的数据可能会与此组织中的成员共享。要继续吗?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "启动 DUO 并按照步骤完成登录。" + }, + "duoRequiredForAccount": { + "message": "您的账户要求使用 Duo 两步登录。" + }, + "popoutTheExtensionToCompleteLogin": { + "message": "弹出扩展以完成登录。" + }, + "popoutExtension": { + "message": "弹出扩展" + }, + "launchDuo": { + "message": "启动 Duo" + }, + "importFormatError": { + "message": "数据格式不正确。请检查您的导入文件然后重试。" + }, + "importNothingError": { + "message": "没有导入任何内容。" + }, + "importEncKeyError": { + "message": "解密导出的文件时出错。您的加密密钥与导出数据时使用的加密密钥不匹配。" + }, + "invalidFilePassword": { + "message": "无效的文件密码,请使用您创建导出文件时输入的密码。" + }, + "importDestination": { + "message": "导入目的地" + }, + "learnAboutImportOptions": { + "message": "了解您的导入选项" + }, + "selectImportFolder": { + "message": "选择一个文件夹" + }, + "selectImportCollection": { + "message": "选择一个集合" + }, + "importTargetHint": { + "message": "如果您希望将导入的文件内容移动到某个 $DESTINATION$,请选择此选项", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "文件包含未分配项目。" + }, + "selectFormat": { + "message": "选择导入文件的格式" + }, + "selectImportFile": { + "message": "选择要导入的文件" + }, + "chooseFile": { + "message": "选择文件" + }, + "noFileChosen": { + "message": "未选择文件" + }, + "orCopyPasteFileContents": { + "message": "或复制/粘贴要导入的文件内容" + }, + "instructionsFor": { + "message": "$NAME$ 说明", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "确认密码库导入" + }, + "confirmVaultImportDesc": { + "message": "此文件受密码保护。请输入文件密码以导入数据。" + }, + "confirmFilePassword": { + "message": "确认文件密码" + }, + "typePasskey": { + "message": "通行密钥" + }, + "passkeyNotCopied": { + "message": "通行密钥不会被复制" + }, + "passkeyNotCopiedAlert": { + "message": "通行密钥将不会被复制到克隆的项目。要继续克隆这个项目吗?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "启动站点需要验证。对于没有主密码的账户,此功能尚未实现。" + }, + "logInWithPasskey": { + "message": "使用通行密钥登录吗?" + }, + "passkeyAlreadyExists": { + "message": "此应用程序已存在一个通行密钥。" + }, + "noPasskeysFoundForThisApplication": { + "message": "没有找到此应用程序的通行密钥。" + }, + "noMatchingPasskeyLogin": { + "message": "不存在匹配此站点的登录项目。" + }, + "confirm": { + "message": "确认" + }, + "savePasskey": { + "message": "保存通行密钥" + }, + "savePasskeyNewLogin": { + "message": "作为新的登录项目保存通行密钥" + }, + "choosePasskey": { + "message": "选择一个用于保存此通行密钥的登录项目" + }, + "passkeyItem": { + "message": "通行密钥项目" + }, + "overwritePasskey": { + "message": "覆盖通行密钥吗?" + }, + "overwritePasskeyAlert": { + "message": "此项目已包含一个通行密钥。确定要覆盖当前的通行密钥吗?" + }, + "featureNotSupported": { + "message": "功能尚不被支持" + }, + "yourPasskeyIsLocked": { + "message": "使用通行密钥需要身份验证。请验证身份以继续。" + }, + "multifactorAuthenticationCancelled": { + "message": "多重身份验证已取消" + }, + "noLastPassDataFound": { + "message": "未找到 LastPass 数据" + }, + "incorrectUsernameOrPassword": { + "message": "用户名或密码不正确" + }, + "incorrectPassword": { + "message": "密码不正确" + }, + "incorrectCode": { + "message": "验证码不正确" + }, + "incorrectPin": { + "message": "PIN 码不正确" + }, + "multifactorAuthenticationFailed": { + "message": "多重身份验证失败" + }, + "includeSharedFolders": { + "message": "包含共享的文件夹" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "正在导入您的账户..." + }, + "lastPassMFARequired": { + "message": "需要 LastPass 多重身份验证" + }, + "lastPassMFADesc": { + "message": "输入来自身份验证 App 的一次性通行代码" + }, + "lastPassOOBDesc": { + "message": "在您的身份验证 App 中批准登录请求或输入一次性通行代码。" + }, + "passcode": { + "message": "通行代码" + }, + "lastPassMasterPassword": { + "message": "LastPass 主密码" + }, + "lastPassAuthRequired": { + "message": "需要 LastPass 身份验证" + }, + "awaitingSSO": { + "message": "等待 SSO 身份验证" + }, + "awaitingSSODesc": { + "message": "请使用您的公司凭据继续登录。" + }, + "seeDetailedInstructions": { + "message": "请参阅我们的帮助网站上的详细说明:", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "从 LastPass 直接导入" + }, + "importFromCSV": { + "message": "从 CSV 导入" + }, + "lastPassTryAgainCheckEmail": { + "message": "请重试或查找来自 LastPass 的电子邮件以验证您的身份。" + }, + "collection": { + "message": "集合" + }, + "lastPassYubikeyDesc": { + "message": "将与您的 LastPass 账户关联的 YubiKey 插入计算机的 USB 端口,然后触摸其按钮。" + }, + "switchAccount": { + "message": "切换账户" + }, + "switchAccounts": { + "message": "切换账户" + }, + "switchToAccount": { + "message": "切换到账户" + }, + "activeAccount": { + "message": "活动账户" + }, + "availableAccounts": { + "message": "可用账户" + }, + "accountLimitReached": { + "message": "已达到账户上限。请注销一个账户后再添加其他账户。" + }, + "active": { + "message": "活动的" + }, + "locked": { + "message": "已锁定" + }, + "unlocked": { + "message": "已解锁" + }, + "server": { + "message": "服务器" + }, + "hostedAt": { + "message": "托管于" + }, + "useDeviceOrHardwareKey": { + "message": "使用您的设备或实体钥匙" + }, + "justOnce": { + "message": "仅此一次" + }, + "alwaysForThisSite": { + "message": "总是为此站点" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ 已添加到排除域名列表。", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "常规格式", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "将 Bitwarden 设置为您的默认密码管理器吗?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "忽略此选项可能会导致 Bitwarden 自动填充菜单与浏览器自带功能产生冲突。", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "将 Bitwarden 设置为您的默认密码管理器", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "无法将 Bitwarden 设置为默认密码管理器", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "您必须授予 Bitwarden 浏览器隐私权限才能将其设置为默认密码管理器。", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "设为默认", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "凭据保存成功!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "凭据更新成功!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "保存凭据时出错。检查控制台以获取详细信息。", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "移除通行密钥" + }, + "passkeyRemoved": { + "message": "通行密钥已移除" + }, + "unassignedItemsBanner": { + "message": "注意:未分配的组织项目在「所有密码库」视图中不再可见,只能通过管理控制台访问。通过管理控制台将这些项目分配给集合以使其可见。" } } diff --git a/apps/browser/src/_locales/zh_TW/messages.json b/apps/browser/src/_locales/zh_TW/messages.json index e2070bdd31..66d9f7ce62 100644 --- a/apps/browser/src/_locales/zh_TW/messages.json +++ b/apps/browser/src/_locales/zh_TW/messages.json @@ -91,6 +91,15 @@ "autoFill": { "message": "自動填入" }, + "autoFillLogin": { + "message": "自動填入登入資訊" + }, + "autoFillCard": { + "message": "自動填入支付卡" + }, + "autoFillIdentity": { + "message": "自動填入身分資訊" + }, "generatePasswordCopied": { "message": "產生及複製密碼" }, @@ -100,6 +109,21 @@ "noMatchingLogins": { "message": "無符合的登入資料" }, + "noCards": { + "message": "無支付卡" + }, + "noIdentities": { + "message": "無身分資訊" + }, + "addLoginMenu": { + "message": "新增登入資訊" + }, + "addCardMenu": { + "message": "新增支付卡" + }, + "addIdentityMenu": { + "message": "新增身分資訊" + }, "unlockVaultMenu": { "message": "解鎖您的密碼庫" }, @@ -244,6 +268,9 @@ "length": { "message": "長度" }, + "passwordMinLength": { + "message": "最小密碼長度" + }, "uppercase": { "message": "大寫 (A-Z)" }, @@ -299,6 +326,9 @@ "password": { "message": "密碼" }, + "totp": { + "message": "程式產生驗證碼" + }, "passphrase": { "message": "密碼短語" }, @@ -338,6 +368,12 @@ "other": { "message": "其他" }, + "unlockMethodNeededToChangeTimeoutActionDesc": { + "message": "設定一個解鎖方式來變更您的密碼庫逾時動作。" + }, + "unlockMethodNeeded": { + "message": "設定中設定解鎖" + }, "rateExtension": { "message": "為本套件評分" }, @@ -378,6 +414,9 @@ "lockNow": { "message": "立即鎖定" }, + "lockAll": { + "message": "鎖定全部" + }, "immediately": { "message": "立即" }, @@ -454,6 +493,12 @@ "newAccountCreated": { "message": "帳戶已建立!現在可以登入了。" }, + "youSuccessfullyLoggedIn": { + "message": "登入成功" + }, + "youMayCloseThisWindow": { + "message": "您可以關閉此視窗" + }, "masterPassSent": { "message": "已寄出包含您主密碼提示的電子郵件。" }, @@ -476,6 +521,18 @@ "autofillError": { "message": "無法在此頁面自動填入所選項目。請手動複製貼上。" }, + "totpCaptureError": { + "message": "無法掃描此網頁的二維碼" + }, + "totpCaptureSuccess": { + "message": "已新增驗證器金鑰。" + }, + "totpCapture": { + "message": "從目前網頁掃描驗證器二維碼" + }, + "copyTOTP": { + "message": "複製驗證器金鑰 (TOTP)" + }, "loggedOut": { "message": "已登出" }, @@ -507,7 +564,7 @@ "message": "您可以在 bitwarden.com 網頁版密碼庫變更主密碼。現在要前往嗎?" }, "twoStepLoginConfirmation": { - "message": "兩步驟登入需要您從其他裝置(例如安全金鑰、驗證器程式、SMS、手機或電子郵件)來驗證您的登入,這使您的帳戶更加安全。兩步驟登入可以在 bitwarden.com 網頁版密碼庫啟用。現在要前往嗎?" + "message": "兩步驟登入需要您從其他裝置(例如安全鑰匙、驗證器程式、SMS、手機或電子郵件)來驗證您的登入,這使您的帳戶更加安全。兩步驟登入可以在 bitwarden.com 網頁版密碼庫啟用。現在要前往嗎?" }, "editedFolder": { "message": "資料夾已儲存" @@ -592,6 +649,9 @@ "addLoginNotificationDesc": { "message": "在密碼庫中找不到相符的項目時詢問是否新增項目。" }, + "addLoginNotificationDescAlt": { + "message": "如果在您的密碼庫中找不到項目,則詢問是否新增項目。適用於所有已登入的帳戶。" + }, "showCardsCurrentTab": { "message": "於分頁頁面顯示支付卡" }, @@ -624,17 +684,35 @@ "changedPasswordNotificationDesc": { "message": "偵測到網站密碼變更時,詢問是否更新登入資料密碼。" }, + "changedPasswordNotificationDescAlt": { + "message": "當偵測到網站上的變更時,詢問是否更新登入的密碼。適用於所有已登入的帳戶。" + }, + "enableUsePasskeys": { + "message": "詢問是否儲存並使用密碼金鑰" + }, + "usePasskeysDesc": { + "message": "詢問是否儲存新的密碼金鑰或使用儲存在您的密碼庫中的密碼金鑰登入。適用於所有已登入的帳戶。" + }, "notificationChangeDesc": { "message": "是否要在 Bitwarden 中更新此密碼?" }, "notificationChangeSave": { "message": "更新" }, + "notificationUnlockDesc": { + "message": "解鎖您的 Bitwarden 密碼庫以完成自動填入請求。" + }, + "notificationUnlock": { + "message": "解鎖" + }, "enableContextMenuItem": { "message": "顯示內容選單選項" }, "contextMenuItemDesc": { - "message": "使用輔助點選(右鍵選單)來存取密碼產生和匹配的網站登入項目。 " + "message": "使用輔助點選(右鍵選單)來存取密碼產生和符合的網站登入項目。 " + }, + "contextMenuItemDescAlt": { + "message": "使用右鍵點選來存取密碼產生和網站的符合登入資訊。適用於所有已登入的帳戶。" }, "defaultUriMatchDetection": { "message": "預設的 URI 一致性偵測", @@ -649,6 +727,9 @@ "themeDesc": { "message": "變更應用程式的主題色彩。" }, + "themeDescAlt": { + "message": "變更應用程式的主題色彩。適用於所有已登入的帳戶。" + }, "dark": { "message": "深色", "description": "Dark color" @@ -762,8 +843,8 @@ "featureUnavailable": { "message": "功能不可用" }, - "updateKey": { - "message": "更新加密金鑰前不能使用此功能。" + "encryptionKeyMigrationRequired": { + "message": "需要遷移加密金鑰。請透過網頁版密碼庫登入以更新您的加密金鑰。" }, "premiumMembership": { "message": "進階會員" @@ -786,8 +867,8 @@ "ppremiumSignUpStorage": { "message": "用於檔案附件的 1 GB 加密儲存空間。" }, - "ppremiumSignUpTwoStep": { - "message": "YubiKey、FIDO U2F 和 Duo 等額外的兩步驟登入選項。" + "premiumSignUpTwoStepOptions": { + "message": "專有的兩步驟登入選項,例如 YubiKey 和 Duo。" }, "ppremiumSignUpReports": { "message": "密碼健康度檢查、提供帳戶體檢以及資料外洩報告,以保障您的密碼庫安全。" @@ -874,7 +955,7 @@ "message": "將您的 YubiKey 插入電腦的 USB 連接埠,然後按一下它的按鈕。" }, "insertU2f": { - "message": "將您的安全金鑰插入電腦的 USB 連接埠,然後按一下它的按鈕(如有的話)。" + "message": "將您的安全鑰匙插入電腦的 USB 連接埠,然後觸摸其按鈕(如有的話)。" }, "webAuthnNewTab": { "message": "要開始 WebAuthn 2FA 驗證,請點選下面的按鈕開啟一個新分頁,並依照新分頁中提供的說明操作。" @@ -911,24 +992,24 @@ "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." }, "yubiKeyTitle": { - "message": "YubiKey OTP 安全金鑰" + "message": "YubiKey OTP 安全鑰匙" }, "yubiKeyDesc": { "message": "使用 YubiKey 存取您的帳戶。支援 YubiKey 4、4 Nano、4C、以及 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." }, "webAuthnTitle": { "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "使用任何具有 WebAuthn 功能的安全金鑰來存取您的帳戶。" + "message": "使用任何具有 WebAuthn 功能的安全鑰匙來存取您的帳戶。" }, "emailTitle": { "message": "電子郵件" @@ -969,6 +1050,31 @@ "environmentSaved": { "message": "環境 URL 已儲存" }, + "showAutoFillMenuOnFormFields": { + "message": "在表單欄位上顯示自動填入選單", + "description": "Represents the message for allowing the user to enable the auto-fill overlay" + }, + "showAutoFillMenuOnFormFieldsDescAlt": { + "message": "適用於所有已登入的帳戶。" + }, + "turnOffBrowserBuiltInPasswordManagerSettings": { + "message": "關閉你的瀏覽器內建密碼管理器設定以避免衝突。" + }, + "turnOffBrowserBuiltInPasswordManagerSettingsLink": { + "message": "編輯瀏覽器設定" + }, + "autofillOverlayVisibilityOff": { + "message": "關閉", + "description": "Overlay setting select option for disabling autofill overlay" + }, + "autofillOverlayVisibilityOnFieldFocus": { + "message": "當欄位被選取時(在焦點上)", + "description": "Overlay appearance select option for showing the field on focus of the input element" + }, + "autofillOverlayVisibilityOnButtonClick": { + "message": "當選取自動填入圖示時", + "description": "Overlay appearance select option for showing the field on click of the overlay icon" + }, "enableAutoFillOnPageLoad": { "message": "頁面載入時自動填入" }, @@ -976,7 +1082,7 @@ "message": "網頁載入時如果偵測到登入表單,則執行自動填入。" }, "experimentalFeature": { - "message": "被入侵或不可信任的網站可以利用自動填入功能在網頁載入時竊取資訊。" + "message": "被入侵或不可信任的網站可不當利用頁面載入時的自動填入功能。" }, "learnMoreAboutAutofill": { "message": "進一步瞭解「自動填入」功能" @@ -1061,6 +1167,9 @@ "faviconDesc": { "message": "在每個登入資料旁顯示一個可辨識的圖片。" }, + "faviconDescAlt": { + "message": "在每次登入時旁邊顯示可識別的圖片。適用於所有已登入的帳號。" + }, "enableBadgeCounter": { "message": "顯示圖示計數器" }, @@ -1255,10 +1364,10 @@ "description": "To clear something out. example: To clear browser history." }, "checkPassword": { - "message": "檢查密碼是否已外洩。" + "message": "檢查密碼是否已暴露。" }, "passwordExposed": { - "message": "此密碼已外洩了 $VALUE$ 次,應立即變更密碼。", + "message": "此密碼在資料外洩事件中被暴露了 $VALUE$ 次,應立即變更它。", "placeholders": { "value": { "content": "$1", @@ -1390,6 +1499,9 @@ "invalidPin": { "message": "無效的 PIN 碼。" }, + "tooManyInvalidPinEntryAttemptsLoggingOut": { + "message": "輸入太多無效 PIN 碼。 登出。" + }, "unlockWithBiometrics": { "message": "使用生物特徵辨識解鎖" }, @@ -1406,10 +1518,10 @@ "message": "您必須至少選擇一個集合。" }, "cloneItem": { - "message": "複製項目" + "message": "克隆項目" }, "clone": { - "message": "複製" + "message": "克隆" }, "passwordGeneratorPolicyInEffect": { "message": "一個或多個組織原則正影響密碼產生器設定。" @@ -1440,9 +1552,6 @@ "restoreItem": { "message": "還原項目" }, - "restoreItemConfirmation": { - "message": "您確定要還原此項目嗎?" - }, "restoredItem": { "message": "項目已還原" }, @@ -1465,13 +1574,13 @@ "message": "警告:這是不安全的 HTTP 頁面,任何您送出的資訊均可能被其他人看見和更改。此登入資訊原先是在安全的 (HTTPS) 頁面儲存的。" }, "insecurePageWarningFillPrompt": { - "message": "您依然想要填充此登入資訊嗎?" + "message": "您仍要填入此登入資訊嗎?" }, "autofillIframeWarning": { "message": "這個表單寄放在不同的網域,而非您儲存登入資訊的 URI。選擇「確認」則依然自動填入,「取消」則停止本動作。" }, "autofillIframeWarningTip": { - "message": "若以後不想再跳出這個警告,請儲存 URI「$HOSTNAME$」到您這個網站的 Bitwarden 登入項目。", + "message": "若以後不想再跳出這個警告,請將這個網站的 URI「$HOSTNAME$」儲存到您的 Bitwarden 登入項目。", "placeholders": { "hostname": { "content": "$1", @@ -1489,7 +1598,7 @@ "message": "新的主密碼" }, "confirmNewMasterPass": { - "message": "確認新主密碼" + "message": "確認新的主密碼" }, "masterPasswordPolicyInEffect": { "message": "一個或多個組織原則要求您的主密碼須符合下列條件:" @@ -1534,7 +1643,7 @@ "message": "您新的主密碼不符合原則要求。" }, "acceptPolicies": { - "message": "若選取此方塊,代表您同意下列項目:" + "message": "選中此選取框,即表示您同意下列條款:" }, "acceptPoliciesRequired": { "message": "尚未接受服務條款與隱私權政策。" @@ -1599,6 +1708,12 @@ "biometricsNotSupportedDesc": { "message": "此裝置不支援瀏覽器生物特徵辨識。" }, + "biometricsFailedTitle": { + "message": "生物特徵辨識失敗" + }, + "biometricsFailedDesc": { + "message": "生物特徵辨識無法完成,請考慮使用主密碼或登出。若仍無法解決,請聯絡 Bitwarden 客服。" + }, "nativeMessaginPermissionErrorTitle": { "message": "未提供權限" }, @@ -1617,18 +1732,24 @@ "personalOwnershipPolicyInEffect": { "message": "組織原則正在影響您的擁有權選項。" }, + "personalOwnershipPolicyInEffectImports": { + "message": "某個組織原則已禁止您將項目匯入至您的個人密碼庫。" + }, "excludedDomains": { "message": "排除網域" }, "excludedDomainsDesc": { "message": "Bitwarden 不會要求儲存這些網域的詳細登入資訊。必須重新整理頁面才能使變更生效。" }, + "excludedDomainsDescAlt": { + "message": "對於所有已登入的帳戶,Bitwarden 不會詢問是否儲存這些網域的登入資訊。您必須重新整理頁面以使變更生效。" + }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ 不是一個有效的網域", "placeholders": { "domain": { "content": "$1", - "example": "googlecom" + "example": "google.com" } } }, @@ -1872,7 +1993,7 @@ "message": "您的主密碼最近被您的組織管理者變更過。若要存取密碼庫,您必須立即更新主密碼。繼續操作會登出目前的登入階段,並要求您重新登入。其他裝置上的活動登入階段最多會保持一個小時。" }, "updateWeakMasterPasswordWarning": { - "message": "您的主密碼不符合您的組織政策之一或多個要求。您必須立即更新您的主密碼以存取密碼庫。進行此操作將登出您目前的工作階段,需要您重新登入。其他裝置上的工作階段可能繼續長達一小時。" + "message": "您的主密碼不符合一個或多個組織原則要求。您必須立即更新您的主密碼才能存取密碼庫。進行此動作將登出您目前的工作階段,需要您重新登入。其他裝置上的工作階段可能繼續長達一小時。" }, "resetPasswordPolicyAutoEnroll": { "message": "自動註冊" @@ -1883,8 +2004,21 @@ "selectFolder": { "message": "選擇資料夾⋯" }, - "ssoCompleteRegistration": { - "message": "要完成 SSO 登入設定,請設定一組主密碼以存取和保護您的密碼庫。" + "noFoldersFound": { + "message": "未找到資料夾", + "description": "Used as a message within the notification bar when no folders are found" + }, + "orgPermissionsUpdatedMustSetPassword": { + "message": "您的組織權限已更新,需要您設定主密碼。", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "orgRequiresYouToSetPassword": { + "message": "您的組織要求您設定主密碼。", + "description": "Used as a card title description on the set password page to explain why the user is there" + }, + "verificationRequired": { + "message": "需要驗證", + "description": "Default title for the user verification dialog." }, "hours": { "message": "小時" @@ -1906,7 +2040,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "您的組織原則正在影響您的密碼庫逾時時間。密碼庫逾時時間最多可以設定到 $HOURS$ 小時 $MINUTES$ 分鐘。您密碼庫的逾時動作是設為 $ACTION$。", + "message": "您的組織原則正在影響您的密碼庫逾時時間。密碼庫逾時時間最多可以設定到 $HOURS$ 小時 $MINUTES$ 分鐘。您密碼庫的逾時動作被設定為 $ACTION$。", "placeholders": { "hours": { "content": "$1", @@ -1923,7 +2057,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "您的組織原則已將密碼庫逾時動作設為 $ACTION$。", + "message": "您的組織原則已將密碼庫逾時動作設定為 $ACTION$。", "placeholders": { "action": { "content": "$1", @@ -1979,8 +2113,8 @@ "exportingPersonalVaultTitle": { "message": "正匯出個人密碼庫" }, - "exportingPersonalVaultDescription": { - "message": "只會匯出與 $EMAIL$ 關聯的個人密碼庫項目。組織密碼庫的項目不包含在內。", + "exportingIndividualVaultDescription": { + "message": "僅匯出與 $EMAIL$ 關聯的個人密碼庫項目。組織密碼庫項目將不包括在內。僅匯出密碼庫項目資訊,不包括關聯的附件。", "placeholders": { "email": { "content": "$1", @@ -2080,7 +2214,7 @@ "serverVersion": { "message": "伺服器版本" }, - "selfHosted": { + "selfHostedServer": { "message": "自我裝載" }, "thirdParty": { @@ -2140,29 +2274,29 @@ "notificationSentDevice": { "message": "已傳送通知至您的裝置。" }, - "logInInitiated": { - "message": "登入已起始" + "loginInitiated": { + "message": "登入已發起" }, "exposedMasterPassword": { "message": "已暴露的主密碼" }, "exposedMasterPasswordDesc": { - "message": "在其他資料庫中找到您的密碼。我們建議您使用一個獨特的密碼來保護您的帳號,您確定要用這個密碼嗎?" + "message": "在資料外洩事件中找到了密碼。我們建議您使用一個獨特的密碼來保護您的帳戶,您確定要使用已暴露的密碼嗎?" }, "weakAndExposedMasterPassword": { "message": "強度不足且已暴露的主密碼" }, "weakAndBreachedMasterPasswordDesc": { - "message": "密碼強度不足,且在其他資料庫中找到這個密碼。使用一個強度足夠和獨特的密碼來保護您的帳號。請問您確定要用這個密碼嗎?" + "message": "密碼強度不足,且在資料外洩事件中找到了這個密碼。使用一個強度足夠和獨特的密碼來保護您的帳戶。您確定要使用這個密碼嗎?" }, "checkForBreaches": { "message": "檢查外洩密碼資料庫中是否有此密碼" }, "important": { - "message": "重要事項:" + "message": "重要:" }, "masterPasswordHint": { - "message": "如果您忘記主密碼,沒有復原的方法!" + "message": "若您忘記主密碼,將會無法找回!" }, "characterMinimum": { "message": "$LENGTH$ 個字元以上", @@ -2174,13 +2308,13 @@ } }, "autofillPageLoadPolicyActivated": { - "message": "您的組織政策已經開啟了自動填入功能。" + "message": "您的組織原則已啟用頁面載入時自動填入的功能。" }, "howToAutofill": { "message": "如何自動填入" }, "autofillSelectInfoWithCommand": { - "message": "從這個網頁選擇一個項目,或使用快速鍵:$COMMAND$", + "message": "從此畫面中選擇一個項目;使用捷徑 $COMMAND$,或在設定中探索其他選項。", "placeholders": { "command": { "content": "$1", @@ -2189,7 +2323,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "從這個網頁選擇一個項目,或在設定中設定一個快速鍵。" + "message": "從此畫面中選擇一個項目,或在設定中探索其他選項。" }, "gotIt": { "message": "我知道了" @@ -2204,7 +2338,7 @@ "message": "自動填入快速鍵尚未設定。請在瀏覽器的設定中變更。" }, "autofillShortcutText": { - "message": "自動填入快速鍵是:$COMMAND$。請在瀏覽器的設定中變更。", + "message": "自動填入快速鍵:$COMMAND$。請在瀏覽器的設定中變更。", "placeholders": { "command": { "content": "$1", @@ -2221,19 +2355,36 @@ } } }, - "region": { - "message": "區域" + "loggingInOn": { + "message": "正登入到" }, "opensInANewWindow": { "message": "在新視窗開啟" }, - "eu": { - "message": "歐洲 (EU)", - "description": "European Union" + "deviceApprovalRequired": { + "message": "裝置核准已要求。請在下面選擇一個核准選項:" }, - "us": { - "message": "美國 (US)", - "description": "United States" + "rememberThisDevice": { + "message": "記住這個裝置" + }, + "uncheckIfPublicDevice": { + "message": "若使用公用裝置,請勿勾選" + }, + "approveFromYourOtherDevice": { + "message": "從其他裝置核准" + }, + "requestAdminApproval": { + "message": "要求管理員核准" + }, + "approveWithMasterPassword": { + "message": "使用主密碼批准" + }, + "ssoIdentifierRequired": { + "message": "需要組織 SSO 識別碼。" + }, + "eu": { + "message": "EU", + "description": "European Union" }, "accessDenied": { "message": "拒絕存取。您沒有檢視此頁面的權限。" @@ -2243,5 +2394,619 @@ }, "display": { "message": "顯示" + }, + "accountSuccessfullyCreated": { + "message": "已成功建立帳戶!" + }, + "adminApprovalRequested": { + "message": "已要求管理員核准" + }, + "adminApprovalRequestSentToAdmins": { + "message": "您的要求已傳送給您的管理員。" + }, + "youWillBeNotifiedOnceApproved": { + "message": "核准後將通知您。" + }, + "troubleLoggingIn": { + "message": "登入時遇到困難?" + }, + "loginApproved": { + "message": "登入已核准" + }, + "userEmailMissing": { + "message": "缺少使用者電子郵件" + }, + "deviceTrusted": { + "message": "裝置已信任" + }, + "inputRequired": { + "message": "必須輸入內容。" + }, + "required": { + "message": "必填" + }, + "search": { + "message": "搜尋" + }, + "inputMinLength": { + "message": "必須輸入至少 $COUNT$ 個字元。", + "placeholders": { + "count": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxLength": { + "message": "輸入的內容長度不得超過 $COUNT$ 字元。", + "placeholders": { + "count": { + "content": "$1", + "example": "20" + } + } + }, + "inputForbiddenCharacters": { + "message": "以下字元不被允許:$CHARACTERS$", + "placeholders": { + "characters": { + "content": "$1", + "example": "@, #, $, %" + } + } + }, + "inputMinValue": { + "message": "輸入的值不能低於 $MIN$。", + "placeholders": { + "min": { + "content": "$1", + "example": "8" + } + } + }, + "inputMaxValue": { + "message": "輸入值不得超過 $MAX$。", + "placeholders": { + "max": { + "content": "$1", + "example": "100" + } + } + }, + "multipleInputEmails": { + "message": "一個或多個電子郵件無效" + }, + "inputTrimValidator": { + "message": "輸入不得僅包含空格。", + "description": "Notification to inform the user that a form's input can't contain only whitespace." + }, + "inputEmail": { + "message": "輸入的不是電子郵件地址。" + }, + "fieldsNeedAttention": { + "message": "您需注意上方的 $COUNT$ 個欄位。", + "placeholders": { + "count": { + "content": "$1", + "example": "4" + } + } + }, + "selectPlaceholder": { + "message": "-- 選擇 --" + }, + "multiSelectPlaceholder": { + "message": "-- 輸入以進行篩選 --" + }, + "multiSelectLoading": { + "message": "正在取得選項…" + }, + "multiSelectNotFound": { + "message": "找不到任何項目" + }, + "multiSelectClearAll": { + "message": "全部清除" + }, + "plusNMore": { + "message": "+ $QUANTITY$ more", + "placeholders": { + "quantity": { + "content": "$1", + "example": "5" + } + } + }, + "submenu": { + "message": "子選單" + }, + "toggleCollapse": { + "message": "切換折疊", + "description": "Toggling an expand/collapse state." + }, + "filelessImport": { + "message": "匯入你的資料至 Bitwarden?", + "description": "Default notification title for triggering a fileless import." + }, + "lpFilelessImport": { + "message": "保護你的 LastPass 資料並匯入至 Bitwarden?", + "description": "LastPass specific notification title for triggering a fileless import." + }, + "lpCancelFilelessImport": { + "message": "儲存為未加密的檔案", + "description": "LastPass specific notification button text for cancelling a fileless import." + }, + "startFilelessImport": { + "message": "匯入至 Bitwarden", + "description": "Notification button text for starting a fileless import." + }, + "importing": { + "message": "匯入中……", + "description": "Notification message for when an import is in progress." + }, + "dataSuccessfullyImported": { + "message": "資料匯入成功!", + "description": "Notification message for when an import has completed successfully." + }, + "dataImportFailed": { + "message": "匯入時發生錯誤。檢查控制台以了解詳細資訊。", + "description": "Notification message for when an import has failed." + }, + "importNetworkError": { + "message": "匯入時遇到網路錯誤", + "description": "Notification message for when an import has failed due to a network error." + }, + "aliasDomain": { + "message": "別名網域" + }, + "passwordRepromptDisabledAutofillOnPageLoad": { + "message": "使用主密碼重新提示的項目無法在頁面載入時自動填寫。已關閉頁面載入時的自動填入。", + "description": "Toast message for describing that master password re-prompt cannot be auto-filled on page load." + }, + "autofillOnPageLoadSetToDefault": { + "message": "將頁面載入時的自動填入設定為使用預設設定。", + "description": "Toast message for informing the user that auto-fill on page load has been set to the default setting." + }, + "turnOffMasterPasswordPromptToEditField": { + "message": "關閉主密碼重新提示以編輯此欄位", + "description": "Message appearing below the autofill on load message when master password reprompt is set for a vault item." + }, + "skipToContent": { + "message": "跳至內容" + }, + "bitwardenOverlayButton": { + "message": "Bitwarden 自動填入選單按鈕", + "description": "Page title for the iframe containing the overlay button" + }, + "toggleBitwardenVaultOverlay": { + "message": "切換 Bitwarden 自動填入選單", + "description": "Screen reader and tool tip label for the overlay button" + }, + "bitwardenVault": { + "message": "Bitwarden 自動填入選單", + "description": "Page title in overlay" + }, + "unlockYourAccountToViewMatchingLogins": { + "message": "解鎖您的帳戶以查看符合的登入資訊", + "description": "Text to display in overlay when the account is locked." + }, + "unlockAccount": { + "message": "解鎖帳號", + "description": "Button text to display in overlay when the account is locked." + }, + "fillCredentialsFor": { + "message": "填入登入資訊給", + "description": "Screen reader text for when overlay item is in focused" + }, + "partialUsername": { + "message": "部分使用者名稱", + "description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username" + }, + "noItemsToShow": { + "message": "無可顯示的項目", + "description": "Text to show in overlay if there are no matching items" + }, + "newItem": { + "message": "新增項目", + "description": "Button text to display in overlay when there are no matching items" + }, + "addNewVaultItem": { + "message": "新增密碼庫項目", + "description": "Screen reader text (aria-label) for new item button in overlay" + }, + "bitwardenOverlayMenuAvailable": { + "message": "Bitwarden 自動填入選單可用。按下箭頭鍵來選擇。", + "description": "Screen reader text for announcing when the overlay opens on the page" + }, + "turnOn": { + "message": "開啟" + }, + "ignore": { + "message": "忽略" + }, + "importData": { + "message": "匯入資料", + "description": "Used for the header of the import dialog, the import button and within the file-password-prompt" + }, + "importError": { + "message": "匯入時發生錯誤" + }, + "importErrorDesc": { + "message": "您嘗試匯入的資料有問題,請處理下方列出的來源檔案中的錯誤然後再試一次。" + }, + "resolveTheErrorsBelowAndTryAgain": { + "message": "請解決下面的錯誤然後再試一次。" + }, + "description": { + "message": "描述" + }, + "importSuccess": { + "message": "資料匯入成功" + }, + "importSuccessNumberOfItems": { + "message": "一共匯入了 $AMOUNT$ 個項目。", + "placeholders": { + "amount": { + "content": "$1", + "example": "2" + } + } + }, + "tryAgain": { + "message": "再試一次" + }, + "verificationRequiredForActionSetPinToContinue": { + "message": "此操作需要驗證。設定 PIN 碼以繼續。" + }, + "setPin": { + "message": "設定 PIN 碼" + }, + "verifyWithBiometrics": { + "message": "生物辨識驗證" + }, + "awaitingConfirmation": { + "message": "正在等待確認" + }, + "couldNotCompleteBiometrics": { + "message": "無法完成生物辨識。" + }, + "needADifferentMethod": { + "message": "需要不同的方法嗎?" + }, + "useMasterPassword": { + "message": "用主密碼" + }, + "usePin": { + "message": "使用 PIN 碼" + }, + "useBiometrics": { + "message": "用生物識別" + }, + "enterVerificationCodeSentToEmail": { + "message": "輸入傳送到你的電子郵件的驗證碼。" + }, + "resendCode": { + "message": "重新傳送驗證碼" + }, + "total": { + "message": "總計" + }, + "importWarning": { + "message": "即將匯入資料至 $ORGANIZATION$。您的資料可能會與該組織中的成員共用,確定要繼續嗎?", + "placeholders": { + "organization": { + "content": "$1", + "example": "My Org Name" + } + } + }, + "launchDuoAndFollowStepsToFinishLoggingIn": { + "message": "啟動 Duo 並依照步驟完成登入。" + }, + "duoRequiredForAccount": { + "message": "Duo two-step login is required for your account." + }, + "popoutTheExtensionToCompleteLogin": { + "message": "Popout the extension to complete login." + }, + "popoutExtension": { + "message": "Popout extension" + }, + "launchDuo": { + "message": "開啟Duo" + }, + "importFormatError": { + "message": "資料格式不正確。請檢查您匯入的檔案後再試一次。" + }, + "importNothingError": { + "message": "沒有匯入任何內容。" + }, + "importEncKeyError": { + "message": "解密匯出的檔案時發生錯誤,您的加密金鑰與匯出資料時使用的金鑰不同。" + }, + "invalidFilePassword": { + "message": "檔案密碼無效,請使用您當初匯出檔案時輸入的密碼。" + }, + "importDestination": { + "message": "匯入目的地" + }, + "learnAboutImportOptions": { + "message": "瞭解更多匯入選項" + }, + "selectImportFolder": { + "message": "選擇一個資料夾" + }, + "selectImportCollection": { + "message": "選擇一個集合" + }, + "importTargetHint": { + "message": "如果您要將匯入檔案的內容移動到 $DESTINATION$,請選擇此選項", + "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.", + "placeholders": { + "destination": { + "content": "$1", + "example": "folder or collection" + } + } + }, + "importUnassignedItemsError": { + "message": "檔案包含未指派的項目。" + }, + "selectFormat": { + "message": "選擇匯入檔案的格式" + }, + "selectImportFile": { + "message": "選擇要匯入的檔案" + }, + "chooseFile": { + "message": "選擇檔案" + }, + "noFileChosen": { + "message": "未選擇任何檔案" + }, + "orCopyPasteFileContents": { + "message": "或複製/貼上要匯入的檔案內容" + }, + "instructionsFor": { + "message": "$NAME$ 教學", + "description": "The title for the import tool instructions.", + "placeholders": { + "name": { + "content": "$1", + "example": "LastPass (csv)" + } + } + }, + "confirmVaultImport": { + "message": "確認匯入密碼庫" + }, + "confirmVaultImportDesc": { + "message": "此檔案受密碼保護,請輸入檔案密碼以匯入資料。" + }, + "confirmFilePassword": { + "message": "確認檔案密碼" + }, + "typePasskey": { + "message": "密碼金鑰" + }, + "passkeyNotCopied": { + "message": "密碼金鑰不會被複製" + }, + "passkeyNotCopiedAlert": { + "message": "密碼金鑰不會被複製到新複製的項目。 您想繼續複製此項目嗎?" + }, + "passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": { + "message": "發起站點需要驗證。對於沒有主密碼的帳戶,此功能尚未實現。" + }, + "logInWithPasskey": { + "message": "使用密碼金鑰登入?" + }, + "passkeyAlreadyExists": { + "message": "用於這個應用程式的密碼金鑰已經存在。" + }, + "noPasskeysFoundForThisApplication": { + "message": "未發現用於這個應用程式的密碼金鑰。" + }, + "noMatchingPasskeyLogin": { + "message": "您沒有適用於此網站的登入項目。" + }, + "confirm": { + "message": "確認" + }, + "savePasskey": { + "message": "儲存密碼金鑰" + }, + "savePasskeyNewLogin": { + "message": "儲存密碼金鑰為新登入項目" + }, + "choosePasskey": { + "message": "選擇一個用於儲存此密碼金鑰的登入項目" + }, + "passkeyItem": { + "message": "密碼金鑰項目" + }, + "overwritePasskey": { + "message": "覆寫密碼金鑰嗎?" + }, + "overwritePasskeyAlert": { + "message": "該項目已包含密碼金鑰。您確定要覆寫目前的密碼金鑰嗎?" + }, + "featureNotSupported": { + "message": "功能尚不受支援" + }, + "yourPasskeyIsLocked": { + "message": "使用密碼金鑰需要身分驗證。請驗證您的身份以繼續。" + }, + "multifactorAuthenticationCancelled": { + "message": "多因素驗證已取消" + }, + "noLastPassDataFound": { + "message": "未找到任何 LastPass 資料" + }, + "incorrectUsernameOrPassword": { + "message": "使用者名稱或密碼不正確" + }, + "incorrectPassword": { + "message": "密碼錯誤" + }, + "incorrectCode": { + "message": "錯誤驗證碼" + }, + "incorrectPin": { + "message": "PIN 碼錯誤" + }, + "multifactorAuthenticationFailed": { + "message": "多因素驗證失敗" + }, + "includeSharedFolders": { + "message": "包含共用的資料夾" + }, + "lastPassEmail": { + "message": "LastPass Email" + }, + "importingYourAccount": { + "message": "正在匯入您的帳戶..." + }, + "lastPassMFARequired": { + "message": "要求 LastPass 多因素驗證" + }, + "lastPassMFADesc": { + "message": "輸入來自身分驗證 App 的一次性通行代碼" + }, + "lastPassOOBDesc": { + "message": "在身分驗證 App 中核准登入請求或輸入一次性通行代碼。" + }, + "passcode": { + "message": "繞行代碼" + }, + "lastPassMasterPassword": { + "message": "LastPass 主密碼" + }, + "lastPassAuthRequired": { + "message": "要求 LastPass 驗證" + }, + "awaitingSSO": { + "message": "等待 SSO 驗證" + }, + "awaitingSSODesc": { + "message": "請使用您的公司憑證繼續登入。" + }, + "seeDetailedInstructions": { + "message": "請參閱我們的幫助網站上的詳細說明:", + "description": "This is followed a by a hyperlink to the help website." + }, + "importDirectlyFromLastPass": { + "message": "從 LastPass 直接匯入" + }, + "importFromCSV": { + "message": "從 CSV 匯入" + }, + "lastPassTryAgainCheckEmail": { + "message": "請再嘗試一次,或檢查您的電子郵件以確認 LastPass 的驗證信。" + }, + "collection": { + "message": "收藏" + }, + "lastPassYubikeyDesc": { + "message": "將與您的 LastPass 帳戶關聯的 YubiKey 插入電腦的 USB 連接埠,然後觸摸其按鈕。" + }, + "switchAccount": { + "message": "切換帳戶" + }, + "switchAccounts": { + "message": "切換帳號" + }, + "switchToAccount": { + "message": "切換帳戶" + }, + "activeAccount": { + "message": "目前帳戶" + }, + "availableAccounts": { + "message": "可用帳戶" + }, + "accountLimitReached": { + "message": "已達帳戶數量上限。登出一個帳戶後再加入其他的帳戶。" + }, + "active": { + "message": "生效中" + }, + "locked": { + "message": "已鎖" + }, + "unlocked": { + "message": "已解鎖" + }, + "server": { + "message": "伺服器" + }, + "hostedAt": { + "message": "hosted at" + }, + "useDeviceOrHardwareKey": { + "message": "Use your device or hardware key" + }, + "justOnce": { + "message": "僅此一次" + }, + "alwaysForThisSite": { + "message": "Always for this site" + }, + "domainAddedToExcludedDomains": { + "message": "$DOMAIN$ added to excluded domains.", + "placeholders": { + "domain": { + "content": "$1", + "example": "google.com" + } + } + }, + "commonImportFormats": { + "message": "Common formats", + "description": "Label indicating the most common import formats" + }, + "overrideDefaultBrowserAutofillTitle": { + "message": "Make Bitwarden your default password manager?", + "description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutofillDescription": { + "message": "Ignoring this option may cause conflicts between the Bitwarden auto-fill menu and your browser's.", + "description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior" + }, + "overrideDefaultBrowserAutoFillSettings": { + "message": "Make Bitwarden your default password manager", + "description": "Label for the setting that allows overriding the default browser autofill settings" + }, + "privacyPermissionAdditionNotGrantedTitle": { + "message": "Unable to set Bitwarden as the default password manager", + "description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "privacyPermissionAdditionNotGrantedDescription": { + "message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.", + "description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings" + }, + "makeDefault": { + "message": "設為預設", + "description": "Button text for the setting that allows overriding the default browser autofill settings" + }, + "saveCipherAttemptSuccess": { + "message": "Credentials saved successfully!", + "description": "Notification message for when saving credentials has succeeded." + }, + "updateCipherAttemptSuccess": { + "message": "Credentials updated successfully!", + "description": "Notification message for when updating credentials has succeeded." + }, + "saveCipherAttemptFailed": { + "message": "Error saving credentials. Check console for details.", + "description": "Notification message for when saving credentials has failed." + }, + "removePasskey": { + "message": "Remove passkey" + }, + "passkeyRemoved": { + "message": "Passkey removed" + }, + "unassignedItemsBanner": { + "message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible." } } diff --git a/apps/browser/src/admin-console/background/service-factories/organization-service.factory.ts b/apps/browser/src/admin-console/background/service-factories/organization-service.factory.ts index a050dc22ec..b7f6f98ea2 100644 --- a/apps/browser/src/admin-console/background/service-factories/organization-service.factory.ts +++ b/apps/browser/src/admin-console/background/service-factories/organization-service.factory.ts @@ -1,15 +1,13 @@ import { OrganizationService as AbstractOrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; +import { OrganizationService } from "@bitwarden/common/admin-console/services/organization/organization.service"; import { FactoryOptions, CachedServices, factory, } from "../../../platform/background/service-factories/factory-options"; -import { - stateServiceFactory, - StateServiceInitOptions, -} from "../../../platform/background/service-factories/state-service.factory"; -import { BrowserOrganizationService } from "../../services/browser-organization.service"; +import { stateProviderFactory } from "../../../platform/background/service-factories/state-provider.factory"; +import { StateServiceInitOptions } from "../../../platform/background/service-factories/state-service.factory"; type OrganizationServiceFactoryOptions = FactoryOptions; @@ -18,12 +16,12 @@ export type OrganizationServiceInitOptions = OrganizationServiceFactoryOptions & export function organizationServiceFactory( cache: { organizationService?: AbstractOrganizationService } & CachedServices, - opts: OrganizationServiceInitOptions + opts: OrganizationServiceInitOptions, ): Promise { return factory( cache, "organizationService", opts, - async () => new BrowserOrganizationService(await stateServiceFactory(cache, opts)) + async () => new OrganizationService(await stateProviderFactory(cache, opts)), ); } diff --git a/apps/browser/src/admin-console/background/service-factories/policy-service.factory.ts b/apps/browser/src/admin-console/background/service-factories/policy-service.factory.ts index 89f4a667f8..b00693bd56 100644 --- a/apps/browser/src/admin-console/background/service-factories/policy-service.factory.ts +++ b/apps/browser/src/admin-console/background/service-factories/policy-service.factory.ts @@ -1,4 +1,5 @@ import { PolicyService as AbstractPolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; +import { PolicyService } from "@bitwarden/common/admin-console/services/policy/policy.service"; import { CachedServices, @@ -6,10 +7,9 @@ import { FactoryOptions, } from "../../../platform/background/service-factories/factory-options"; import { - stateServiceFactory as stateServiceFactory, - StateServiceInitOptions, -} from "../../../platform/background/service-factories/state-service.factory"; -import { BrowserPolicyService } from "../../services/browser-policy.service"; + stateProviderFactory, + StateProviderInitOptions, +} from "../../../platform/background/service-factories/state-provider.factory"; import { organizationServiceFactory, @@ -19,21 +19,21 @@ import { type PolicyServiceFactoryOptions = FactoryOptions; export type PolicyServiceInitOptions = PolicyServiceFactoryOptions & - StateServiceInitOptions & + StateProviderInitOptions & OrganizationServiceInitOptions; export function policyServiceFactory( cache: { policyService?: AbstractPolicyService } & CachedServices, - opts: PolicyServiceInitOptions + opts: PolicyServiceInitOptions, ): Promise { return factory( cache, "policyService", opts, async () => - new BrowserPolicyService( - await stateServiceFactory(cache, opts), - await organizationServiceFactory(cache, opts) - ) + new PolicyService( + await stateProviderFactory(cache, opts), + await organizationServiceFactory(cache, opts), + ), ); } diff --git a/apps/browser/src/admin-console/services/browser-organization.service.ts b/apps/browser/src/admin-console/services/browser-organization.service.ts deleted file mode 100644 index 6294756cdf..0000000000 --- a/apps/browser/src/admin-console/services/browser-organization.service.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { BehaviorSubject } from "rxjs"; - -import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; -import { OrganizationService } from "@bitwarden/common/admin-console/services/organization/organization.service"; - -import { browserSession, sessionSync } from "../../platform/decorators/session-sync-observable"; - -@browserSession -export class BrowserOrganizationService extends OrganizationService { - @sessionSync({ initializer: Organization.fromJSON, initializeAs: "array" }) - protected _organizations: BehaviorSubject; -} diff --git a/apps/browser/src/admin-console/services/browser-policy.service.ts b/apps/browser/src/admin-console/services/browser-policy.service.ts deleted file mode 100644 index 74aa0f546a..0000000000 --- a/apps/browser/src/admin-console/services/browser-policy.service.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { BehaviorSubject, filter, map, Observable, switchMap, tap } from "rxjs"; -import { Jsonify } from "type-fest"; - -import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { PolicyType } from "@bitwarden/common/admin-console/enums"; -import { Policy } from "@bitwarden/common/admin-console/models/domain/policy"; -import { PolicyService } from "@bitwarden/common/admin-console/services/policy/policy.service"; -import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; - -import { browserSession, sessionSync } from "../../platform/decorators/session-sync-observable"; - -@browserSession -export class BrowserPolicyService extends PolicyService { - @sessionSync({ - initializer: (obj: Jsonify) => Object.assign(new Policy(), obj), - initializeAs: "array", - }) - protected _policies: BehaviorSubject; - - constructor(stateService: StateService, organizationService: OrganizationService) { - super(stateService, organizationService); - this._policies.pipe(this.handleActivateAutofillPolicy.bind(this)).subscribe(); - } - - /** - * If the ActivateAutofill policy is enabled, save a flag indicating if we need to - * enable Autofill on page load. - */ - private handleActivateAutofillPolicy(policies$: Observable) { - return policies$.pipe( - map((policies) => policies.find((p) => p.type == PolicyType.ActivateAutofill && p.enabled)), - filter((p) => p != null), - switchMap(async (_) => [ - await this.stateService.getActivateAutoFillOnPageLoadFromPolicy(), - await this.stateService.getEnableAutoFillOnPageLoad(), - ]), - tap(([activated, autofillEnabled]) => { - if (activated === undefined) { - this.stateService.setActivateAutoFillOnPageLoadFromPolicy(!autofillEnabled); - } - }) - ); - } -} diff --git a/apps/browser/src/auth/background/service-factories/account-service.factory.ts b/apps/browser/src/auth/background/service-factories/account-service.factory.ts new file mode 100644 index 0000000000..9b7ad05ec4 --- /dev/null +++ b/apps/browser/src/auth/background/service-factories/account-service.factory.ts @@ -0,0 +1,44 @@ +import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { AccountServiceImplementation } from "@bitwarden/common/auth/services/account.service"; + +import { + FactoryOptions, + CachedServices, + factory, +} from "../../../platform/background/service-factories/factory-options"; +import { + GlobalStateProviderInitOptions, + globalStateProviderFactory, +} from "../../../platform/background/service-factories/global-state-provider.factory"; +import { + LogServiceInitOptions, + logServiceFactory, +} from "../../../platform/background/service-factories/log-service.factory"; +import { + MessagingServiceInitOptions, + messagingServiceFactory, +} from "../../../platform/background/service-factories/messaging-service.factory"; + +type AccountServiceFactoryOptions = FactoryOptions; + +export type AccountServiceInitOptions = AccountServiceFactoryOptions & + MessagingServiceInitOptions & + LogServiceInitOptions & + GlobalStateProviderInitOptions; + +export function accountServiceFactory( + cache: { accountService?: AccountService } & CachedServices, + opts: AccountServiceInitOptions, +): Promise { + return factory( + cache, + "accountService", + opts, + async () => + new AccountServiceImplementation( + await messagingServiceFactory(cache, opts), + await logServiceFactory(cache, opts), + await globalStateProviderFactory(cache, opts), + ), + ); +} diff --git a/apps/browser/src/auth/background/service-factories/auth-request-service.factory.ts b/apps/browser/src/auth/background/service-factories/auth-request-service.factory.ts new file mode 100644 index 0000000000..295fedbadd --- /dev/null +++ b/apps/browser/src/auth/background/service-factories/auth-request-service.factory.ts @@ -0,0 +1,53 @@ +import { AuthRequestService, AuthRequestServiceAbstraction } from "@bitwarden/auth/common"; + +import { + apiServiceFactory, + ApiServiceInitOptions, +} from "../../../platform/background/service-factories/api-service.factory"; +import { + appIdServiceFactory, + AppIdServiceInitOptions, +} from "../../../platform/background/service-factories/app-id-service.factory"; +import { + CryptoServiceInitOptions, + cryptoServiceFactory, +} from "../../../platform/background/service-factories/crypto-service.factory"; +import { + CachedServices, + FactoryOptions, + factory, +} from "../../../platform/background/service-factories/factory-options"; + +import { accountServiceFactory, AccountServiceInitOptions } from "./account-service.factory"; +import { + internalMasterPasswordServiceFactory, + MasterPasswordServiceInitOptions, +} from "./master-password-service.factory"; + +type AuthRequestServiceFactoryOptions = FactoryOptions; + +export type AuthRequestServiceInitOptions = AuthRequestServiceFactoryOptions & + AppIdServiceInitOptions & + AccountServiceInitOptions & + MasterPasswordServiceInitOptions & + CryptoServiceInitOptions & + ApiServiceInitOptions; + +export function authRequestServiceFactory( + cache: { authRequestService?: AuthRequestServiceAbstraction } & CachedServices, + opts: AuthRequestServiceInitOptions, +): Promise { + return factory( + cache, + "authRequestService", + opts, + async () => + new AuthRequestService( + await appIdServiceFactory(cache, opts), + await accountServiceFactory(cache, opts), + await internalMasterPasswordServiceFactory(cache, opts), + await cryptoServiceFactory(cache, opts), + await apiServiceFactory(cache, opts), + ), + ); +} diff --git a/apps/browser/src/auth/background/service-factories/auth-service.factory.ts b/apps/browser/src/auth/background/service-factories/auth-service.factory.ts index 5612cedb91..f600efa18d 100644 --- a/apps/browser/src/auth/background/service-factories/auth-service.factory.ts +++ b/apps/browser/src/auth/background/service-factories/auth-service.factory.ts @@ -2,84 +2,43 @@ import { AuthService as AbstractAuthService } from "@bitwarden/common/auth/abstr import { AuthService } from "@bitwarden/common/auth/services/auth.service"; import { - policyServiceFactory, - PolicyServiceInitOptions, -} from "../../../admin-console/background/service-factories/policy-service.factory"; -import { - apiServiceFactory, ApiServiceInitOptions, + apiServiceFactory, } from "../../../platform/background/service-factories/api-service.factory"; -import { appIdServiceFactory } from "../../../platform/background/service-factories/app-id-service.factory"; import { CryptoServiceInitOptions, cryptoServiceFactory, } from "../../../platform/background/service-factories/crypto-service.factory"; -import { - EncryptServiceInitOptions, - encryptServiceFactory, -} from "../../../platform/background/service-factories/encrypt-service.factory"; -import { - environmentServiceFactory, - EnvironmentServiceInitOptions, -} from "../../../platform/background/service-factories/environment-service.factory"; import { CachedServices, - factory, FactoryOptions, + factory, } from "../../../platform/background/service-factories/factory-options"; import { - i18nServiceFactory, - I18nServiceInitOptions, -} from "../../../platform/background/service-factories/i18n-service.factory"; -import { - logServiceFactory, - LogServiceInitOptions, -} from "../../../platform/background/service-factories/log-service.factory"; -import { - messagingServiceFactory, MessagingServiceInitOptions, + messagingServiceFactory, } from "../../../platform/background/service-factories/messaging-service.factory"; import { - platformUtilsServiceFactory, - PlatformUtilsServiceInitOptions, -} from "../../../platform/background/service-factories/platform-utils-service.factory"; -import { - stateServiceFactory, StateServiceInitOptions, + stateServiceFactory, } from "../../../platform/background/service-factories/state-service.factory"; -import { - passwordStrengthServiceFactory, - PasswordStrengthServiceInitOptions, -} from "../../../tools/background/service_factories/password-strength-service.factory"; -import { - keyConnectorServiceFactory, - KeyConnectorServiceInitOptions, -} from "./key-connector-service.factory"; -import { tokenServiceFactory, TokenServiceInitOptions } from "./token-service.factory"; -import { twoFactorServiceFactory, TwoFactorServiceInitOptions } from "./two-factor-service.factory"; +import { AccountServiceInitOptions, accountServiceFactory } from "./account-service.factory"; +import { TokenServiceInitOptions, tokenServiceFactory } from "./token-service.factory"; -type AuthServiceFactoyOptions = FactoryOptions; +type AuthServiceFactoryOptions = FactoryOptions; -export type AuthServiceInitOptions = AuthServiceFactoyOptions & +export type AuthServiceInitOptions = AuthServiceFactoryOptions & + AccountServiceInitOptions & + MessagingServiceInitOptions & CryptoServiceInitOptions & ApiServiceInitOptions & - TokenServiceInitOptions & - PlatformUtilsServiceInitOptions & - MessagingServiceInitOptions & - LogServiceInitOptions & - KeyConnectorServiceInitOptions & - EnvironmentServiceInitOptions & StateServiceInitOptions & - TwoFactorServiceInitOptions & - I18nServiceInitOptions & - EncryptServiceInitOptions & - PolicyServiceInitOptions & - PasswordStrengthServiceInitOptions; + TokenServiceInitOptions; export function authServiceFactory( cache: { authService?: AbstractAuthService } & CachedServices, - opts: AuthServiceInitOptions + opts: AuthServiceInitOptions, ): Promise { return factory( cache, @@ -87,21 +46,12 @@ export function authServiceFactory( opts, async () => new AuthService( + await accountServiceFactory(cache, opts), + await messagingServiceFactory(cache, opts), await cryptoServiceFactory(cache, opts), await apiServiceFactory(cache, opts), - await tokenServiceFactory(cache, opts), - await appIdServiceFactory(cache, opts), - await platformUtilsServiceFactory(cache, opts), - await messagingServiceFactory(cache, opts), - await logServiceFactory(cache, opts), - await keyConnectorServiceFactory(cache, opts), - await environmentServiceFactory(cache, opts), await stateServiceFactory(cache, opts), - await twoFactorServiceFactory(cache, opts), - await i18nServiceFactory(cache, opts), - await encryptServiceFactory(cache, opts), - await passwordStrengthServiceFactory(cache, opts), - await policyServiceFactory(cache, opts) - ) + await tokenServiceFactory(cache, opts), + ), ); } diff --git a/apps/browser/src/auth/background/service-factories/avatar-service.factory.ts b/apps/browser/src/auth/background/service-factories/avatar-service.factory.ts new file mode 100644 index 0000000000..456edfa93d --- /dev/null +++ b/apps/browser/src/auth/background/service-factories/avatar-service.factory.ts @@ -0,0 +1,38 @@ +import { AvatarService as AvatarServiceAbstraction } from "@bitwarden/common/auth/abstractions/avatar.service"; +import { AvatarService } from "@bitwarden/common/auth/services/avatar.service"; + +import { + ApiServiceInitOptions, + apiServiceFactory, +} from "../../../platform/background/service-factories/api-service.factory"; +import { + CachedServices, + factory, + FactoryOptions, +} from "../../../platform/background/service-factories/factory-options"; +import { + stateProviderFactory, + StateProviderInitOptions, +} from "../../../platform/background/service-factories/state-provider.factory"; + +type AvatarServiceFactoryOptions = FactoryOptions; + +export type AvatarServiceInitOptions = AvatarServiceFactoryOptions & + ApiServiceInitOptions & + StateProviderInitOptions; + +export function avatarServiceFactory( + cache: { avatarService?: AvatarServiceAbstraction } & CachedServices, + opts: AvatarServiceInitOptions, +): Promise { + return factory( + cache, + "avatarService", + opts, + async () => + new AvatarService( + await apiServiceFactory(cache, opts), + await stateProviderFactory(cache, opts), + ), + ); +} diff --git a/apps/browser/src/auth/background/service-factories/device-trust-crypto-service.factory.ts b/apps/browser/src/auth/background/service-factories/device-trust-crypto-service.factory.ts new file mode 100644 index 0000000000..cac6f9bbe8 --- /dev/null +++ b/apps/browser/src/auth/background/service-factories/device-trust-crypto-service.factory.ts @@ -0,0 +1,93 @@ +import { DeviceTrustCryptoServiceAbstraction } from "@bitwarden/common/auth/abstractions/device-trust-crypto.service.abstraction"; +import { DeviceTrustCryptoService } from "@bitwarden/common/auth/services/device-trust-crypto.service.implementation"; + +import { + DevicesApiServiceInitOptions, + devicesApiServiceFactory, +} from "../../../background/service-factories/devices-api-service.factory"; +import { + AppIdServiceInitOptions, + appIdServiceFactory, +} from "../../../platform/background/service-factories/app-id-service.factory"; +import { + CryptoFunctionServiceInitOptions, + cryptoFunctionServiceFactory, +} from "../../../platform/background/service-factories/crypto-function-service.factory"; +import { + CryptoServiceInitOptions, + cryptoServiceFactory, +} from "../../../platform/background/service-factories/crypto-service.factory"; +import { + EncryptServiceInitOptions, + encryptServiceFactory, +} from "../../../platform/background/service-factories/encrypt-service.factory"; +import { + CachedServices, + FactoryOptions, + factory, +} from "../../../platform/background/service-factories/factory-options"; +import { + I18nServiceInitOptions, + i18nServiceFactory, +} from "../../../platform/background/service-factories/i18n-service.factory"; +import { + KeyGenerationServiceInitOptions, + keyGenerationServiceFactory, +} from "../../../platform/background/service-factories/key-generation-service.factory"; +import { + PlatformUtilsServiceInitOptions, + platformUtilsServiceFactory, +} from "../../../platform/background/service-factories/platform-utils-service.factory"; +import { + StateProviderInitOptions, + stateProviderFactory, +} from "../../../platform/background/service-factories/state-provider.factory"; +import { + SecureStorageServiceInitOptions, + secureStorageServiceFactory, +} from "../../../platform/background/service-factories/storage-service.factory"; + +import { + UserDecryptionOptionsServiceInitOptions, + userDecryptionOptionsServiceFactory, +} from "./user-decryption-options-service.factory"; + +type DeviceTrustCryptoServiceFactoryOptions = FactoryOptions; + +export type DeviceTrustCryptoServiceInitOptions = DeviceTrustCryptoServiceFactoryOptions & + KeyGenerationServiceInitOptions & + CryptoFunctionServiceInitOptions & + CryptoServiceInitOptions & + EncryptServiceInitOptions & + AppIdServiceInitOptions & + DevicesApiServiceInitOptions & + I18nServiceInitOptions & + PlatformUtilsServiceInitOptions & + StateProviderInitOptions & + SecureStorageServiceInitOptions & + UserDecryptionOptionsServiceInitOptions; + +export function deviceTrustCryptoServiceFactory( + cache: { deviceTrustCryptoService?: DeviceTrustCryptoServiceAbstraction } & CachedServices, + opts: DeviceTrustCryptoServiceInitOptions, +): Promise { + return factory( + cache, + "deviceTrustCryptoService", + opts, + async () => + new DeviceTrustCryptoService( + await keyGenerationServiceFactory(cache, opts), + await cryptoFunctionServiceFactory(cache, opts), + await cryptoServiceFactory(cache, opts), + await encryptServiceFactory(cache, opts), + await appIdServiceFactory(cache, opts), + await devicesApiServiceFactory(cache, opts), + await i18nServiceFactory(cache, opts), + await platformUtilsServiceFactory(cache, opts), + await stateProviderFactory(cache, opts), + await secureStorageServiceFactory(cache, opts), + await userDecryptionOptionsServiceFactory(cache, opts), + ), + ); +} diff --git a/apps/browser/src/auth/background/service-factories/key-connector-service.factory.ts b/apps/browser/src/auth/background/service-factories/key-connector-service.factory.ts index 25eb85e556..c602acadae 100644 --- a/apps/browser/src/auth/background/service-factories/key-connector-service.factory.ts +++ b/apps/browser/src/auth/background/service-factories/key-connector-service.factory.ts @@ -9,10 +9,6 @@ import { apiServiceFactory, ApiServiceInitOptions, } from "../../../platform/background/service-factories/api-service.factory"; -import { - CryptoFunctionServiceInitOptions, - cryptoFunctionServiceFactory, -} from "../../../platform/background/service-factories/crypto-function-service.factory"; import { CryptoServiceInitOptions, cryptoServiceFactory, @@ -22,15 +18,24 @@ import { CachedServices, factory, } from "../../../platform/background/service-factories/factory-options"; +import { + KeyGenerationServiceInitOptions, + keyGenerationServiceFactory, +} from "../../../platform/background/service-factories/key-generation-service.factory"; import { logServiceFactory, LogServiceInitOptions, } from "../../../platform/background/service-factories/log-service.factory"; import { - stateServiceFactory, - StateServiceInitOptions, -} from "../../../platform/background/service-factories/state-service.factory"; + stateProviderFactory, + StateProviderInitOptions, +} from "../../../platform/background/service-factories/state-provider.factory"; +import { accountServiceFactory, AccountServiceInitOptions } from "./account-service.factory"; +import { + internalMasterPasswordServiceFactory, + MasterPasswordServiceInitOptions, +} from "./master-password-service.factory"; import { TokenServiceInitOptions, tokenServiceFactory } from "./token-service.factory"; type KeyConnectorServiceFactoryOptions = FactoryOptions & { @@ -40,17 +45,19 @@ type KeyConnectorServiceFactoryOptions = FactoryOptions & { }; export type KeyConnectorServiceInitOptions = KeyConnectorServiceFactoryOptions & - StateServiceInitOptions & + AccountServiceInitOptions & + MasterPasswordServiceInitOptions & CryptoServiceInitOptions & ApiServiceInitOptions & TokenServiceInitOptions & LogServiceInitOptions & OrganizationServiceInitOptions & - CryptoFunctionServiceInitOptions; + KeyGenerationServiceInitOptions & + StateProviderInitOptions; export function keyConnectorServiceFactory( cache: { keyConnectorService?: AbstractKeyConnectorService } & CachedServices, - opts: KeyConnectorServiceInitOptions + opts: KeyConnectorServiceInitOptions, ): Promise { return factory( cache, @@ -58,14 +65,16 @@ export function keyConnectorServiceFactory( opts, async () => new KeyConnectorService( - await stateServiceFactory(cache, opts), + await accountServiceFactory(cache, opts), + await internalMasterPasswordServiceFactory(cache, opts), await cryptoServiceFactory(cache, opts), await apiServiceFactory(cache, opts), await tokenServiceFactory(cache, opts), await logServiceFactory(cache, opts), await organizationServiceFactory(cache, opts), - await cryptoFunctionServiceFactory(cache, opts), - opts.keyConnectorServiceOptions.logoutCallback - ) + await keyGenerationServiceFactory(cache, opts), + opts.keyConnectorServiceOptions.logoutCallback, + await stateProviderFactory(cache, opts), + ), ); } diff --git a/apps/browser/src/auth/background/service-factories/login-email-service.factory.ts b/apps/browser/src/auth/background/service-factories/login-email-service.factory.ts new file mode 100644 index 0000000000..6e98a9a886 --- /dev/null +++ b/apps/browser/src/auth/background/service-factories/login-email-service.factory.ts @@ -0,0 +1,28 @@ +import { LoginEmailServiceAbstraction, LoginEmailService } from "@bitwarden/auth/common"; + +import { + CachedServices, + factory, + FactoryOptions, +} from "../../../platform/background/service-factories/factory-options"; +import { + stateProviderFactory, + StateProviderInitOptions, +} from "../../../platform/background/service-factories/state-provider.factory"; + +type LoginEmailServiceFactoryOptions = FactoryOptions; + +export type LoginEmailServiceInitOptions = LoginEmailServiceFactoryOptions & + StateProviderInitOptions; + +export function loginEmailServiceFactory( + cache: { loginEmailService?: LoginEmailServiceAbstraction } & CachedServices, + opts: LoginEmailServiceInitOptions, +): Promise { + return factory( + cache, + "loginEmailService", + opts, + async () => new LoginEmailService(await stateProviderFactory(cache, opts)), + ); +} diff --git a/apps/browser/src/auth/background/service-factories/login-strategy-service.factory.ts b/apps/browser/src/auth/background/service-factories/login-strategy-service.factory.ts new file mode 100644 index 0000000000..f184072cce --- /dev/null +++ b/apps/browser/src/auth/background/service-factories/login-strategy-service.factory.ts @@ -0,0 +1,145 @@ +import { LoginStrategyService, LoginStrategyServiceAbstraction } from "@bitwarden/auth/common"; + +import { + policyServiceFactory, + PolicyServiceInitOptions, +} from "../../../admin-console/background/service-factories/policy-service.factory"; +import { + apiServiceFactory, + ApiServiceInitOptions, +} from "../../../platform/background/service-factories/api-service.factory"; +import { appIdServiceFactory } from "../../../platform/background/service-factories/app-id-service.factory"; +import { + billingAccountProfileStateServiceFactory, + BillingAccountProfileStateServiceInitOptions, +} from "../../../platform/background/service-factories/billing-account-profile-state-service.factory"; +import { + CryptoServiceInitOptions, + cryptoServiceFactory, +} from "../../../platform/background/service-factories/crypto-service.factory"; +import { + EncryptServiceInitOptions, + encryptServiceFactory, +} from "../../../platform/background/service-factories/encrypt-service.factory"; +import { + environmentServiceFactory, + EnvironmentServiceInitOptions, +} from "../../../platform/background/service-factories/environment-service.factory"; +import { + CachedServices, + factory, + FactoryOptions, +} from "../../../platform/background/service-factories/factory-options"; +import { + globalStateProviderFactory, + GlobalStateProviderInitOptions, +} from "../../../platform/background/service-factories/global-state-provider.factory"; +import { + i18nServiceFactory, + I18nServiceInitOptions, +} from "../../../platform/background/service-factories/i18n-service.factory"; +import { + logServiceFactory, + LogServiceInitOptions, +} from "../../../platform/background/service-factories/log-service.factory"; +import { + messagingServiceFactory, + MessagingServiceInitOptions, +} from "../../../platform/background/service-factories/messaging-service.factory"; +import { + platformUtilsServiceFactory, + PlatformUtilsServiceInitOptions, +} from "../../../platform/background/service-factories/platform-utils-service.factory"; +import { + stateServiceFactory, + StateServiceInitOptions, +} from "../../../platform/background/service-factories/state-service.factory"; +import { + passwordStrengthServiceFactory, + PasswordStrengthServiceInitOptions, +} from "../../../tools/background/service_factories/password-strength-service.factory"; + +import { accountServiceFactory, AccountServiceInitOptions } from "./account-service.factory"; +import { + authRequestServiceFactory, + AuthRequestServiceInitOptions, +} from "./auth-request-service.factory"; +import { + deviceTrustCryptoServiceFactory, + DeviceTrustCryptoServiceInitOptions, +} from "./device-trust-crypto-service.factory"; +import { + keyConnectorServiceFactory, + KeyConnectorServiceInitOptions, +} from "./key-connector-service.factory"; +import { + internalMasterPasswordServiceFactory, + MasterPasswordServiceInitOptions, +} from "./master-password-service.factory"; +import { tokenServiceFactory, TokenServiceInitOptions } from "./token-service.factory"; +import { twoFactorServiceFactory, TwoFactorServiceInitOptions } from "./two-factor-service.factory"; +import { + internalUserDecryptionOptionServiceFactory, + UserDecryptionOptionsServiceInitOptions, +} from "./user-decryption-options-service.factory"; + +type LoginStrategyServiceFactoryOptions = FactoryOptions; + +export type LoginStrategyServiceInitOptions = LoginStrategyServiceFactoryOptions & + AccountServiceInitOptions & + MasterPasswordServiceInitOptions & + CryptoServiceInitOptions & + ApiServiceInitOptions & + TokenServiceInitOptions & + PlatformUtilsServiceInitOptions & + MessagingServiceInitOptions & + LogServiceInitOptions & + KeyConnectorServiceInitOptions & + EnvironmentServiceInitOptions & + StateServiceInitOptions & + TwoFactorServiceInitOptions & + I18nServiceInitOptions & + EncryptServiceInitOptions & + PolicyServiceInitOptions & + PasswordStrengthServiceInitOptions & + DeviceTrustCryptoServiceInitOptions & + AuthRequestServiceInitOptions & + UserDecryptionOptionsServiceInitOptions & + GlobalStateProviderInitOptions & + BillingAccountProfileStateServiceInitOptions; + +export function loginStrategyServiceFactory( + cache: { loginStrategyService?: LoginStrategyServiceAbstraction } & CachedServices, + opts: LoginStrategyServiceInitOptions, +): Promise { + return factory( + cache, + "loginStrategyService", + opts, + async () => + new LoginStrategyService( + await accountServiceFactory(cache, opts), + await internalMasterPasswordServiceFactory(cache, opts), + await cryptoServiceFactory(cache, opts), + await apiServiceFactory(cache, opts), + await tokenServiceFactory(cache, opts), + await appIdServiceFactory(cache, opts), + await platformUtilsServiceFactory(cache, opts), + await messagingServiceFactory(cache, opts), + await logServiceFactory(cache, opts), + await keyConnectorServiceFactory(cache, opts), + await environmentServiceFactory(cache, opts), + await stateServiceFactory(cache, opts), + await twoFactorServiceFactory(cache, opts), + await i18nServiceFactory(cache, opts), + await encryptServiceFactory(cache, opts), + await passwordStrengthServiceFactory(cache, opts), + await policyServiceFactory(cache, opts), + await deviceTrustCryptoServiceFactory(cache, opts), + await authRequestServiceFactory(cache, opts), + await internalUserDecryptionOptionServiceFactory(cache, opts), + await globalStateProviderFactory(cache, opts), + await billingAccountProfileStateServiceFactory(cache, opts), + ), + ); +} diff --git a/apps/browser/src/auth/background/service-factories/master-password-service.factory.ts b/apps/browser/src/auth/background/service-factories/master-password-service.factory.ts new file mode 100644 index 0000000000..a2f9052a3f --- /dev/null +++ b/apps/browser/src/auth/background/service-factories/master-password-service.factory.ts @@ -0,0 +1,42 @@ +import { + InternalMasterPasswordServiceAbstraction, + MasterPasswordServiceAbstraction, +} from "@bitwarden/common/auth/abstractions/master-password.service.abstraction"; +import { MasterPasswordService } from "@bitwarden/common/auth/services/master-password/master-password.service"; + +import { + CachedServices, + factory, + FactoryOptions, +} from "../../../platform/background/service-factories/factory-options"; +import { + stateProviderFactory, + StateProviderInitOptions, +} from "../../../platform/background/service-factories/state-provider.factory"; + +type MasterPasswordServiceFactoryOptions = FactoryOptions; + +export type MasterPasswordServiceInitOptions = MasterPasswordServiceFactoryOptions & + StateProviderInitOptions; + +export function internalMasterPasswordServiceFactory( + cache: { masterPasswordService?: InternalMasterPasswordServiceAbstraction } & CachedServices, + opts: MasterPasswordServiceInitOptions, +): Promise { + return factory( + cache, + "masterPasswordService", + opts, + async () => new MasterPasswordService(await stateProviderFactory(cache, opts)), + ); +} + +export async function masterPasswordServiceFactory( + cache: { masterPasswordService?: InternalMasterPasswordServiceAbstraction } & CachedServices, + opts: MasterPasswordServiceInitOptions, +): Promise { + return (await internalMasterPasswordServiceFactory( + cache, + opts, + )) as MasterPasswordServiceAbstraction; +} diff --git a/apps/browser/src/auth/background/service-factories/pin-crypto-service.factory.ts b/apps/browser/src/auth/background/service-factories/pin-crypto-service.factory.ts new file mode 100644 index 0000000000..f5360f48fa --- /dev/null +++ b/apps/browser/src/auth/background/service-factories/pin-crypto-service.factory.ts @@ -0,0 +1,49 @@ +import { PinCryptoServiceAbstraction, PinCryptoService } from "@bitwarden/auth/common"; + +import { + VaultTimeoutSettingsServiceInitOptions, + vaultTimeoutSettingsServiceFactory, +} from "../../../background/service-factories/vault-timeout-settings-service.factory"; +import { + CryptoServiceInitOptions, + cryptoServiceFactory, +} from "../../../platform/background/service-factories/crypto-service.factory"; +import { + FactoryOptions, + CachedServices, + factory, +} from "../../../platform/background/service-factories/factory-options"; +import { + LogServiceInitOptions, + logServiceFactory, +} from "../../../platform/background/service-factories/log-service.factory"; +import { + StateServiceInitOptions, + stateServiceFactory, +} from "../../../platform/background/service-factories/state-service.factory"; + +type PinCryptoServiceFactoryOptions = FactoryOptions; + +export type PinCryptoServiceInitOptions = PinCryptoServiceFactoryOptions & + StateServiceInitOptions & + CryptoServiceInitOptions & + VaultTimeoutSettingsServiceInitOptions & + LogServiceInitOptions; + +export function pinCryptoServiceFactory( + cache: { pinCryptoService?: PinCryptoServiceAbstraction } & CachedServices, + opts: PinCryptoServiceInitOptions, +): Promise { + return factory( + cache, + "pinCryptoService", + opts, + async () => + new PinCryptoService( + await stateServiceFactory(cache, opts), + await cryptoServiceFactory(cache, opts), + await vaultTimeoutSettingsServiceFactory(cache, opts), + await logServiceFactory(cache, opts), + ), + ); +} diff --git a/apps/browser/src/auth/background/service-factories/sso-login-service.factory.ts b/apps/browser/src/auth/background/service-factories/sso-login-service.factory.ts new file mode 100644 index 0000000000..2747d9ff44 --- /dev/null +++ b/apps/browser/src/auth/background/service-factories/sso-login-service.factory.ts @@ -0,0 +1,28 @@ +import { SsoLoginServiceAbstraction } from "@bitwarden/common/auth/abstractions/sso-login.service.abstraction"; +import { SsoLoginService } from "@bitwarden/common/auth/services/sso-login.service"; + +import { + CachedServices, + factory, + FactoryOptions, +} from "../../../platform/background/service-factories/factory-options"; +import { + stateProviderFactory, + StateProviderInitOptions, +} from "../../../platform/background/service-factories/state-provider.factory"; + +type SsoLoginServiceFactoryOptions = FactoryOptions; + +export type SsoLoginServiceInitOptions = SsoLoginServiceFactoryOptions & StateProviderInitOptions; + +export function ssoLoginServiceFactory( + cache: { ssoLoginService?: SsoLoginServiceAbstraction } & CachedServices, + opts: SsoLoginServiceInitOptions, +): Promise { + return factory( + cache, + "ssoLoginService", + opts, + async () => new SsoLoginService(await stateProviderFactory(cache, opts)), + ); +} diff --git a/apps/browser/src/auth/background/service-factories/token-service.factory.ts b/apps/browser/src/auth/background/service-factories/token-service.factory.ts index 389f8d1541..ba42998209 100644 --- a/apps/browser/src/auth/background/service-factories/token-service.factory.ts +++ b/apps/browser/src/auth/background/service-factories/token-service.factory.ts @@ -1,28 +1,68 @@ import { TokenService as AbstractTokenService } from "@bitwarden/common/auth/abstractions/token.service"; import { TokenService } from "@bitwarden/common/auth/services/token.service"; +import { + EncryptServiceInitOptions, + encryptServiceFactory, +} from "../../../platform/background/service-factories/encrypt-service.factory"; import { FactoryOptions, CachedServices, factory, } from "../../../platform/background/service-factories/factory-options"; import { - stateServiceFactory, - StateServiceInitOptions, -} from "../../../platform/background/service-factories/state-service.factory"; + GlobalStateProviderInitOptions, + globalStateProviderFactory, +} from "../../../platform/background/service-factories/global-state-provider.factory"; +import { + KeyGenerationServiceInitOptions, + keyGenerationServiceFactory, +} from "../../../platform/background/service-factories/key-generation-service.factory"; +import { + LogServiceInitOptions, + logServiceFactory, +} from "../../../platform/background/service-factories/log-service.factory"; +import { + PlatformUtilsServiceInitOptions, + platformUtilsServiceFactory, +} from "../../../platform/background/service-factories/platform-utils-service.factory"; +import { + SingleUserStateProviderInitOptions, + singleUserStateProviderFactory, +} from "../../../platform/background/service-factories/single-user-state-provider.factory"; +import { + SecureStorageServiceInitOptions, + secureStorageServiceFactory, +} from "../../../platform/background/service-factories/storage-service.factory"; type TokenServiceFactoryOptions = FactoryOptions; -export type TokenServiceInitOptions = TokenServiceFactoryOptions & StateServiceInitOptions; +export type TokenServiceInitOptions = TokenServiceFactoryOptions & + SingleUserStateProviderInitOptions & + GlobalStateProviderInitOptions & + PlatformUtilsServiceInitOptions & + SecureStorageServiceInitOptions & + KeyGenerationServiceInitOptions & + EncryptServiceInitOptions & + LogServiceInitOptions; export function tokenServiceFactory( cache: { tokenService?: AbstractTokenService } & CachedServices, - opts: TokenServiceInitOptions + opts: TokenServiceInitOptions, ): Promise { return factory( cache, "tokenService", opts, - async () => new TokenService(await stateServiceFactory(cache, opts)) + async () => + new TokenService( + await singleUserStateProviderFactory(cache, opts), + await globalStateProviderFactory(cache, opts), + (await platformUtilsServiceFactory(cache, opts)).supportsSecureStorage(), + await secureStorageServiceFactory(cache, opts), + await keyGenerationServiceFactory(cache, opts), + await encryptServiceFactory(cache, opts), + await logServiceFactory(cache, opts), + ), ); } diff --git a/apps/browser/src/auth/background/service-factories/totp-service.factory.ts b/apps/browser/src/auth/background/service-factories/totp-service.factory.ts deleted file mode 100644 index 48331576cd..0000000000 --- a/apps/browser/src/auth/background/service-factories/totp-service.factory.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { TotpService as AbstractTotpService } from "@bitwarden/common/abstractions/totp.service"; -import { TotpService } from "@bitwarden/common/services/totp.service"; - -import { - CryptoFunctionServiceInitOptions, - cryptoFunctionServiceFactory, -} from "../../../platform/background/service-factories/crypto-function-service.factory"; -import { - FactoryOptions, - CachedServices, - factory, -} from "../../../platform/background/service-factories/factory-options"; -import { - LogServiceInitOptions, - logServiceFactory, -} from "../../../platform/background/service-factories/log-service.factory"; - -type TotpServiceOptions = FactoryOptions; - -export type TotpServiceInitOptions = TotpServiceOptions & - CryptoFunctionServiceInitOptions & - LogServiceInitOptions; - -export function totpServiceFactory( - cache: { totpService?: AbstractTotpService } & CachedServices, - opts: TotpServiceInitOptions -): Promise { - return factory( - cache, - "totpService", - opts, - async () => - new TotpService( - await cryptoFunctionServiceFactory(cache, opts), - await logServiceFactory(cache, opts) - ) - ); -} diff --git a/apps/browser/src/auth/background/service-factories/two-factor-service.factory.ts b/apps/browser/src/auth/background/service-factories/two-factor-service.factory.ts index 040a5edfb4..1d79bbbaf1 100644 --- a/apps/browser/src/auth/background/service-factories/two-factor-service.factory.ts +++ b/apps/browser/src/auth/background/service-factories/two-factor-service.factory.ts @@ -23,7 +23,7 @@ export type TwoFactorServiceInitOptions = TwoFactorServiceFactoryOptions & export async function twoFactorServiceFactory( cache: { twoFactorService?: AbstractTwoFactorService } & CachedServices, - opts: TwoFactorServiceInitOptions + opts: TwoFactorServiceInitOptions, ): Promise { const service = await factory( cache, @@ -32,8 +32,8 @@ export async function twoFactorServiceFactory( async () => new TwoFactorService( await i18nServiceFactory(cache, opts), - await platformUtilsServiceFactory(cache, opts) - ) + await platformUtilsServiceFactory(cache, opts), + ), ); service.init(); return service; diff --git a/apps/browser/src/auth/background/service-factories/user-decryption-options-service.factory.ts b/apps/browser/src/auth/background/service-factories/user-decryption-options-service.factory.ts new file mode 100644 index 0000000000..549639a3c7 --- /dev/null +++ b/apps/browser/src/auth/background/service-factories/user-decryption-options-service.factory.ts @@ -0,0 +1,46 @@ +import { + InternalUserDecryptionOptionsServiceAbstraction, + UserDecryptionOptionsService, + UserDecryptionOptionsServiceAbstraction, +} from "@bitwarden/auth/common"; + +import { + CachedServices, + factory, + FactoryOptions, +} from "../../../platform/background/service-factories/factory-options"; +import { + stateProviderFactory, + StateProviderInitOptions, +} from "../../../platform/background/service-factories/state-provider.factory"; + +type UserDecryptionOptionsServiceFactoryOptions = FactoryOptions; + +export type UserDecryptionOptionsServiceInitOptions = UserDecryptionOptionsServiceFactoryOptions & + StateProviderInitOptions; + +export function userDecryptionOptionsServiceFactory( + cache: { + userDecryptionOptionsService?: InternalUserDecryptionOptionsServiceAbstraction; + } & CachedServices, + opts: UserDecryptionOptionsServiceInitOptions, +): Promise { + return factory( + cache, + "userDecryptionOptionsService", + opts, + async () => new UserDecryptionOptionsService(await stateProviderFactory(cache, opts)), + ); +} + +export async function internalUserDecryptionOptionServiceFactory( + cache: { + userDecryptionOptionsService?: InternalUserDecryptionOptionsServiceAbstraction; + } & CachedServices, + opts: UserDecryptionOptionsServiceInitOptions, +): Promise { + return (await userDecryptionOptionsServiceFactory( + cache, + opts, + )) as InternalUserDecryptionOptionsServiceAbstraction; +} diff --git a/apps/browser/src/auth/background/service-factories/user-verification-api-service.factory.ts b/apps/browser/src/auth/background/service-factories/user-verification-api-service.factory.ts new file mode 100644 index 0000000000..f8d4387763 --- /dev/null +++ b/apps/browser/src/auth/background/service-factories/user-verification-api-service.factory.ts @@ -0,0 +1,29 @@ +import { UserVerificationApiServiceAbstraction } from "@bitwarden/common/auth/abstractions/user-verification/user-verification-api.service.abstraction"; +import { UserVerificationApiService } from "@bitwarden/common/auth/services/user-verification/user-verification-api.service"; + +import { + ApiServiceInitOptions, + apiServiceFactory, +} from "../../../platform/background/service-factories/api-service.factory"; +import { + FactoryOptions, + CachedServices, + factory, +} from "../../../platform/background/service-factories/factory-options"; + +type UserVerificationApiServiceFactoryOptions = FactoryOptions; + +export type UserVerificationApiServiceInitOptions = UserVerificationApiServiceFactoryOptions & + ApiServiceInitOptions; + +export function userVerificationApiServiceFactory( + cache: { userVerificationApiService?: UserVerificationApiServiceAbstraction } & CachedServices, + opts: UserVerificationApiServiceInitOptions, +): Promise { + return factory( + cache, + "userVerificationApiService", + opts, + async () => new UserVerificationApiService(await apiServiceFactory(cache, opts)), + ); +} diff --git a/apps/browser/src/auth/background/service-factories/user-verification-service.factory.ts b/apps/browser/src/auth/background/service-factories/user-verification-service.factory.ts new file mode 100644 index 0000000000..a8b67b21ca --- /dev/null +++ b/apps/browser/src/auth/background/service-factories/user-verification-service.factory.ts @@ -0,0 +1,87 @@ +import { UserVerificationService as AbstractUserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction"; +import { UserVerificationService } from "@bitwarden/common/auth/services/user-verification/user-verification.service"; + +import { + VaultTimeoutSettingsServiceInitOptions, + vaultTimeoutSettingsServiceFactory, +} from "../../../background/service-factories/vault-timeout-settings-service.factory"; +import { + CryptoServiceInitOptions, + cryptoServiceFactory, +} from "../../../platform/background/service-factories/crypto-service.factory"; +import { + FactoryOptions, + CachedServices, + factory, +} from "../../../platform/background/service-factories/factory-options"; +import { + I18nServiceInitOptions, + i18nServiceFactory, +} from "../../../platform/background/service-factories/i18n-service.factory"; +import { + LogServiceInitOptions, + logServiceFactory, +} from "../../../platform/background/service-factories/log-service.factory"; +import { + platformUtilsServiceFactory, + PlatformUtilsServiceInitOptions, +} from "../../../platform/background/service-factories/platform-utils-service.factory"; +import { + StateServiceInitOptions, + stateServiceFactory, +} from "../../../platform/background/service-factories/state-service.factory"; + +import { accountServiceFactory, AccountServiceInitOptions } from "./account-service.factory"; +import { + internalMasterPasswordServiceFactory, + MasterPasswordServiceInitOptions, +} from "./master-password-service.factory"; +import { PinCryptoServiceInitOptions, pinCryptoServiceFactory } from "./pin-crypto-service.factory"; +import { + userDecryptionOptionsServiceFactory, + UserDecryptionOptionsServiceInitOptions, +} from "./user-decryption-options-service.factory"; +import { + UserVerificationApiServiceInitOptions, + userVerificationApiServiceFactory, +} from "./user-verification-api-service.factory"; + +type UserVerificationServiceFactoryOptions = FactoryOptions; + +export type UserVerificationServiceInitOptions = UserVerificationServiceFactoryOptions & + StateServiceInitOptions & + CryptoServiceInitOptions & + AccountServiceInitOptions & + MasterPasswordServiceInitOptions & + I18nServiceInitOptions & + UserVerificationApiServiceInitOptions & + UserDecryptionOptionsServiceInitOptions & + PinCryptoServiceInitOptions & + LogServiceInitOptions & + VaultTimeoutSettingsServiceInitOptions & + PlatformUtilsServiceInitOptions; + +export function userVerificationServiceFactory( + cache: { userVerificationService?: AbstractUserVerificationService } & CachedServices, + opts: UserVerificationServiceInitOptions, +): Promise { + return factory( + cache, + "userVerificationService", + opts, + async () => + new UserVerificationService( + await stateServiceFactory(cache, opts), + await cryptoServiceFactory(cache, opts), + await accountServiceFactory(cache, opts), + await internalMasterPasswordServiceFactory(cache, opts), + await i18nServiceFactory(cache, opts), + await userVerificationApiServiceFactory(cache, opts), + await userDecryptionOptionsServiceFactory(cache, opts), + await pinCryptoServiceFactory(cache, opts), + await logServiceFactory(cache, opts), + await vaultTimeoutSettingsServiceFactory(cache, opts), + await platformUtilsServiceFactory(cache, opts), + ), + ); +} diff --git a/apps/browser/src/auth/guards/fido2-auth.guard.ts b/apps/browser/src/auth/guards/fido2-auth.guard.ts new file mode 100644 index 0000000000..f6b560c71d --- /dev/null +++ b/apps/browser/src/auth/guards/fido2-auth.guard.ts @@ -0,0 +1,34 @@ +import { inject } from "@angular/core"; +import { + ActivatedRouteSnapshot, + CanActivateFn, + Router, + RouterStateSnapshot, +} from "@angular/router"; + +import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; +import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; + +import { BrowserRouterService } from "../../platform/popup/services/browser-router.service"; + +/** + * This guard verifies the user's authetication status. + * If "Locked", it saves the intended route in memory and redirects to the lock screen. Otherwise, the intended route is allowed. + */ +export const fido2AuthGuard: CanActivateFn = async ( + route: ActivatedRouteSnapshot, + state: RouterStateSnapshot, +) => { + const routerService = inject(BrowserRouterService); + const authService = inject(AuthService); + const router = inject(Router); + + const authStatus = await authService.getAuthStatus(); + + if (authStatus === AuthenticationStatus.Locked) { + routerService.setPreviousUrl(state.url); + return router.createUrlTree(["/lock"], { queryParams: route.queryParams }); + } + + return true; +}; diff --git a/apps/browser/src/auth/popup/account-switching/account-switcher.component.html b/apps/browser/src/auth/popup/account-switching/account-switcher.component.html new file mode 100644 index 0000000000..aebf2219ff --- /dev/null +++ b/apps/browser/src/auth/popup/account-switching/account-switcher.component.html @@ -0,0 +1,78 @@ + +
+ +
+
{{ "switchAccounts" | i18n }}
+
+ +
+ +
+
+
+
+
    + +
  • + +
  • +
    + {{ "availableAccounts" | i18n }} +
    +
  • + +
  • +
    +
+ +

+ {{ "accountLimitReached" | i18n }} +

+
+ +
+
{{ "options" | i18n }}
+
+ + + +
+
+
+
diff --git a/apps/browser/src/auth/popup/account-switching/account-switcher.component.ts b/apps/browser/src/auth/popup/account-switching/account-switcher.component.ts new file mode 100644 index 0000000000..9a0423fca3 --- /dev/null +++ b/apps/browser/src/auth/popup/account-switching/account-switcher.component.ts @@ -0,0 +1,120 @@ +import { Location } from "@angular/common"; +import { Component, OnDestroy, OnInit } from "@angular/core"; +import { Router } from "@angular/router"; +import { Subject, firstValueFrom, map, switchMap, takeUntil } from "rxjs"; + +import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vault-timeout/vault-timeout-settings.service"; +import { VaultTimeoutService } from "@bitwarden/common/abstractions/vault-timeout/vault-timeout.service"; +import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; +import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; +import { VaultTimeoutAction } from "@bitwarden/common/enums/vault-timeout-action.enum"; +import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service"; +import { DialogService } from "@bitwarden/components"; + +import { AccountSwitcherService } from "./services/account-switcher.service"; + +@Component({ + templateUrl: "account-switcher.component.html", +}) +export class AccountSwitcherComponent implements OnInit, OnDestroy { + readonly lockedStatus = AuthenticationStatus.Locked; + private destroy$ = new Subject(); + + loading = false; + activeUserCanLock = false; + + constructor( + private accountSwitcherService: AccountSwitcherService, + private accountService: AccountService, + private vaultTimeoutService: VaultTimeoutService, + private messagingService: MessagingService, + private dialogService: DialogService, + private location: Location, + private router: Router, + private vaultTimeoutSettingsService: VaultTimeoutSettingsService, + private authService: AuthService, + ) {} + + get accountLimit() { + return this.accountSwitcherService.ACCOUNT_LIMIT; + } + + get specialAddAccountId() { + return this.accountSwitcherService.SPECIAL_ADD_ACCOUNT_ID; + } + + readonly availableAccounts$ = this.accountSwitcherService.availableAccounts$; + readonly currentAccount$ = this.accountService.activeAccount$.pipe( + switchMap((a) => + a == null + ? null + : this.authService.activeAccountStatus$.pipe(map((s) => ({ ...a, status: s }))), + ), + ); + + async ngOnInit() { + const availableVaultTimeoutActions = await firstValueFrom( + this.vaultTimeoutSettingsService.availableVaultTimeoutActions$(), + ); + this.activeUserCanLock = availableVaultTimeoutActions.includes(VaultTimeoutAction.Lock); + } + + back() { + this.location.back(); + } + + async lock(userId?: string) { + this.loading = true; + await this.vaultTimeoutService.lock(userId ? userId : null); + // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.router.navigate(["lock"]); + } + + async lockAll() { + this.loading = true; + this.availableAccounts$ + .pipe( + map((accounts) => + accounts + .filter((account) => account.id !== this.specialAddAccountId) + .sort((a, b) => (a.isActive ? -1 : b.isActive ? 1 : 0)) // Log out of the active account first + .map((account) => account.id), + ), + switchMap(async (accountIds) => { + if (accountIds.length === 0) { + return; + } + + // Must lock active (first) account first, then order doesn't matter + await this.vaultTimeoutService.lock(accountIds.shift()); + await Promise.all(accountIds.map((id) => this.vaultTimeoutService.lock(id))); + }), + takeUntil(this.destroy$), + ) + .subscribe(() => this.router.navigate(["lock"])); + } + + async logOut() { + this.loading = true; + const confirmed = await this.dialogService.openSimpleDialog({ + title: { key: "logOut" }, + content: { key: "logOutConfirmation" }, + type: "info", + }); + + if (confirmed) { + this.messagingService.send("logout"); + } + + // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.router.navigate(["home"]); + } + + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } +} diff --git a/apps/browser/src/auth/popup/account-switching/account.component.html b/apps/browser/src/auth/popup/account-switching/account.component.html new file mode 100644 index 0000000000..301a127a7d --- /dev/null +++ b/apps/browser/src/auth/popup/account-switching/account.component.html @@ -0,0 +1,54 @@ + + + diff --git a/apps/browser/src/auth/popup/account-switching/account.component.ts b/apps/browser/src/auth/popup/account-switching/account.component.ts new file mode 100644 index 0000000000..3fe83f2414 --- /dev/null +++ b/apps/browser/src/auth/popup/account-switching/account.component.ts @@ -0,0 +1,57 @@ +import { CommonModule, Location } from "@angular/common"; +import { Component, EventEmitter, Input, Output } from "@angular/core"; +import { Router } from "@angular/router"; + +import { JslibModule } from "@bitwarden/angular/jslib.module"; +import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; +import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; +import { AvatarModule } from "@bitwarden/components"; + +import { AccountSwitcherService, AvailableAccount } from "./services/account-switcher.service"; + +@Component({ + standalone: true, + selector: "auth-account", + templateUrl: "account.component.html", + imports: [CommonModule, JslibModule, AvatarModule], +}) +export class AccountComponent { + @Input() account: AvailableAccount; + @Output() loading = new EventEmitter(); + + constructor( + private accountSwitcherService: AccountSwitcherService, + private router: Router, + private location: Location, + private i18nService: I18nService, + ) {} + + get specialAccountAddId() { + return this.accountSwitcherService.SPECIAL_ADD_ACCOUNT_ID; + } + + async selectAccount(id: string) { + this.loading.emit(true); + await this.accountSwitcherService.selectAccount(id); + + if (id === this.specialAccountAddId) { + // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.router.navigate(["home"]); + } else { + this.location.back(); + } + } + + get status() { + if (this.account.isActive) { + return { text: this.i18nService.t("active"), icon: "bwi-check-circle" }; + } + + if (this.account.status === AuthenticationStatus.Unlocked) { + return { text: this.i18nService.t("unlocked"), icon: "bwi-unlock" }; + } + + return { text: this.i18nService.t("locked"), icon: "bwi-lock" }; + } +} diff --git a/apps/browser/src/auth/popup/account-switching/current-account.component.html b/apps/browser/src/auth/popup/account-switching/current-account.component.html new file mode 100644 index 0000000000..dacf4b34be --- /dev/null +++ b/apps/browser/src/auth/popup/account-switching/current-account.component.html @@ -0,0 +1,35 @@ +
+ + + + +
diff --git a/apps/browser/src/auth/popup/account-switching/current-account.component.ts b/apps/browser/src/auth/popup/account-switching/current-account.component.ts new file mode 100644 index 0000000000..643c37b9aa --- /dev/null +++ b/apps/browser/src/auth/popup/account-switching/current-account.component.ts @@ -0,0 +1,64 @@ +import { Location } from "@angular/common"; +import { Component } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { Observable, combineLatest, switchMap } from "rxjs"; + +import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; +import { AvatarService } from "@bitwarden/common/auth/abstractions/avatar.service"; +import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; +import { UserId } from "@bitwarden/common/types/guid"; + +export type CurrentAccount = { + id: UserId; + name: string | undefined; + email: string; + status: AuthenticationStatus; + avatarColor: string; +}; + +@Component({ + selector: "app-current-account", + templateUrl: "current-account.component.html", +}) +export class CurrentAccountComponent { + currentAccount$: Observable; + + constructor( + private accountService: AccountService, + private avatarService: AvatarService, + private router: Router, + private location: Location, + private route: ActivatedRoute, + private authService: AuthService, + ) { + this.currentAccount$ = combineLatest([ + this.accountService.activeAccount$, + this.avatarService.avatarColor$, + this.authService.activeAccountStatus$, + ]).pipe( + switchMap(async ([account, avatarColor, accountStatus]) => { + if (account == null) { + return null; + } + const currentAccount: CurrentAccount = { + id: account.id, + name: account.name || account.email, + email: account.email, + status: accountStatus, + avatarColor, + }; + + return currentAccount; + }), + ); + } + + async currentAccountClicked() { + if (this.route.snapshot.data.state.includes("account-switcher")) { + this.location.back(); + } else { + await this.router.navigate(["/account-switcher"]); + } + } +} diff --git a/apps/browser/src/auth/popup/account-switching/services/account-switcher.service.spec.ts b/apps/browser/src/auth/popup/account-switching/services/account-switcher.service.spec.ts new file mode 100644 index 0000000000..fe04bee20e --- /dev/null +++ b/apps/browser/src/auth/popup/account-switching/services/account-switcher.service.spec.ts @@ -0,0 +1,186 @@ +import { matches, mock } from "jest-mock-extended"; +import { BehaviorSubject, ReplaySubject, firstValueFrom, of, timeout } from "rxjs"; + +import { AccountInfo, AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; +import { AvatarService } from "@bitwarden/common/auth/abstractions/avatar.service"; +import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; +import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; +import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; +import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service"; +import { UserId } from "@bitwarden/common/types/guid"; + +import { AccountSwitcherService } from "./account-switcher.service"; + +describe("AccountSwitcherService", () => { + let accountsSubject: BehaviorSubject>; + let activeAccountSubject: BehaviorSubject<{ id: UserId } & AccountInfo>; + let authStatusSubject: ReplaySubject>; + + const accountService = mock(); + const avatarService = mock(); + const messagingService = mock(); + const environmentService = mock(); + const logService = mock(); + const authService = mock(); + + let accountSwitcherService: AccountSwitcherService; + + beforeEach(() => { + jest.resetAllMocks(); + accountsSubject = new BehaviorSubject>(null); + activeAccountSubject = new BehaviorSubject<{ id: UserId } & AccountInfo>(null); + authStatusSubject = new ReplaySubject>(1); + + // Use subject to allow for easy updates + accountService.accounts$ = accountsSubject; + accountService.activeAccount$ = activeAccountSubject; + authService.authStatuses$ = authStatusSubject; + + accountSwitcherService = new AccountSwitcherService( + accountService, + avatarService, + messagingService, + environmentService, + logService, + authService, + ); + }); + + afterEach(() => { + accountsSubject.complete(); + activeAccountSubject.complete(); + authStatusSubject.complete(); + }); + + describe("availableAccounts$", () => { + it("should return all logged in accounts and an add account option when accounts are less than 5", async () => { + const accountInfo: AccountInfo = { + name: "Test User 1", + email: "test1@email.com", + }; + + avatarService.getUserAvatarColor$.mockReturnValue(of("#cccccc")); + accountsSubject.next({ ["1" as UserId]: accountInfo, ["2" as UserId]: accountInfo }); + authStatusSubject.next({ + ["1" as UserId]: AuthenticationStatus.Unlocked, + ["2" as UserId]: AuthenticationStatus.Locked, + }); + activeAccountSubject.next(Object.assign(accountInfo, { id: "1" as UserId })); + + const accounts = await firstValueFrom( + accountSwitcherService.availableAccounts$.pipe(timeout(20)), + ); + expect(accounts).toHaveLength(3); + expect(accounts[0].id).toBe("1"); + expect(accounts[0].isActive).toBeTruthy(); + expect(accounts[1].id).toBe("2"); + expect(accounts[1].isActive).toBeFalsy(); + + expect(accounts[2].id).toBe("addAccount"); + expect(accounts[2].isActive).toBeFalsy(); + }); + + it.each([5, 6])( + "should return only accounts if there are %i accounts", + async (numberOfAccounts) => { + const seedAccounts: Record = {}; + const seedStatuses: Record = {}; + for (let i = 0; i < numberOfAccounts; i++) { + seedAccounts[`${i}` as UserId] = { + email: `test${i}@email.com`, + name: "Test User ${i}", + }; + seedStatuses[`${i}` as UserId] = AuthenticationStatus.Unlocked; + } + avatarService.getUserAvatarColor$.mockReturnValue(of("#cccccc")); + accountsSubject.next(seedAccounts); + authStatusSubject.next(seedStatuses); + activeAccountSubject.next( + Object.assign(seedAccounts["1" as UserId], { id: "1" as UserId }), + ); + + const accounts = await firstValueFrom(accountSwitcherService.availableAccounts$); + + expect(accounts).toHaveLength(numberOfAccounts); + accounts.forEach((account) => { + expect(account.id).not.toBe("addAccount"); + }); + }, + ); + + it("excludes logged out accounts", async () => { + const user1AccountInfo: AccountInfo = { + name: "Test User 1", + email: "", + }; + accountsSubject.next({ ["1" as UserId]: user1AccountInfo }); + authStatusSubject.next({ ["1" as UserId]: AuthenticationStatus.LoggedOut }); + accountsSubject.next({ + "1": user1AccountInfo, + } as Record); + + const accounts = await firstValueFrom( + accountSwitcherService.availableAccounts$.pipe(timeout(20)), + ); + + // Add account only + expect(accounts).toHaveLength(1); + expect(accounts[0].id).toBe("addAccount"); + }); + }); + + describe("selectAccount", () => { + it("initiates an add account logic when add account is selected", async () => { + let listener: ( + message: { command: string; userId: string }, + sender: unknown, + sendResponse: unknown, + ) => void = null; + jest.spyOn(chrome.runtime.onMessage, "addListener").mockImplementation((addedListener) => { + listener = addedListener; + }); + + const removeListenerSpy = jest.spyOn(chrome.runtime.onMessage, "removeListener"); + + const selectAccountPromise = accountSwitcherService.selectAccount("addAccount"); + + expect(listener).not.toBeNull(); + listener({ command: "switchAccountFinish", userId: null }, undefined, undefined); + + await selectAccountPromise; + + expect(accountService.switchAccount).toBeCalledWith(null); + + expect(removeListenerSpy).toBeCalledTimes(1); + }); + + it("initiates an account switch with an account id", async () => { + let listener: ( + message: { command: string; userId: string }, + sender: unknown, + sendResponse: unknown, + ) => void; + jest.spyOn(chrome.runtime.onMessage, "addListener").mockImplementation((addedListener) => { + listener = addedListener; + }); + + const removeListenerSpy = jest.spyOn(chrome.runtime.onMessage, "removeListener"); + + const selectAccountPromise = accountSwitcherService.selectAccount("1"); + + listener({ command: "switchAccountFinish", userId: "1" }, undefined, undefined); + + await selectAccountPromise; + + expect(accountService.switchAccount).toBeCalledWith("1"); + expect(messagingService.send).toBeCalledWith( + "switchAccount", + matches((payload) => { + return payload.userId === "1"; + }), + ); + expect(removeListenerSpy).toBeCalledTimes(1); + }); + }); +}); diff --git a/apps/browser/src/auth/popup/account-switching/services/account-switcher.service.ts b/apps/browser/src/auth/popup/account-switching/services/account-switcher.service.ts new file mode 100644 index 0000000000..a73ec3e1f6 --- /dev/null +++ b/apps/browser/src/auth/popup/account-switching/services/account-switcher.service.ts @@ -0,0 +1,164 @@ +import { Injectable } from "@angular/core"; +import { + Observable, + combineLatest, + filter, + firstValueFrom, + map, + switchMap, + throwError, + timeout, +} from "rxjs"; + +import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; +import { AvatarService } from "@bitwarden/common/auth/abstractions/avatar.service"; +import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; +import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; +import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; +import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service"; +import { UserId } from "@bitwarden/common/types/guid"; + +import { fromChromeEvent } from "../../../../platform/browser/from-chrome-event"; + +export type AvailableAccount = { + name: string; + email?: string; + id: string; + isActive: boolean; + server?: string; + status?: AuthenticationStatus; + avatarColor?: string; +}; + +@Injectable({ + providedIn: "root", +}) +export class AccountSwitcherService { + static incompleteAccountSwitchError = "Account switch did not complete."; + + ACCOUNT_LIMIT = 5; + SPECIAL_ADD_ACCOUNT_ID = "addAccount"; + availableAccounts$: Observable; + + switchAccountFinished$: Observable; + + constructor( + private accountService: AccountService, + private avatarService: AvatarService, + private messagingService: MessagingService, + private environmentService: EnvironmentService, + private logService: LogService, + authService: AuthService, + ) { + this.availableAccounts$ = combineLatest([ + accountService.accounts$, + authService.authStatuses$, + this.accountService.activeAccount$, + ]).pipe( + switchMap(async ([accounts, accountStatuses, activeAccount]) => { + const loggedInIds = Object.keys(accounts).filter( + (id: UserId) => accountStatuses[id] !== AuthenticationStatus.LoggedOut, + ); + // Accounts shouldn't ever be more than ACCOUNT_LIMIT but just in case do a greater than + const hasMaxAccounts = loggedInIds.length >= this.ACCOUNT_LIMIT; + const options: AvailableAccount[] = await Promise.all( + loggedInIds.map(async (id: UserId) => { + return { + name: accounts[id].name ?? accounts[id].email, + email: accounts[id].email, + id: id, + server: (await this.environmentService.getEnvironment(id))?.getHostname(), + status: accountStatuses[id], + isActive: id === activeAccount?.id, + avatarColor: await firstValueFrom( + this.avatarService.getUserAvatarColor$(id as UserId), + ), + }; + }), + ); + + if (!hasMaxAccounts) { + options.push({ + name: "Add account", + id: this.SPECIAL_ADD_ACCOUNT_ID, + isActive: false, + }); + } + + return options.sort((a, b) => { + /** + * Make sure the compare function is "well-formed" to account for browser inconsistencies. + * + * For specifics, see the sections "Description" and "Sorting with a non-well-formed comparator" + * on this page: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort + */ + + // Active account (if one exists) is always first + if (a.isActive) { + return -1; + } + + // If account "b" is the 'Add account' button, keep original order of "a" and "b" + if (b.id === this.SPECIAL_ADD_ACCOUNT_ID) { + return 0; + } + + return 1; + }); + }), + ); + + // Create a reusable observable that listens to the the switchAccountFinish message and returns the userId from the message + this.switchAccountFinished$ = fromChromeEvent<[message: { command: string; userId: string }]>( + chrome.runtime.onMessage, + ).pipe( + filter(([message]) => message.command === "switchAccountFinish"), + map(([message]) => message.userId), + ); + } + + get specialAccountAddId() { + return this.SPECIAL_ADD_ACCOUNT_ID; + } + + async selectAccount(id: string) { + if (id === this.SPECIAL_ADD_ACCOUNT_ID) { + id = null; + } + + // Creates a subscription to the switchAccountFinished observable but further + // filters it to only care about the current userId. + const switchAccountFinishedPromise = firstValueFrom( + this.switchAccountFinished$.pipe( + filter((userId) => userId === id), + timeout({ + // Much longer than account switching is expected to take for normal accounts + // but the account switching process includes a possible full sync so we need to account + // for very large accounts and want to still have a timeout + // to avoid a promise that might never resolve/reject + first: 60_000, + with: () => + throwError(() => new Error(AccountSwitcherService.incompleteAccountSwitchError)), + }), + ), + ); + + // Initiate the actions required to make account switching happen + await this.accountService.switchAccount(id as UserId); + this.messagingService.send("switchAccount", { userId: id }); // This message should cause switchAccountFinish to be sent + + // Wait until we recieve the switchAccountFinished message + await switchAccountFinishedPromise.catch((err) => { + if ( + err instanceof Error && + err.message === AccountSwitcherService.incompleteAccountSwitchError + ) { + this.logService.warning("message 'switchAccount' never responded."); + return; + } + throw err; + }); + } +} diff --git a/apps/browser/src/auth/popup/components/set-pin.component.html b/apps/browser/src/auth/popup/components/set-pin.component.html new file mode 100644 index 0000000000..aff87b5371 --- /dev/null +++ b/apps/browser/src/auth/popup/components/set-pin.component.html @@ -0,0 +1,29 @@ +
+ +
+ {{ "unlockWithPin" | i18n }} +
+
+

+ {{ "setYourPinCode" | i18n }} +

+ + {{ "pin" | i18n }} + + + + +
+
+ + +
+
+
diff --git a/apps/browser/src/auth/popup/components/set-pin.component.ts b/apps/browser/src/auth/popup/components/set-pin.component.ts new file mode 100644 index 0000000000..d79f9eeca8 --- /dev/null +++ b/apps/browser/src/auth/popup/components/set-pin.component.ts @@ -0,0 +1,34 @@ +import { CommonModule } from "@angular/common"; +import { Component } from "@angular/core"; +import { ReactiveFormsModule } from "@angular/forms"; + +import { SetPinComponent as BaseSetPinComponent } from "@bitwarden/angular/auth/components/set-pin.component"; +import { JslibModule } from "@bitwarden/angular/jslib.module"; +import { + AsyncActionsModule, + ButtonModule, + DialogModule, + DialogService, + FormFieldModule, + IconButtonModule, +} from "@bitwarden/components"; + +@Component({ + standalone: true, + templateUrl: "set-pin.component.html", + imports: [ + DialogModule, + CommonModule, + JslibModule, + ButtonModule, + IconButtonModule, + ReactiveFormsModule, + AsyncActionsModule, + FormFieldModule, + ], +}) +export class SetPinComponent extends BaseSetPinComponent { + static open(dialogService: DialogService) { + return dialogService.open(SetPinComponent); + } +} diff --git a/apps/browser/src/auth/popup/environment.component.ts b/apps/browser/src/auth/popup/environment.component.ts index c70b5f597c..ed348e563b 100644 --- a/apps/browser/src/auth/popup/environment.component.ts +++ b/apps/browser/src/auth/popup/environment.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from "@angular/core"; import { Router } from "@angular/router"; -import { EnvironmentComponent as BaseEnvironmentComponent } from "@bitwarden/angular/components/environment.component"; +import { EnvironmentComponent as BaseEnvironmentComponent } from "@bitwarden/angular/auth/components/environment.component"; import { ModalService } from "@bitwarden/angular/services/modal.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; @@ -20,7 +20,7 @@ export class EnvironmentComponent extends BaseEnvironmentComponent implements On public environmentService: BrowserEnvironmentService, i18nService: I18nService, private router: Router, - modalService: ModalService + modalService: ModalService, ) { super(platformUtilsService, environmentService, i18nService, modalService); this.showCustom = true; @@ -44,6 +44,8 @@ export class EnvironmentComponent extends BaseEnvironmentComponent implements On saved() { super.saved(); + // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. + // eslint-disable-next-line @typescript-eslint/no-floating-promises this.router.navigate([""]); } } diff --git a/apps/browser/src/auth/popup/hint.component.ts b/apps/browser/src/auth/popup/hint.component.ts index a743dc7da2..214a43efb7 100644 --- a/apps/browser/src/auth/popup/hint.component.ts +++ b/apps/browser/src/auth/popup/hint.component.ts @@ -2,8 +2,8 @@ import { Component } from "@angular/core"; import { ActivatedRoute, Router } from "@angular/router"; import { HintComponent as BaseHintComponent } from "@bitwarden/angular/auth/components/hint.component"; +import { LoginEmailServiceAbstraction } from "@bitwarden/auth/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { LoginService } from "@bitwarden/common/auth/abstractions/login.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; @@ -20,11 +20,13 @@ export class HintComponent extends BaseHintComponent { apiService: ApiService, logService: LogService, private route: ActivatedRoute, - loginService: LoginService + loginEmailService: LoginEmailServiceAbstraction, ) { - super(router, i18nService, apiService, platformUtilsService, logService, loginService); + super(router, i18nService, apiService, platformUtilsService, logService, loginEmailService); super.onSuccessfulSubmit = async () => { + // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. + // eslint-disable-next-line @typescript-eslint/no-floating-promises this.router.navigate([this.successRoute]); }; } diff --git a/apps/browser/src/auth/popup/home.component.html b/apps/browser/src/auth/popup/home.component.html index da208a8d50..8e23d96c49 100644 --- a/apps/browser/src/auth/popup/home.component.html +++ b/apps/browser/src/auth/popup/home.component.html @@ -1,3 +1,4 @@ +
- +
diff --git a/apps/browser/src/auth/popup/home.component.ts b/apps/browser/src/auth/popup/home.component.ts index 5dd3bdd641..db83736be8 100644 --- a/apps/browser/src/auth/popup/home.component.ts +++ b/apps/browser/src/auth/popup/home.component.ts @@ -1,14 +1,15 @@ import { Component, OnDestroy, OnInit, ViewChild } from "@angular/core"; import { FormBuilder, Validators } from "@angular/forms"; import { Router } from "@angular/router"; -import { Subject, takeUntil } from "rxjs"; +import { Subject, firstValueFrom, takeUntil } from "rxjs"; import { EnvironmentSelectorComponent } from "@bitwarden/angular/auth/components/environment-selector.component"; -import { LoginService } from "@bitwarden/common/auth/abstractions/login.service"; +import { LoginEmailServiceAbstraction } from "@bitwarden/auth/common"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; -import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; + +import { AccountSwitcherService } from "./account-switching/services/account-switcher.service"; @Component({ selector: "app-home", @@ -27,37 +28,34 @@ export class HomeComponent implements OnInit, OnDestroy { constructor( protected platformUtilsService: PlatformUtilsService, - private stateService: StateService, private formBuilder: FormBuilder, private router: Router, private i18nService: I18nService, private environmentService: EnvironmentService, - private loginService: LoginService + private loginEmailService: LoginEmailServiceAbstraction, + private accountSwitcherService: AccountSwitcherService, ) {} async ngOnInit(): Promise { - let savedEmail = this.loginService.getEmail(); - const rememberEmail = this.loginService.getRememberEmail(); + const email = this.loginEmailService.getEmail(); + const rememberEmail = this.loginEmailService.getRememberEmail(); - if (savedEmail != null) { - this.formGroup.patchValue({ - email: savedEmail, - rememberEmail: rememberEmail, - }); + if (email != null) { + this.formGroup.patchValue({ email, rememberEmail }); } else { - savedEmail = await this.stateService.getRememberedEmail(); - if (savedEmail != null) { - this.formGroup.patchValue({ - email: savedEmail, - rememberEmail: true, - }); + const storedEmail = await firstValueFrom(this.loginEmailService.storedEmail$); + + if (storedEmail != null) { + this.formGroup.patchValue({ email: storedEmail, rememberEmail: true }); } } this.environmentSelector.onOpenSelfHostedSettings .pipe(takeUntil(this.destroyed$)) .subscribe(() => { - this.setFormValues(); + this.setLoginEmailValues(); + // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. + // eslint-disable-next-line @typescript-eslint/no-floating-promises this.router.navigate(["environment"]); }); } @@ -67,28 +65,28 @@ export class HomeComponent implements OnInit, OnDestroy { this.destroyed$.complete(); } - submit() { + get availableAccounts$() { + return this.accountSwitcherService.availableAccounts$; + } + + async submit() { this.formGroup.markAllAsTouched(); + if (this.formGroup.invalid) { this.platformUtilsService.showToast( "error", this.i18nService.t("errorOccured"), - this.i18nService.t("invalidEmail") + this.i18nService.t("invalidEmail"), ); return; } - this.loginService.setEmail(this.formGroup.value.email); - this.loginService.setRememberEmail(this.formGroup.value.rememberEmail); - this.router.navigate(["login"], { queryParams: { email: this.formGroup.value.email } }); + this.setLoginEmailValues(); + await this.router.navigate(["login"], { queryParams: { email: this.formGroup.value.email } }); } - get selfHostedDomain() { - return this.environmentService.hasBaseUrl() ? this.environmentService.getWebVaultUrl() : null; - } - - setFormValues() { - this.loginService.setEmail(this.formGroup.value.email); - this.loginService.setRememberEmail(this.formGroup.value.rememberEmail); + setLoginEmailValues() { + this.loginEmailService.setEmail(this.formGroup.value.email); + this.loginEmailService.setRememberEmail(this.formGroup.value.rememberEmail); } } diff --git a/apps/browser/src/auth/popup/lock.component.html b/apps/browser/src/auth/popup/lock.component.html index cf964c1564..9892503a7b 100644 --- a/apps/browser/src/auth/popup/lock.component.html +++ b/apps/browser/src/auth/popup/lock.component.html @@ -1,85 +1,101 @@
-
+

{{ "verifyIdentity" | i18n }}

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

- -

- - {{ biometricError }} -

- {{ "awaitDesktop" | i18n }} -

+

+ +

+ + {{ biometricError }} +

+ {{ "awaitDesktop" | i18n }} +

+ + +
diff --git a/apps/browser/src/auth/popup/lock.component.ts b/apps/browser/src/auth/popup/lock.component.ts index d13609f61d..16c32337cf 100644 --- a/apps/browser/src/auth/popup/lock.component.ts +++ b/apps/browser/src/auth/popup/lock.component.ts @@ -1,15 +1,19 @@ import { Component, NgZone } from "@angular/core"; import { Router } from "@angular/router"; +import { firstValueFrom } from "rxjs"; import { LockComponent as BaseLockComponent } from "@bitwarden/angular/auth/components/lock.component"; -import { DialogServiceAbstraction } from "@bitwarden/angular/services/dialog"; +import { PinCryptoServiceAbstraction } from "@bitwarden/auth/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { VaultTimeoutService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service"; -import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service"; +import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vault-timeout/vault-timeout-settings.service"; +import { VaultTimeoutService } from "@bitwarden/common/abstractions/vault-timeout/vault-timeout.service"; import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction"; import { InternalPolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; +import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; -import { KeyConnectorService } from "@bitwarden/common/auth/abstractions/key-connector.service"; +import { DeviceTrustCryptoServiceAbstraction } from "@bitwarden/common/auth/abstractions/device-trust-crypto.service.abstraction"; +import { InternalMasterPasswordServiceAbstraction } from "@bitwarden/common/auth/abstractions/master-password.service.abstraction"; +import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; @@ -18,9 +22,13 @@ import { LogService } from "@bitwarden/common/platform/abstractions/log.service" import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; +import { BiometricStateService } from "@bitwarden/common/platform/biometrics/biometric-state.service"; import { PasswordStrengthServiceAbstraction } from "@bitwarden/common/tools/password-strength"; +import { DialogService } from "@bitwarden/components"; import { BiometricErrors, BiometricErrorTypes } from "../../models/biometricErrors"; +import { BrowserRouterService } from "../../platform/popup/services/browser-router.service"; +import { fido2PopoutSessionData$ } from "../../vault/popup/utils/fido2-popout-session-data"; @Component({ selector: "app-lock", @@ -31,8 +39,10 @@ export class LockComponent extends BaseLockComponent { biometricError: string; pendingBiometric = false; + fido2PopoutSessionData$ = fido2PopoutSessionData$(); constructor( + masterPasswordService: InternalMasterPasswordServiceAbstraction, router: Router, i18nService: I18nService, platformUtilsService: PlatformUtilsService, @@ -44,15 +54,21 @@ export class LockComponent extends BaseLockComponent { stateService: StateService, apiService: ApiService, logService: LogService, - keyConnectorService: KeyConnectorService, ngZone: NgZone, policyApiService: PolicyApiServiceAbstraction, policyService: InternalPolicyService, passwordStrengthService: PasswordStrengthServiceAbstraction, private authService: AuthService, - dialogService: DialogServiceAbstraction + dialogService: DialogService, + deviceTrustCryptoService: DeviceTrustCryptoServiceAbstraction, + userVerificationService: UserVerificationService, + pinCryptoService: PinCryptoServiceAbstraction, + private routerService: BrowserRouterService, + biometricStateService: BiometricStateService, + accountService: AccountService, ) { super( + masterPasswordService, router, i18nService, platformUtilsService, @@ -64,27 +80,45 @@ export class LockComponent extends BaseLockComponent { stateService, apiService, logService, - keyConnectorService, ngZone, policyApiService, policyService, passwordStrengthService, - dialogService + dialogService, + deviceTrustCryptoService, + userVerificationService, + pinCryptoService, + biometricStateService, + accountService, ); this.successRoute = "/tabs/current"; this.isInitialLockScreen = (window as any).previousPopupUrl == null; + + super.onSuccessfulSubmit = async () => { + const previousUrl = this.routerService.getPreviousUrl(); + if (previousUrl) { + // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.router.navigateByUrl(previousUrl); + } else { + // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.router.navigate([this.successRoute]); + } + }; } async ngOnInit() { await super.ngOnInit(); - const disableAutoBiometricsPrompt = - (await this.stateService.getDisableAutoBiometricsPrompt()) ?? true; + const autoBiometricsPrompt = await firstValueFrom( + this.biometricStateService.promptAutomatically$, + ); window.setTimeout(async () => { - document.getElementById(this.pinLock ? "pin" : "masterPassword").focus(); + document.getElementById(this.pinEnabled ? "pin" : "masterPassword")?.focus(); if ( this.biometricLock && - !disableAutoBiometricsPrompt && + autoBiometricsPrompt && this.isInitialLockScreen && (await this.authService.getAuthStatus()) === AuthenticationStatus.Locked ) { @@ -93,7 +127,7 @@ export class LockComponent extends BaseLockComponent { }, 100); } - async unlockBiometric(): Promise { + override async unlockBiometric(): Promise { if (!this.biometricLock) { return; } diff --git a/apps/browser/src/auth/popup/login-decryption-options/login-decryption-options.component.html b/apps/browser/src/auth/popup/login-decryption-options/login-decryption-options.component.html new file mode 100644 index 0000000000..32e3ea0c59 --- /dev/null +++ b/apps/browser/src/auth/popup/login-decryption-options/login-decryption-options.component.html @@ -0,0 +1,108 @@ +
+
+

+ {{ "loginInitiated" | i18n }} +

+
+ + +
diff --git a/apps/browser/src/auth/popup/login-decryption-options/login-decryption-options.component.ts b/apps/browser/src/auth/popup/login-decryption-options/login-decryption-options.component.ts new file mode 100644 index 0000000000..6231b02774 --- /dev/null +++ b/apps/browser/src/auth/popup/login-decryption-options/login-decryption-options.component.ts @@ -0,0 +1,39 @@ +import { Component } from "@angular/core"; +import { firstValueFrom } from "rxjs"; + +import { BaseLoginDecryptionOptionsComponent } from "@bitwarden/angular/auth/components/base-login-decryption-options.component"; + +import { postLogoutMessageListener$ } from "../utils/post-logout-message-listener"; + +@Component({ + selector: "browser-login-decryption-options", + templateUrl: "login-decryption-options.component.html", +}) +export class LoginDecryptionOptionsComponent extends BaseLoginDecryptionOptionsComponent { + override async createUser(): Promise { + try { + await super.createUser(); + await this.router.navigate(["/tabs/vault"]); + } catch (error) { + this.validationService.showError(error); + } + } + + override async logOut(): Promise { + // start listening for "switchAccountFinish" or "doneLoggingOut" + const messagePromise = firstValueFrom(postLogoutMessageListener$); + super.logOut(); + // wait for messages + const command = await messagePromise; + + // We should be routed/routing very soon but just in case, turn loading back off. + this.loading = false; + + // doneLoggingOut already has a message handler that will navigate us + if (command === "switchAccountFinish") { + // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.router.navigate(["/"]); + } + } +} diff --git a/apps/browser/src/auth/popup/login-via-auth-request.component.html b/apps/browser/src/auth/popup/login-via-auth-request.component.html new file mode 100644 index 0000000000..2abff7bdb9 --- /dev/null +++ b/apps/browser/src/auth/popup/login-via-auth-request.component.html @@ -0,0 +1,61 @@ + diff --git a/apps/browser/src/auth/popup/login-via-auth-request.component.ts b/apps/browser/src/auth/popup/login-via-auth-request.component.ts new file mode 100644 index 0000000000..52f311ce7b --- /dev/null +++ b/apps/browser/src/auth/popup/login-via-auth-request.component.ts @@ -0,0 +1,85 @@ +import { Location } from "@angular/common"; +import { Component } from "@angular/core"; +import { Router } from "@angular/router"; + +import { LoginViaAuthRequestComponent as BaseLoginWithDeviceComponent } from "@bitwarden/angular/auth/components/login-via-auth-request.component"; +import { + AuthRequestServiceAbstraction, + LoginStrategyServiceAbstraction, + LoginEmailServiceAbstraction, +} from "@bitwarden/auth/common"; +import { ApiService } from "@bitwarden/common/abstractions/api.service"; +import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { AnonymousHubService } from "@bitwarden/common/auth/abstractions/anonymous-hub.service"; +import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; +import { DeviceTrustCryptoServiceAbstraction } from "@bitwarden/common/auth/abstractions/device-trust-crypto.service.abstraction"; +import { AppIdService } from "@bitwarden/common/platform/abstractions/app-id.service"; +import { CryptoFunctionService } from "@bitwarden/common/platform/abstractions/crypto-function.service"; +import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; +import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; +import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; +import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; +import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; +import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; +import { ValidationService } from "@bitwarden/common/platform/abstractions/validation.service"; +import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password"; +import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction"; + +@Component({ + selector: "app-login-via-auth-request", + templateUrl: "login-via-auth-request.component.html", +}) +export class LoginViaAuthRequestComponent extends BaseLoginWithDeviceComponent { + constructor( + router: Router, + cryptoService: CryptoService, + cryptoFunctionService: CryptoFunctionService, + appIdService: AppIdService, + passwordGenerationService: PasswordGenerationServiceAbstraction, + apiService: ApiService, + authService: AuthService, + logService: LogService, + environmentService: EnvironmentService, + i18nService: I18nService, + platformUtilsService: PlatformUtilsService, + anonymousHubService: AnonymousHubService, + validationService: ValidationService, + stateService: StateService, + loginEmailService: LoginEmailServiceAbstraction, + syncService: SyncService, + deviceTrustCryptoService: DeviceTrustCryptoServiceAbstraction, + authRequestService: AuthRequestServiceAbstraction, + loginStrategyService: LoginStrategyServiceAbstraction, + accountService: AccountService, + private location: Location, + ) { + super( + router, + cryptoService, + cryptoFunctionService, + appIdService, + passwordGenerationService, + apiService, + authService, + logService, + environmentService, + i18nService, + platformUtilsService, + anonymousHubService, + validationService, + stateService, + loginEmailService, + deviceTrustCryptoService, + authRequestService, + loginStrategyService, + accountService, + ); + super.onSuccessfulLogin = async () => { + await syncService.fullSync(true); + }; + } + + protected back() { + this.location.back(); + } +} diff --git a/apps/browser/src/auth/popup/login-with-device.component.html b/apps/browser/src/auth/popup/login-with-device.component.html deleted file mode 100644 index d794b7d212..0000000000 --- a/apps/browser/src/auth/popup/login-with-device.component.html +++ /dev/null @@ -1,36 +0,0 @@ - diff --git a/apps/browser/src/auth/popup/login-with-device.component.ts b/apps/browser/src/auth/popup/login-with-device.component.ts deleted file mode 100644 index cf0e57b5ee..0000000000 --- a/apps/browser/src/auth/popup/login-with-device.component.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { Component, OnDestroy, OnInit } from "@angular/core"; -import { Router } from "@angular/router"; - -import { LoginWithDeviceComponent as BaseLoginWithDeviceComponent } from "@bitwarden/angular/auth/components/login-with-device.component"; -import { AnonymousHubService } from "@bitwarden/common/abstractions/anonymousHub.service"; -import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; -import { LoginService } from "@bitwarden/common/auth/abstractions/login.service"; -import { AppIdService } from "@bitwarden/common/platform/abstractions/app-id.service"; -import { CryptoFunctionService } from "@bitwarden/common/platform/abstractions/crypto-function.service"; -import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; -import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; -import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; -import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; -import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; -import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; -import { ValidationService } from "@bitwarden/common/platform/abstractions/validation.service"; -import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password"; -import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction"; - -@Component({ - selector: "app-login-with-device", - templateUrl: "login-with-device.component.html", -}) -export class LoginWithDeviceComponent - extends BaseLoginWithDeviceComponent - implements OnInit, OnDestroy -{ - constructor( - router: Router, - cryptoService: CryptoService, - cryptoFunctionService: CryptoFunctionService, - appIdService: AppIdService, - passwordGenerationService: PasswordGenerationServiceAbstraction, - apiService: ApiService, - authService: AuthService, - logService: LogService, - environmentService: EnvironmentService, - i18nService: I18nService, - platformUtilsService: PlatformUtilsService, - anonymousHubService: AnonymousHubService, - validationService: ValidationService, - stateService: StateService, - loginService: LoginService, - syncService: SyncService - ) { - super( - router, - cryptoService, - cryptoFunctionService, - appIdService, - passwordGenerationService, - apiService, - authService, - logService, - environmentService, - i18nService, - platformUtilsService, - anonymousHubService, - validationService, - stateService, - loginService - ); - super.onSuccessfulLogin = async () => { - await syncService.fullSync(true); - }; - } -} diff --git a/apps/browser/src/auth/popup/login.component.html b/apps/browser/src/auth/popup/login.component.html index d3db706964..b24a25a0f1 100644 --- a/apps/browser/src/auth/popup/login.component.html +++ b/apps/browser/src/auth/popup/login.component.html @@ -44,11 +44,15 @@
- +
@@ -62,7 +66,7 @@
-
diff --git a/apps/browser/src/auth/popup/login.component.ts b/apps/browser/src/auth/popup/login.component.ts index 776b792fa1..ff0ee8a392 100644 --- a/apps/browser/src/auth/popup/login.component.ts +++ b/apps/browser/src/auth/popup/login.component.ts @@ -1,12 +1,17 @@ import { Component, NgZone } from "@angular/core"; import { FormBuilder } from "@angular/forms"; import { ActivatedRoute, Router } from "@angular/router"; +import { firstValueFrom } from "rxjs"; import { LoginComponent as BaseLoginComponent } from "@bitwarden/angular/auth/components/login.component"; import { FormValidationErrorsService } from "@bitwarden/angular/platform/abstractions/form-validation-errors.service"; -import { DevicesApiServiceAbstraction } from "@bitwarden/common/abstractions/devices/devices-api.service.abstraction"; -import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; -import { LoginService } from "@bitwarden/common/auth/abstractions/login.service"; +import { + LoginStrategyServiceAbstraction, + LoginEmailServiceAbstraction, +} from "@bitwarden/auth/common"; +import { DevicesApiServiceAbstraction } from "@bitwarden/common/auth/abstractions/devices-api.service.abstraction"; +import { SsoLoginServiceAbstraction } from "@bitwarden/common/auth/abstractions/sso-login.service.abstraction"; +import { WebAuthnLoginServiceAbstraction } from "@bitwarden/common/auth/abstractions/webauthn/webauthn-login.service.abstraction"; import { AppIdService } from "@bitwarden/common/platform/abstractions/app-id.service"; import { CryptoFunctionService } from "@bitwarden/common/platform/abstractions/crypto-function.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; @@ -29,7 +34,7 @@ export class LoginComponent extends BaseLoginComponent { constructor( devicesApiService: DevicesApiServiceAbstraction, appIdService: AppIdService, - authService: AuthService, + loginStrategyService: LoginStrategyServiceAbstraction, router: Router, protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService, @@ -43,12 +48,14 @@ export class LoginComponent extends BaseLoginComponent { formBuilder: FormBuilder, formValidationErrorService: FormValidationErrorsService, route: ActivatedRoute, - loginService: LoginService + loginEmailService: LoginEmailServiceAbstraction, + ssoLoginService: SsoLoginServiceAbstraction, + webAuthnLoginService: WebAuthnLoginServiceAbstraction, ) { super( devicesApiService, appIdService, - authService, + loginStrategyService, router, platformUtilsService, i18nService, @@ -61,7 +68,9 @@ export class LoginComponent extends BaseLoginComponent { formBuilder, formValidationErrorService, route, - loginService + loginEmailService, + ssoLoginService, + webAuthnLoginService, ); super.onSuccessfulLogin = async () => { await syncService.fullSync(true); @@ -70,18 +79,24 @@ export class LoginComponent extends BaseLoginComponent { this.showPasswordless = flagEnabled("showPasswordless"); if (this.showPasswordless) { - this.formGroup.controls.email.setValue(this.loginService.getEmail()); - this.formGroup.controls.rememberEmail.setValue(this.loginService.getRememberEmail()); + this.formGroup.controls.email.setValue(this.loginEmailService.getEmail()); + this.formGroup.controls.rememberEmail.setValue(this.loginEmailService.getRememberEmail()); + // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. + // eslint-disable-next-line @typescript-eslint/no-floating-promises this.validateEmail(); } } settings() { + // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. + // eslint-disable-next-line @typescript-eslint/no-floating-promises this.router.navigate(["environment"]); } async launchSsoBrowser() { - await this.loginService.saveEmailSettings(); + // Save off email for SSO + await this.ssoLoginService.setSsoEmail(this.formGroup.value.email); + await this.loginEmailService.saveEmailSettings(); // Generate necessary sso params const passwordOptions: any = { type: "password", @@ -99,10 +114,11 @@ export class LoginComponent extends BaseLoginComponent { const codeVerifierHash = await this.cryptoFunctionService.hash(codeVerifier, "sha256"); const codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash); - await this.stateService.setSsoCodeVerifier(codeVerifier); - await this.stateService.setSsoState(state); + await this.ssoLoginService.setCodeVerifier(codeVerifier); + await this.ssoLoginService.setSsoState(state); - let url = this.environmentService.getWebVaultUrl(); + const env = await firstValueFrom(this.environmentService.environment$); + let url = env.getWebVaultUrl(); if (url == null) { url = "https://vault.bitwarden.com"; } @@ -120,7 +136,7 @@ export class LoginComponent extends BaseLoginComponent { "&codeChallenge=" + codeChallenge + "&email=" + - encodeURIComponent(this.formGroup.controls.email.value) + encodeURIComponent(this.formGroup.controls.email.value), ); } } diff --git a/apps/browser/src/auth/popup/register.component.html b/apps/browser/src/auth/popup/register.component.html index 6386571e60..e2f4f2e7d1 100644 --- a/apps/browser/src/auth/popup/register.component.html +++ b/apps/browser/src/auth/popup/register.component.html @@ -120,7 +120,9 @@ -
+
+ +
diff --git a/apps/browser/src/auth/popup/register.component.ts b/apps/browser/src/auth/popup/register.component.ts index ad7a9e1cc6..f46289f978 100644 --- a/apps/browser/src/auth/popup/register.component.ts +++ b/apps/browser/src/auth/popup/register.component.ts @@ -2,12 +2,11 @@ import { Component } from "@angular/core"; import { UntypedFormBuilder } from "@angular/forms"; import { Router } from "@angular/router"; -import { RegisterComponent as BaseRegisterComponent } from "@bitwarden/angular/components/register.component"; +import { RegisterComponent as BaseRegisterComponent } from "@bitwarden/angular/auth/components/register.component"; import { FormValidationErrorsService } from "@bitwarden/angular/platform/abstractions/form-validation-errors.service"; -import { DialogServiceAbstraction } from "@bitwarden/angular/services/dialog"; +import { LoginStrategyServiceAbstraction } from "@bitwarden/auth/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { AuditService } from "@bitwarden/common/abstractions/audit.service"; -import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; @@ -15,6 +14,7 @@ import { LogService } from "@bitwarden/common/platform/abstractions/log.service" import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password"; +import { DialogService } from "@bitwarden/components"; @Component({ selector: "app-register", @@ -27,7 +27,7 @@ export class RegisterComponent extends BaseRegisterComponent { constructor( formValidationErrorService: FormValidationErrorsService, formBuilder: UntypedFormBuilder, - authService: AuthService, + loginStrategyService: LoginStrategyServiceAbstraction, router: Router, i18nService: I18nService, cryptoService: CryptoService, @@ -38,12 +38,12 @@ export class RegisterComponent extends BaseRegisterComponent { environmentService: EnvironmentService, logService: LogService, auditService: AuditService, - dialogService: DialogServiceAbstraction + dialogService: DialogService, ) { super( formValidationErrorService, formBuilder, - authService, + loginStrategyService, router, i18nService, cryptoService, @@ -54,7 +54,7 @@ export class RegisterComponent extends BaseRegisterComponent { environmentService, logService, auditService, - dialogService + dialogService, ); } } diff --git a/apps/browser/src/auth/popup/remove-password.component.html b/apps/browser/src/auth/popup/remove-password.component.html index 8024023976..793bcff3e0 100644 --- a/apps/browser/src/auth/popup/remove-password.component.html +++ b/apps/browser/src/auth/popup/remove-password.component.html @@ -10,7 +10,7 @@
-

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

+

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

+

{{ "insertYubiKey" | i18n }}

@@ -85,9 +86,10 @@
+
- +
@@ -98,6 +100,7 @@
+

{{ "webAuthnNewTab" | i18n }}

@@ -106,35 +109,94 @@
- -
-
-
-
- - + + +
+

+ {{ "duoRequiredForAccount" | i18n }} +

+ +

+ {{ "popoutTheExtensionToCompleteLogin" | i18n }} +

+ + +

{{ "launchDuoAndFollowStepsToFinishLoggingIn" | i18n }}

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

{{ "noTwoStepProviders" | i18n }}

{{ "noTwoStepProviders2" | i18n }}

+
-

- -

+ + + + + +