Merge branch 'main' of https://github.com/bitwarden/clients into tools/pm-6195/refactor-injection-of-services-in-browser-services-module

This commit is contained in:
Daniel James Smith 2024-05-17 13:57:41 +02:00
commit 03356026bd
No known key found for this signature in database
GPG Key ID: DA2E2EC600E1289B
953 changed files with 26645 additions and 13776 deletions

1
.github/CODEOWNERS vendored
View File

@ -57,6 +57,7 @@ libs/common/src/admin-console @bitwarden/team-admin-console-dev
libs/admin-console @bitwarden/team-admin-console-dev
## Billing team files ##
apps/browser/src/billing @bitwarden/team-billing-dev
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

View File

@ -164,6 +164,10 @@ jobs:
run: npm run dist:mv3
working-directory: browser-source/apps/browser
- name: Build Chrome Manifest v3 Beta
run: npm run dist:chrome:beta
working-directory: browser-source/apps/browser
- name: Gulp
run: gulp ci
working-directory: browser-source/apps/browser
@ -196,6 +200,13 @@ jobs:
path: browser-source/apps/browser/dist/dist-chrome-mv3.zip
if-no-files-found: error
- name: Upload Chrome MV3 Beta artifact (DO NOT USE FOR PROD)
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: DO-NOT-USE-FOR-PROD-dist-chrome-MV3-beta-${{ env._BUILD_NUMBER }}.zip
path: browser-source/apps/browser/dist/dist-chrome-mv3-beta.zip
if-no-files-found: error
- name: Upload Firefox artifact
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:

View File

@ -230,6 +230,17 @@ jobs:
url: https://github.com/bitwarden/clients/actions/runs/${{ github.run_id }}
AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
update-summary:
name: Display commit
needs: artifact-check
runs-on: ubuntu-22.04
steps:
- name: Display commit SHA
run: |
REPO_URL="https://github.com/bitwarden/clients/commit"
COMMIT_SHA="${{ needs.artifact-check.outputs.artifact-build-commit }}"
echo ":steam_locomotive: View [commit]($REPO_URL/$COMMIT_SHA)" >> $GITHUB_STEP_SUMMARY
azure-deploy:
name: Deploy Web Vault to ${{ inputs.environment }} Storage Account
needs:

View File

@ -955,11 +955,7 @@ jobs:
keyvault: "bitwarden-ci"
secrets: "aws-electron-access-id,
aws-electron-access-key,
aws-electron-bucket-name,
r2-electron-access-id,
r2-electron-access-key,
r2-electron-bucket-name,
cf-prod-account"
aws-electron-bucket-name"
- name: Download all artifacts
uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
@ -985,20 +981,6 @@ jobs:
--recursive \
--quiet
- name: Publish artifacts to R2
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 }}
AWS_DEFAULT_REGION: 'us-east-1'
AWS_S3_BUCKET_NAME: ${{ steps.retrieve-secrets.outputs.r2-electron-bucket-name }}
CF_ACCOUNT: ${{ steps.retrieve-secrets.outputs.cf-prod-account }}
working-directory: apps/desktop/artifacts
run: |
aws s3 cp ./ $AWS_S3_BUCKET_NAME/desktop/ \
--recursive \
--quiet \
--endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com
- name: Update deployment status to Success
if: ${{ success() }}
uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3

View File

@ -115,11 +115,7 @@ jobs:
keyvault: "bitwarden-ci"
secrets: "aws-electron-access-id,
aws-electron-access-key,
aws-electron-bucket-name,
r2-electron-access-id,
r2-electron-access-key,
r2-electron-bucket-name,
cf-prod-account"
aws-electron-bucket-name"
- name: Download all artifacts
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
@ -169,21 +165,6 @@ jobs:
--recursive \
--quiet
- name: Publish artifacts to R2
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 }}
AWS_DEFAULT_REGION: 'us-east-1'
AWS_S3_BUCKET_NAME: ${{ steps.retrieve-secrets.outputs.r2-electron-bucket-name }}
CF_ACCOUNT: ${{ steps.retrieve-secrets.outputs.cf-prod-account }}
working-directory: apps/desktop/artifacts
run: |
aws s3 cp ./ $AWS_S3_BUCKET_NAME/desktop/ \
--recursive \
--quiet \
--endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com
- name: Get checksum files
uses: bitwarden/gh-actions/get-checksum@main
with:

View File

@ -31,29 +31,21 @@ jobs:
keyvault: "bitwarden-ci"
secrets: "aws-electron-access-id,
aws-electron-access-key,
aws-electron-bucket-name,
r2-electron-access-id,
r2-electron-access-key,
r2-electron-bucket-name,
cf-prod-account"
aws-electron-bucket-name"
- name: Download channel update info files from R2
- name: Download channel update info files from S3
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 }}
AWS_DEFAULT_REGION: 'us-east-1'
AWS_S3_BUCKET_NAME: ${{ steps.retrieve-secrets.outputs.r2-electron-bucket-name }}
CF_ACCOUNT: ${{ steps.retrieve-secrets.outputs.cf-prod-account }}
AWS_ACCESS_KEY_ID: ${{ steps.retrieve-secrets.outputs.aws-electron-access-id }}
AWS_SECRET_ACCESS_KEY: ${{ steps.retrieve-secrets.outputs.aws-electron-access-key }}
AWS_DEFAULT_REGION: 'us-west-2'
AWS_S3_BUCKET_NAME: ${{ steps.retrieve-secrets.outputs.aws-electron-bucket-name }}
run: |
aws s3 cp $AWS_S3_BUCKET_NAME/desktop/latest.yml . \
--quiet \
--endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com
aws s3 cp $AWS_S3_BUCKET_NAME/desktop/latest-linux.yml . \
--quiet \
--endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com
aws s3 cp $AWS_S3_BUCKET_NAME/desktop/latest-mac.yml . \
--quiet \
--endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com
- name: Check new rollout percentage
env:
@ -95,20 +87,3 @@ jobs:
aws s3 cp latest-mac.yml $AWS_S3_BUCKET_NAME/desktop/ \
--acl "public-read"
- name: Publish channel update info files to R2
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 }}
AWS_DEFAULT_REGION: 'us-east-1'
AWS_S3_BUCKET_NAME: ${{ steps.retrieve-secrets.outputs.r2-electron-bucket-name }}
CF_ACCOUNT: ${{ steps.retrieve-secrets.outputs.cf-prod-account }}
run: |
aws s3 cp latest.yml $AWS_S3_BUCKET_NAME/desktop/ \
--endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com
aws s3 cp latest-linux.yml $AWS_S3_BUCKET_NAME/desktop/ \
--endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com
aws s3 cp latest-mac.yml $AWS_S3_BUCKET_NAME/desktop/ \
--endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com

View File

@ -4,11 +4,14 @@ import remarkGfm from "remark-gfm";
const config: StorybookConfig = {
stories: [
"../libs/auth/src/**/*.mdx",
"../libs/auth/src/**/*.stories.@(js|jsx|ts|tsx)",
"../libs/components/src/**/*.mdx",
"../libs/components/src/**/*.stories.@(js|jsx|ts|tsx)",
"../apps/web/src/**/*.mdx",
"../apps/web/src/**/*.stories.@(js|jsx|ts|tsx)",
"../apps/browser/src/**/*.mdx",
"../apps/browser/src/**/*.stories.@(js|jsx|ts|tsx)",
"../bitwarden_license/bit-web/src/**/*.mdx",
"../bitwarden_license/bit-web/src/**/*.stories.@(js|jsx|ts|tsx)",
],

View File

@ -1,12 +1,10 @@
{
"extends": "../tsconfig",
"compilerOptions": {
"types": ["node", "jest", "chrome"],
"allowSyntheticDefaultImports": true
},
"exclude": ["../src/test.setup.ts", "../apps/src/**/*.spec.ts", "../libs/**/*.spec.ts"],
"exclude": ["../src/test.setup.ts", "../apps/**/*.spec.ts", "../libs/**/*.spec.ts"],
"files": [
"./typings.d.ts",
"./preview.tsx",
"../libs/components/src/main.ts",
"../libs/components/src/polyfills.ts"

View File

@ -1,4 +0,0 @@
declare module "*.md" {
const content: string;
export default content;
}

View File

@ -5,5 +5,6 @@
"**/locales/*[^n]/messages.json": true,
"**/_locales/[^e]*/messages.json": true,
"**/_locales/*[^n]/messages.json": true
}
},
"rust-analyzer.linkedProjects": ["apps/desktop/desktop_native/Cargo.toml"]
}

View File

@ -142,7 +142,15 @@
"configDir": ".storybook",
"browserTarget": "components:build",
"compodoc": true,
"compodocArgs": ["-p", "./tsconfig.json", "-e", "json", "-d", "."],
"compodocArgs": [
"-p",
"./tsconfig.json",
"-e",
"json",
"-d",
".",
"--disableRoutesGraph"
],
"port": 6006
}
},

View File

@ -1,5 +1,5 @@
{
"dev_flags": {},
"devFlags": {},
"flags": {
"showPasswordless": true,
"enableCipherKeyEncryption": false,

View File

@ -1,9 +1,9 @@
{
"devFlags": {
"storeSessionDecrypted": false,
"managedEnvironment": {
"base": "https://localhost:8080"
}
},
"skipWelcomeOnInstall": true
},
"flags": {
"showPasswordless": true,

View File

@ -30,11 +30,27 @@ const filters = {
safari: ["!build/safari/**/*"],
};
/**
* Converts a number to a tuple containing two Uint16's
* @param num {number} This number is expected to be a integer style number with no decimals
*
* @returns {number[]} A tuple containing two elements that are both numbers.
*/
function numToUint16s(num) {
var arr = new ArrayBuffer(4);
var view = new DataView(arr);
view.setUint32(0, num, false);
return [view.getUint16(0), view.getUint16(2)];
}
function buildString() {
var build = "";
if (process.env.MANIFEST_VERSION) {
build = `-mv${process.env.MANIFEST_VERSION}`;
}
if (process.env.BETA_BUILD === "1") {
build += "-beta";
}
if (process.env.BUILD_NUMBER && process.env.BUILD_NUMBER !== "") {
build = `-${process.env.BUILD_NUMBER}`;
}
@ -65,6 +81,9 @@ function distFirefox() {
manifest.optional_permissions = manifest.optional_permissions.filter(
(permission) => permission !== "privacy",
);
if (process.env.BETA_BUILD === "1") {
manifest = applyBetaLabels(manifest);
}
return manifest;
});
}
@ -72,6 +91,9 @@ function distFirefox() {
function distOpera() {
return dist("opera", (manifest) => {
delete manifest.applications;
if (process.env.BETA_BUILD === "1") {
manifest = applyBetaLabels(manifest);
}
return manifest;
});
}
@ -81,6 +103,9 @@ function distChrome() {
delete manifest.applications;
delete manifest.sidebar_action;
delete manifest.commands._execute_sidebar_action;
if (process.env.BETA_BUILD === "1") {
manifest = applyBetaLabels(manifest);
}
return manifest;
});
}
@ -90,6 +115,9 @@ function distEdge() {
delete manifest.applications;
delete manifest.sidebar_action;
delete manifest.commands._execute_sidebar_action;
if (process.env.BETA_BUILD === "1") {
manifest = applyBetaLabels(manifest);
}
return manifest;
});
}
@ -210,6 +238,9 @@ async function safariCopyBuild(source, dest) {
delete manifest.commands._execute_sidebar_action;
delete manifest.optional_permissions;
manifest.permissions.push("nativeMessaging");
if (process.env.BETA_BUILD === "1") {
manifest = applyBetaLabels(manifest);
}
return manifest;
}),
),
@ -235,6 +266,30 @@ async function ciCoverage(cb) {
.pipe(gulp.dest(paths.coverage));
}
function applyBetaLabels(manifest) {
manifest.name = "Bitwarden Password Manager BETA";
manifest.short_name = "Bitwarden BETA";
manifest.description = "THIS EXTENSION IS FOR BETA TESTING BITWARDEN.";
if (process.env.GITHUB_RUN_ID) {
const existingVersionParts = manifest.version.split("."); // 3 parts expected 2024.4.0
// GITHUB_RUN_ID is a number like: 8853654662
// which will convert to [ 4024, 3206 ]
// and a single incremented id of 8853654663 will become [ 4024, 3207 ]
const runIdParts = numToUint16s(parseInt(process.env.GITHUB_RUN_ID));
// Only use the first 2 parts from the given version number and base the other 2 numbers from the GITHUB_RUN_ID
// Example: 2024.4.4024.3206
const betaVersion = `${existingVersionParts[0]}.${existingVersionParts[1]}.${runIdParts[0]}.${runIdParts[1]}`;
manifest.version_name = `${betaVersion} beta - ${process.env.GITHUB_SHA.slice(0, 8)}`;
manifest.version = betaVersion;
} else {
manifest.version = `${manifest.version}.0`;
}
return manifest;
}
exports["dist:firefox"] = distFirefox;
exports["dist:chrome"] = distChrome;
exports["dist:opera"] = distOpera;

View File

@ -1,16 +1,20 @@
{
"name": "@bitwarden/browser",
"version": "2024.4.1",
"version": "2024.5.0",
"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": "cross-env MANIFEST_VERSION=3 webpack",
"build:mv2": "webpack",
"build:watch": "cross-env MANIFEST_VERSION=3 webpack --watch",
"build:watch:mv2": "webpack --watch",
"build:prod": "cross-env NODE_ENV=production webpack",
"build:prod:beta": "cross-env BETA_BUILD=1 NODE_ENV=production webpack",
"build:prod:watch": "cross-env NODE_ENV=production webpack --watch",
"dist": "npm run build:prod && gulp dist",
"dist:beta": "npm run build:prod:beta && cross-env BETA_BUILD=1 gulp dist",
"dist:mv3": "cross-env MANIFEST_VERSION=3 npm run build:prod && cross-env MANIFEST_VERSION=3 gulp dist",
"dist:mv3:beta": "cross-env MANIFEST_VERSION=3 npm run build:prod:beta && cross-env MANIFEST_VERSION=3 BETA_BUILD=1 gulp dist",
"dist:chrome": "npm run build:prod && gulp dist:chrome",
"dist:chrome:beta": "cross-env MANIFEST_VERSION=3 npm run build:prod:beta && cross-env MANIFEST_VERSION=3 BETA_BUILD=1 gulp dist:chrome",
"dist:firefox": "npm run build:prod && gulp dist:firefox",
"dist:opera": "npm run build:prod && gulp dist:opera",
"dist:safari": "npm run build:prod && gulp dist:safari",

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "قم بالتسجيل أو إنشاء حساب جديد للوصول إلى خزنتك الآمنة."
@ -374,12 +374,21 @@
"other": {
"message": "الأخرى"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "أعدنّ طريقة إلغاء القُفْل لتغيير إجراء مهلة المخزن الخاص بك."
},
"unlockMethodNeeded": {
"message": "إعداد طريقة إلغاء القفل في الإعدادات"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "قيِّم هذه الإضافة"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "قفل المخزن"
},
"privateModeWarning": {
"message": "دعم الوضع الخاص تجريبي وبعض الميزات محدودة."
},
"customFields": {
"message": "الحقول المخصصة"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden Parol Meneceri",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "Bitwarden evdə və ya işdə olarkən bütün parol, keçid açarı və həssas məlumatlarınızı asanlıqla qoruyur",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Güvənli anbarınıza müraciət etmək üçün giriş edin və ya yeni bir hesab yaradın."
@ -374,12 +374,21 @@
"other": {
"message": "Digər"
},
"unlockMethods": {
"message": "Kilid açma seçimləri"
},
"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"
},
"sessionTimeoutHeader": {
"message": "Seans vaxt bitməsi"
},
"otherOptions": {
"message": "Digər seçimlər"
},
"rateExtension": {
"message": "Uzantını qiymətləndir"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Anbarı kilidlə"
},
"privateModeWarning": {
"message": "Gizli rejim dəstəyi təcrübidir və bəzi özəlliklər limitlidir."
},
"customFields": {
"message": "Özəl sahələr"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Konsolu"
},
"accountSecurity": {
"message": "Hesab güvənliyi"
},
"notifications": {
"message": "Bildirişlər"
},
"appearance": {
"message": "Görünüş"
},
"errorAssigningTargetCollection": {
"message": "Hədəf kolleksiyaya təyin etmə xətası."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Увайдзіце або стварыце новы ўліковы запіс для доступу да бяспечнага сховішча."
@ -374,12 +374,21 @@
"other": {
"message": "Iншае"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Наладзіць метад разблакіроўкі для змянення дзеяння часу чакання вашага сховішча."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Ацаніць пашырэнне"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Заблакіраваць сховішча"
},
"privateModeWarning": {
"message": "Прыватны рэжым - гэта эксперыментальная функцыя і некаторыя магчымасці ў ім абмежаваны."
},
"customFields": {
"message": "Карыстальніцкія палі"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -3,12 +3,12 @@
"message": "Битуорден (Bitwarden)"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden — управител на пароли",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "У дома, на работа или на път Битуорден защитава всички Ваши пароли, секретни ключове и лична информация",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Впишете се или създайте нов абонамент, за да достъпите защитен трезор."
@ -374,12 +374,21 @@
"other": {
"message": "Други"
},
"unlockMethods": {
"message": "Настройки за отключване"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Задайте метод за отключване, за да може да промените действието при изтичане на времето за достъп до трезора."
},
"unlockMethodNeeded": {
"message": "Задайте метод за отключване в Настройките"
},
"sessionTimeoutHeader": {
"message": "Изтичане на времето за сесията"
},
"otherOptions": {
"message": "Други настройки"
},
"rateExtension": {
"message": "Оценяване на разширението"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Заключване на трезора"
},
"privateModeWarning": {
"message": "Поддръжката на частния режим е експериментална и някои функционалности са ограничени."
},
"customFields": {
"message": "Допълнителни полета"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Административна конзола"
},
"accountSecurity": {
"message": "Защита на регистрацията"
},
"notifications": {
"message": "Известия"
},
"appearance": {
"message": "Външен вид"
},
"errorAssigningTargetCollection": {
"message": "Грешка при задаването на целева колекция."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "আপনার সুরক্ষিত ভল্টে প্রবেশ করতে লগ ইন করুন অথবা একটি নতুন অ্যাকাউন্ট তৈরি করুন।"
@ -374,12 +374,21 @@
"other": {
"message": "অন্যান্য"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "এক্সটেনশনটি মূল্যায়ন করুন"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "ভল্ট লক করুন"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "পছন্দসই ক্ষেত্র"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Prijavite se ili napravite novi račun da biste pristupili svom sigurnom trezoru."
@ -374,12 +374,21 @@
"other": {
"message": "Other"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lock the vault"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom fields"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden - Gestor de contrasenyes",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "A casa, a la feina o en moviment, Bitwarden protegeix totes les contrasenyes, claus de pas i informació sensible",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Inicieu sessió o creeu un compte nou per accedir a la caixa forta."
@ -173,10 +173,10 @@
"message": "Canvia la contrasenya mestra"
},
"continueToWebApp": {
"message": "Continue to web app?"
"message": "Continua cap a l'aplicació web?"
},
"changeMasterPasswordOnWebConfirmation": {
"message": "You can change your master password on the Bitwarden web app."
"message": "Podeu canviar la vostra contrasenya mestra a l'aplicació web de Bitwarden."
},
"fingerprintPhrase": {
"message": "Frase d'empremta digital",
@ -374,12 +374,21 @@
"other": {
"message": "Altres"
},
"unlockMethods": {
"message": "Unlock options"
},
"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ó"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Valora aquesta extensió"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Tanca la caixa forta"
},
"privateModeWarning": {
"message": "El suport del mode privat és experimental i algunes funcions són limitades."
},
"customFields": {
"message": "Camps personalitzats"
},
@ -3001,7 +3007,7 @@
"description": "Notification message for when saving credentials has failed."
},
"success": {
"message": "Success"
"message": "Èxit"
},
"removePasskey": {
"message": "Suprimeix la clau de pas"
@ -3010,26 +3016,35 @@
"message": "Clau de pas suprimida"
},
"unassignedItemsBannerNotice": {
"message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console."
"message": "Avís: els elements de l'organització no assignats ja no són visibles a la visualització de Totes les caixes fortes i només es poden accedir des de la Consola d'administració."
},
"unassignedItemsBannerSelfHostNotice": {
"message": "Notice: On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console."
"message": "Avís: el 16 de maig de 2024, els elements de l'organització no assignats deixaran de ser visibles a la visualització de Totes les caixes fortes i només es podran accedir des de la Consola d'administració."
},
"unassignedItemsBannerCTAPartOne": {
"message": "Assign these items to a collection from the",
"message": "Assigna aquests elements a una col·lecció de",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"unassignedItemsBannerCTAPartTwo": {
"message": "to make them visible.",
"message": "per fer-los visibles.",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"adminConsole": {
"message": "Admin Console"
"message": "Consola d'administració"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
"message": "S'ha produït un error en assignar la col·lecció de destinació."
},
"errorAssigningTargetFolder": {
"message": "Error assigning target folder."
"message": "S'ha produït un error en assignar la carpeta de destinació."
}
}

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden - Správce hesel",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "Bitwarden zabezpečí všechna Vaše hesla, přístupové klíče a citlivé informace doma, v práci nebo na cestách",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Pro přístup do Vašeho bezpečného trezoru se přihlaste nebo si vytvořte nový účet."
@ -374,12 +374,21 @@
"other": {
"message": "Ostatní"
},
"unlockMethods": {
"message": "Volby odemknutí"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Nastavte metodu odemknutí, abyste změnili časový limit Vašeho trezoru."
},
"unlockMethodNeeded": {
"message": "Nastavit metodu odemknutí v Nastavení"
},
"sessionTimeoutHeader": {
"message": "Časový limit relace"
},
"otherOptions": {
"message": "Další volby"
},
"rateExtension": {
"message": "Ohodnotit rozšíření"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Zamkne trezor."
},
"privateModeWarning": {
"message": "Podpora soukromého režimu je experimentální a některé funkce jsou omezené."
},
"customFields": {
"message": "Vlastní pole"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Konzole správce"
},
"accountSecurity": {
"message": "Zabezpečení účtu"
},
"notifications": {
"message": "Oznámení"
},
"appearance": {
"message": "Vzhled"
},
"errorAssigningTargetCollection": {
"message": "Chyba při přiřazování cílové kolekce."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Mewngofnodwch neu crëwch gyfrif newydd i gael mynediad i'ch cell ddiogel."
@ -23,7 +23,7 @@
"message": "Enterprise single sign-on"
},
"cancel": {
"message": "Cancel"
"message": "Canslo"
},
"close": {
"message": "Cau"
@ -318,7 +318,7 @@
"message": "Golygu"
},
"view": {
"message": "View"
"message": "Gweld"
},
"noItemsInList": {
"message": "Does dim eitemau i'w rhestru."
@ -374,12 +374,21 @@
"other": {
"message": "Gosodiadau eraill"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rhoi eich barn ar yr estyniad"
},
@ -549,10 +558,10 @@
"message": "Ydych chi'n siŵr eich bod am allgofnodi?"
},
"yes": {
"message": "Yes"
"message": "Ydw"
},
"no": {
"message": "No"
"message": "Na"
},
"unexpectedError": {
"message": "An unexpected error has occurred."
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Cloi'r gell"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Meysydd addasedig"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden Adgangskodehåndtering",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "Hjemme, på arbejde eller på farten sikrer Bitwarden nemt alle adgangskoder, adgangskort og sensitive oplysninger",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Log ind eller opret en ny konto for at få adgang til din sikre boks."
@ -374,12 +374,21 @@
"other": {
"message": "Andre"
},
"unlockMethods": {
"message": "Oplåsningsmuligheder"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Opsæt en oplåsningsmetode til at ændre bokstimeouthandlingen."
},
"unlockMethodNeeded": {
"message": "Opsæt en oplåsningsmetode i Indstillinger"
},
"sessionTimeoutHeader": {
"message": "Sessionstimeout"
},
"otherOptions": {
"message": "Andre innstillinger"
},
"rateExtension": {
"message": "Bedøm udvidelsen"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lås boksen"
},
"privateModeWarning": {
"message": "Understøttelse af privat tilstand er eksperimentel, og nogle funktioner er begrænsede."
},
"customFields": {
"message": "Brugerdefinerede felter"
},
@ -2393,7 +2399,7 @@
"message": "Generelt"
},
"display": {
"message": "Display"
"message": "Skærm"
},
"accountSuccessfullyCreated": {
"message": "Konto oprettet!"
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin-konsol"
},
"accountSecurity": {
"message": "Kontosikkerhed"
},
"notifications": {
"message": "Notifikationer"
},
"appearance": {
"message": "Udseende"
},
"errorAssigningTargetCollection": {
"message": "Fejl ved tildeling af målsamling."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden Passwortmanager",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "Zu Hause, am Arbeitsplatz oder unterwegs schützt Bitwarden Passwörter, Passkeys und vertrauliche Informationen",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Melde dich an oder erstelle ein neues Konto, um auf deinen Tresor zuzugreifen."
@ -173,10 +173,10 @@
"message": "Master-Passwort ändern"
},
"continueToWebApp": {
"message": "Continue to web app?"
"message": "Weiter zur Web-App?"
},
"changeMasterPasswordOnWebConfirmation": {
"message": "You can change your master password on the Bitwarden web app."
"message": "Du kannst dein Master-Passwort in der Bitwarden Web-App ändern."
},
"fingerprintPhrase": {
"message": "Fingerabdruck-Phrase",
@ -374,12 +374,21 @@
"other": {
"message": "Sonstige"
},
"unlockMethods": {
"message": "Entsperroptionen"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Richte eine Entsperrmethode ein, um deine Aktion bei Timeout-Timeout zu ändern."
},
"unlockMethodNeeded": {
"message": "Lege eine Entsperrmethode in den Einstellungen fest"
},
"sessionTimeoutHeader": {
"message": "Sitzungs-Timeout"
},
"otherOptions": {
"message": "Andere Optionen"
},
"rateExtension": {
"message": "Erweiterung bewerten"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Den Tresor sperren"
},
"privateModeWarning": {
"message": "Die Unterstützung des privaten Modus ist experimentell und einige Funktionen sind eingeschränkt."
},
"customFields": {
"message": "Benutzerdefinierte Felder"
},
@ -3001,7 +3007,7 @@
"description": "Notification message for when saving credentials has failed."
},
"success": {
"message": "Success"
"message": "Erfolg"
},
"removePasskey": {
"message": "Passkey entfernen"
@ -3010,21 +3016,30 @@
"message": "Passkey entfernt"
},
"unassignedItemsBannerNotice": {
"message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console."
"message": "Hinweis: Nicht zugeordnete Organisationseinträge sind nicht mehr in der Ansicht aller Tresore sichtbar und nur über die Administrator-Konsole zugänglich."
},
"unassignedItemsBannerSelfHostNotice": {
"message": "Notice: On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console."
"message": "Hinweis: Ab dem 16. Mai 2024 sind nicht zugewiesene Organisationselemente nicht mehr in der Ansicht aller Tresore sichtbar und nur über die Administrator-Konsole zugänglich."
},
"unassignedItemsBannerCTAPartOne": {
"message": "Assign these items to a collection from the",
"message": "Weise diese Einträge einer Sammlung aus der",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"unassignedItemsBannerCTAPartTwo": {
"message": "to make them visible.",
"message": "zu, um sie sichtbar zu machen.",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"adminConsole": {
"message": "Admin Console"
"message": "Administrator-Konsole"
},
"accountSecurity": {
"message": "Kontosicherheit"
},
"notifications": {
"message": "Benachrichtigungen"
},
"appearance": {
"message": "Aussehen"
},
"errorAssigningTargetCollection": {
"message": "Fehler beim Zuweisen der Ziel-Sammlung."

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Συνδεθείτε ή δημιουργήστε ένα νέο λογαριασμό για να αποκτήσετε πρόσβαση στο ασφαλές vault σας."
@ -374,12 +374,21 @@
"other": {
"message": "Άλλες"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Ρυθμίστε μια μέθοδο ξεκλειδώματος για να αλλάξετε την ενέργεια χρονικού ορίου θησαυ/κιου."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Βαθμολογήστε την επέκταση"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Κλειδώστε το vault"
},
"privateModeWarning": {
"message": "Η υποστήριξη ιδιωτικής λειτουργίας είναι πειραματική και ορισμένες δυνατότητες είναι περιορισμένες."
},
"customFields": {
"message": "Προσαρμοσμένα Πεδία"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Log in or create a new account to access your secure vault."
@ -374,12 +374,21 @@
"other": {
"message": "Other"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lock the vault"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom fields"
},
@ -2171,6 +2177,108 @@
"forwardedEmailDesc": {
"message": "Generate an email alias with an external forwarding service."
},
"forwarderError": {
"message": "$SERVICENAME$ error: $ERRORMESSAGE$",
"description": "Reports an error returned by a forwarding service to the user.",
"placeholders": {
"servicename": {
"content": "$1",
"example": "SimpleLogin"
},
"errormessage": {
"content": "$2",
"example": "Invalid characters in domain name."
}
}
},
"forwarderGeneratedBy": {
"message": "Generated by Bitwarden.",
"description": "Displayed with the address on the forwarding service's configuration screen."
},
"forwarderGeneratedByWithWebsite": {
"message": "Website: $WEBSITE$. Generated by Bitwarden.",
"description": "Displayed with the address on the forwarding service's configuration screen.",
"placeholders": {
"WEBSITE": {
"content": "$1",
"example": "www.example.com"
}
}
},
"forwaderInvalidToken": {
"message": "Invalid $SERVICENAME$ API token",
"description": "Displayed when the user's API token is empty or rejected by the forwarding service.",
"placeholders": {
"servicename": {
"content": "$1",
"example": "SimpleLogin"
}
}
},
"forwaderInvalidTokenWithMessage": {
"message": "Invalid $SERVICENAME$ API token: $ERRORMESSAGE$",
"description": "Displayed when the user's API token is rejected by the forwarding service with an error message.",
"placeholders": {
"servicename": {
"content": "$1",
"example": "SimpleLogin"
},
"errormessage": {
"content": "$2",
"example": "Please verify your email address to continue."
}
}
},
"forwarderNoAccountId": {
"message": "Unable to obtain $SERVICENAME$ masked email account ID.",
"description": "Displayed when the forwarding service fails to return an account ID.",
"placeholders": {
"servicename": {
"content": "$1",
"example": "SimpleLogin"
}
}
},
"forwarderNoDomain": {
"message": "Invalid $SERVICENAME$ domain.",
"description": "Displayed when the domain is empty or domain authorization failed at the forwarding service.",
"placeholders": {
"servicename": {
"content": "$1",
"example": "SimpleLogin"
}
}
},
"forwarderNoUrl": {
"message": "Invalid $SERVICENAME$ url.",
"description": "Displayed when the url of the forwarding service wasn't supplied.",
"placeholders": {
"servicename": {
"content": "$1",
"example": "SimpleLogin"
}
}
},
"forwarderUnknownError": {
"message": "Unknown $SERVICENAME$ error occurred.",
"description": "Displayed when the forwarding service failed due to an unknown error.",
"placeholders": {
"servicename": {
"content": "$1",
"example": "SimpleLogin"
}
}
},
"forwarderUnknownForwarder": {
"message": "Unknown forwarder: '$SERVICENAME$'.",
"description": "Displayed when the forwarding service is not supported.",
"placeholders": {
"servicename": {
"content": "$1",
"example": "JustTrust.us"
}
}
},
"hostname": {
"message": "Hostname",
"description": "Part of a URL."
@ -3026,10 +3134,22 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},
"errorAssigningTargetFolder": {
"message": "Error assigning target folder."
},
"new": {
"message": "New"
}
}

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Log in or create a new account to access your secure vault."
@ -374,12 +374,21 @@
"other": {
"message": "Other"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lock the vault"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom fields"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Log in or create a new account to access your secure vault."
@ -226,7 +226,7 @@
"message": "Help & feedback"
},
"helpCenter": {
"message": "Bitwarden Help center"
"message": "Bitwarden Help centre"
},
"communityForums": {
"message": "Explore Bitwarden community forums"
@ -374,12 +374,21 @@
"other": {
"message": "Other"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the extension"
},
@ -728,7 +737,7 @@
"message": "Change the application's colour theme."
},
"themeDescAlt": {
"message": "Change the application's color theme. Applies to all logged in accounts."
"message": "Change the application's colour theme. Applies to all logged in accounts."
},
"dark": {
"message": "Dark",
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lock the vault"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom fields"
},
@ -1168,7 +1174,7 @@
"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."
"message": "Show a recognisable image next to each login. Applies to all logged in accounts."
},
"enableBadgeCounter": {
"message": "Show badge counter"
@ -1733,7 +1739,7 @@
"message": "An organization policy is affecting your ownership options."
},
"personalOwnershipPolicyInEffectImports": {
"message": "An organization policy has blocked importing items into your individual vault."
"message": "An organisation policy has blocked importing items into your individual vault."
},
"excludedDomains": {
"message": "Excluded Domains"
@ -1993,7 +1999,7 @@
"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."
},
"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": "Your master password does not meet one or more of your organisation 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."
},
"resetPasswordPolicyAutoEnroll": {
"message": "Automatic Enrollment"
@ -2009,11 +2015,11 @@
"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.",
"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 organization requires you to set a master password.",
"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": {
@ -2040,7 +2046,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": "Your organisation 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$.",
"placeholders": {
"hours": {
"content": "$1",
@ -2057,7 +2063,7 @@
}
},
"vaultTimeoutActionPolicyInEffect": {
"message": "Your organization policies have set your vault timeout action to $ACTION$.",
"message": "Your organisation policies have set your vault timeout action to $ACTION$.",
"placeholders": {
"action": {
"content": "$1",
@ -2114,7 +2120,7 @@
"message": "Exporting Personal Vault"
},
"exportingIndividualVaultDescription": {
"message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included. Only vault item information will be exported and will not include associated attachments.",
"message": "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",
@ -2308,7 +2314,7 @@
}
},
"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"
@ -2380,7 +2386,7 @@
"message": "Approve with master password"
},
"ssoIdentifierRequired": {
"message": "Organization SSO identifier is required."
"message": "Organisation SSO identifier is required."
},
"eu": {
"message": "EU",
@ -2691,7 +2697,7 @@
"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?",
"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",
@ -3010,10 +3016,10 @@
"message": "Passkey removed"
},
"unassignedItemsBannerNotice": {
"message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console."
"message": "Notice: Unassigned organisation items are no longer visible in the All Vaults view and only accessible via the Admin Console."
},
"unassignedItemsBannerSelfHostNotice": {
"message": "Notice: On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console."
"message": "Notice: On May 16, 2024, unassigned organisation items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console."
},
"unassignedItemsBannerCTAPartOne": {
"message": "Assign these items to a collection from the",
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden - Administrador de contraseñas",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "En casa, el trabajo o el viaje, Bitwarden asegura todas sus contraseñas, claves e información confidencial",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Identifícate o crea una nueva cuenta para acceder a tu caja fuerte."
@ -374,12 +374,21 @@
"other": {
"message": "Otros"
},
"unlockMethods": {
"message": "Opciones de desbloqueo"
},
"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"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Otras opciones"
},
"rateExtension": {
"message": "Valora la extensión"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Bloquear la caja fuerte"
},
"privateModeWarning": {
"message": "El soporte en modo privado es experimental y algunas características son limitadas."
},
"customFields": {
"message": "Campos personalizados"
},
@ -2965,27 +2971,27 @@
"description": "Label indicating the most common import formats"
},
"overrideDefaultBrowserAutofillTitle": {
"message": "¿Quiere hacer de Bitwarden su gestor de contraseñas predeterminado?",
"message": "¿Hacer de Bitwarden su administrador 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.",
"message": "Pasar por alto esta opción puede causar conflictos entre el menú de autocompletar de Bitwarden y el de tu 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",
"message": "Hacer de Bitwarden tu administrador 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",
"message": "No se puede establecer Bitwarden como el administrador 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.",
"message": "Debes otorgar permisos de privacidad del navegador a Bitwarden para establecerlo como administrador 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",
"message": "Establecer como predeterminado",
"description": "Button text for the setting that allows overriding the default browser autofill settings"
},
"saveCipherAttemptSuccess": {
@ -3001,7 +3007,7 @@
"description": "Notification message for when saving credentials has failed."
},
"success": {
"message": "Success"
"message": "Éxito"
},
"removePasskey": {
"message": "Eliminar passkey"
@ -3016,20 +3022,29 @@
"message": "Notice: On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console."
},
"unassignedItemsBannerCTAPartOne": {
"message": "Assign these items to a collection from the",
"message": "Asignar estos elementos a una colección de",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"unassignedItemsBannerCTAPartTwo": {
"message": "to make them visible.",
"message": "para hcerlos visibles.",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"adminConsole": {
"message": "Admin Console"
"message": "Consola de administrador"
},
"accountSecurity": {
"message": "Seguridad de la cuenta"
},
"notifications": {
"message": "Notificaciones"
},
"appearance": {
"message": "Apariencia"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
"message": "Error al asignar la colección de destino."
},
"errorAssigningTargetFolder": {
"message": "Error assigning target folder."
"message": "Error al asignar la carpeta de destino."
}
}

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Logi oma olemasolevasse kontosse sisse või loo uus konto."
@ -374,12 +374,21 @@
"other": {
"message": "Muu"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Hoidla ajalõpu tegevuse muutmiseks vali esmalt lahtilukustamise meetod."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Hinda seda laiendust"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lukusta hoidla"
},
"privateModeWarning": {
"message": "Privaatrežiimi toetus on katsejärgus, mistõttu mõned funktsioonid on piiratud."
},
"customFields": {
"message": "Kohandatud väljad"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Saioa hasi edo sortu kontu berri bat zure kutxa gotorrera sartzeko."
@ -374,12 +374,21 @@
"other": {
"message": "Bestelakoak"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Baloratu gehigarria"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Blokeatu kutxa gotorra"
},
"privateModeWarning": {
"message": "Modu pribatuko euskarria esperimentala da eta ezaugarri batzuk mugatuak dira."
},
"customFields": {
"message": "Eremu pertsonalizatuak"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "وارد شوید یا یک حساب کاربری بسازید تا به گاوصندوق امن‌تان دسترسی یابید."
@ -374,12 +374,21 @@
"other": {
"message": "ساير"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "یک روش بازگشایی برای پایان زمان مجاز تنظیم کنید."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "به این افزونه امتیاز دهید"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "قفل گاوصندوق"
},
"privateModeWarning": {
"message": "پشتیبانی حالت خصوصی آزمایشی است و برخی از ویژگی‌ها محدود هستند."
},
"customFields": {
"message": "فیلدهای سفارشی"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Salasanahallinta",
"message": "Bitwarden Salasanahallinta",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "Kotona, töissä tai reissussa, Bitwarden suojaa helposti kaikki salasanasi, avainkoodisi ja arkaluonteiset tietosi.",
"description": "Extension description"
"message": "Kotona, töissä tai reissussa, Bitwarden suojaa helposti salasanasi, suojausavaimesi ja arkaluonteiset tietosi.",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Käytä salattua holviasi kirjautumalla sisään tai luo uusi tili."
@ -374,12 +374,21 @@
"other": {
"message": "Muut"
},
"unlockMethods": {
"message": "Avausasetukset"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Muuta holvisi aikakatkaisutoimintoa määrittämällä lukituksen avaustapa."
},
"unlockMethodNeeded": {
"message": "Määritä avaustapa asetuksista"
},
"sessionTimeoutHeader": {
"message": "Istunnon aikakatkaisu"
},
"otherOptions": {
"message": "Muut asetukset"
},
"rateExtension": {
"message": "Arvioi laajennus"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lukitse holvi"
},
"privateModeWarning": {
"message": "Yksityisen tilan tuki on kokeellinen ja jotkin ominaisuudet toimivat rajoitetusti."
},
"customFields": {
"message": "Lisäkentät"
},
@ -2828,7 +2834,7 @@
"message": "Korvataanko suojausavain?"
},
"overwritePasskeyAlert": {
"message": "Kohde sisältää jo suojausavaimen. Haluatko varmasti korvata nykyisen salasanan?"
"message": "Kohde sisältää jo suojausavaimen. Haluatko varmasti korvata nykyisen suojausavaimen?"
},
"featureNotSupported": {
"message": "Ominaisuutta ei vielä tueta"
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Hallintapaneelista"
},
"accountSecurity": {
"message": "Tilin suojaus"
},
"notifications": {
"message": "Ilmoitukset"
},
"appearance": {
"message": "Ulkoasu"
},
"errorAssigningTargetCollection": {
"message": "Virhe määritettäessä kohdekokoelmaa."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Maglog-in o gumawa ng bagong account para ma-access ang iyong ligtas na kahadeyero."
@ -374,12 +374,21 @@
"other": {
"message": "Iba pa"
},
"unlockMethods": {
"message": "Unlock options"
},
"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"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "I-rate ang extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "I-lock ang vault"
},
"privateModeWarning": {
"message": "Ang suporta sa private mode ay eksperimental at limitado ang ilang mga tampok."
},
"customFields": {
"message": "Pasadyang mga patlang"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Gestionnaire de mots de passe Bitwarden",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "Chez vous, au travail, n'importe où, Bitwarden sécurise mots de passe, clés d'accès et informations sensibles",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Identifiez-vous ou créez un nouveau compte pour accéder à votre coffre sécurisé."
@ -374,12 +374,21 @@
"other": {
"message": "Autre"
},
"unlockMethods": {
"message": "Unlock options"
},
"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"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Noter l'extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Verrouiller le coffre"
},
"privateModeWarning": {
"message": "La prise en charge de la navigation privée est expérimentale et certaines fonctionnalités sont limitées."
},
"customFields": {
"message": "Champs personnalisés"
},
@ -3001,7 +3007,7 @@
"description": "Notification message for when saving credentials has failed."
},
"success": {
"message": "Success"
"message": "Succès"
},
"removePasskey": {
"message": "Retirer la clé d'identification (passkey)"
@ -3013,18 +3019,27 @@
"message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console."
},
"unassignedItemsBannerSelfHostNotice": {
"message": "Notice: On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console."
"message": "Remarque : À partir du 16 mai 2024, les éléments d'organisation non assignés ne seront plus visibles dans votre vue Tous les coffres sur les appareils et ne seront maintenant accessibles que via la Console Admin."
},
"unassignedItemsBannerCTAPartOne": {
"message": "Assign these items to a collection from the",
"message": "Ajouter ces éléments à une collection depuis la",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"unassignedItemsBannerCTAPartTwo": {
"message": "to make them visible.",
"message": "pour les rendre visibles.",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"adminConsole": {
"message": "Admin Console"
"message": "Console Admin"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."

View File

@ -3,15 +3,15 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden - Xestor de contrasinais",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "Na casa, no traballo ou en ruta, Bitwarden protexe os teus contrasinais, chaves de acceso e datos sensíbeis",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Log in or create a new account to access your secure vault."
"message": "Rexístrate ou crea unha nova conta para acceder á túa caixa forte."
},
"createAccount": {
"message": "Crea unha conta"
@ -20,7 +20,7 @@
"message": "Iniciar sesión"
},
"enterpriseSingleSignOn": {
"message": "Enterprise single sign-on"
"message": "Inicio de sesión único empresarial"
},
"cancel": {
"message": "Cancelar"
@ -29,7 +29,7 @@
"message": "Pechar"
},
"submit": {
"message": "Submit"
"message": "Enviar"
},
"emailAddress": {
"message": "Enderezo de correo electrónico"
@ -38,142 +38,142 @@
"message": "Contrasinal mestre"
},
"masterPassDesc": {
"message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it."
"message": "O contrasinal mestre é a chave que empregas para acceder á túa caixa forte. É moi importante que non esquezas o teu contrasinal mestre. Non hai xeito de recuperala se a esqueces."
},
"masterPassHintDesc": {
"message": "A master password hint can help you remember your password if you forget it."
"message": "Unha pista do contrasinal mestre pode axudarte a lembrar o teu contrasinal se o esqueces."
},
"reTypeMasterPass": {
"message": "Re-type master password"
"message": "Reescriba o contrasinal mestre"
},
"masterPassHint": {
"message": "Master password hint (optional)"
"message": "Pista do contrasinal mestre (opcional)"
},
"tab": {
"message": "Tab"
"message": "Separador"
},
"vault": {
"message": "Vault"
"message": "Caixa forte"
},
"myVault": {
"message": "My vault"
"message": "A miña caixa forte"
},
"allVaults": {
"message": "All vaults"
"message": "Todas as caixas fortes"
},
"tools": {
"message": "Tools"
"message": "Ferramentas"
},
"settings": {
"message": "Settings"
"message": "Axustes"
},
"currentTab": {
"message": "Current tab"
"message": "Separador actual"
},
"copyPassword": {
"message": "Copy password"
"message": "Copiar contrasinal"
},
"copyNote": {
"message": "Copy note"
"message": "Copiar nota"
},
"copyUri": {
"message": "Copy URI"
"message": "Copiar URI"
},
"copyUsername": {
"message": "Copy username"
"message": "Copiar nome de usuario"
},
"copyNumber": {
"message": "Copy number"
"message": "Copiar número"
},
"copySecurityCode": {
"message": "Copy security code"
"message": "Copiar código de seguranza"
},
"autoFill": {
"message": "Auto-fill"
"message": "Auto-encher"
},
"autoFillLogin": {
"message": "Auto-fill login"
"message": "Encher automaticamente inicio de sesión"
},
"autoFillCard": {
"message": "Auto-fill card"
"message": "Encher automaticamente tarxeta"
},
"autoFillIdentity": {
"message": "Auto-fill identity"
"message": "Encher automaticamente identidade"
},
"generatePasswordCopied": {
"message": "Generate password (copied)"
"message": "Xerar contrasinal (copiado)"
},
"copyElementIdentifier": {
"message": "Copy custom field name"
"message": "Copiar nome de campo personalizado"
},
"noMatchingLogins": {
"message": "No matching logins"
"message": "Sen inicios de sesión coincidentes"
},
"noCards": {
"message": "No cards"
"message": "Sen tarxetas"
},
"noIdentities": {
"message": "No identities"
"message": "Sen identidades"
},
"addLoginMenu": {
"message": "Add login"
"message": "Engadir inicio de sesión"
},
"addCardMenu": {
"message": "Add card"
"message": "Engadir tarxeta"
},
"addIdentityMenu": {
"message": "Add identity"
"message": "Engadir identidade"
},
"unlockVaultMenu": {
"message": "Unlock your vault"
"message": "Desbloquear a súa caixa forte"
},
"loginToVaultMenu": {
"message": "Log in to your vault"
"message": "Rexistrarse na súa caixa forte"
},
"autoFillInfo": {
"message": "There are no logins available to auto-fill for the current browser tab."
"message": "Non hai inicios de sesión dispoñíbeis para encher automaticamente para o separador actual do navegador."
},
"addLogin": {
"message": "Add a login"
"message": "Engadir inicio de sesión"
},
"addItem": {
"message": "Add item"
"message": "Engadir elemento"
},
"passwordHint": {
"message": "Password hint"
"message": "Pista do contrasinal"
},
"enterEmailToGetHint": {
"message": "Enter your account email address to receive your master password hint."
"message": "Introduce a dirección de correo da túa conta para recibir a pista do contrasinal mestre."
},
"getMasterPasswordHint": {
"message": "Get master password hint"
"message": "Obter pista do contrasinal mestre"
},
"continue": {
"message": "Continue"
"message": "Continuar"
},
"sendVerificationCode": {
"message": "Send a verification code to your email"
"message": "Envía un código de verificación ao teu correo"
},
"sendCode": {
"message": "Send code"
"message": "Enviar código"
},
"codeSent": {
"message": "Code sent"
"message": "Código enviado"
},
"verificationCode": {
"message": "Verification code"
"message": "Código de verificación"
},
"confirmIdentity": {
"message": "Confirm your identity to continue."
"message": "Confirma a túa identidade para continuar."
},
"account": {
"message": "Account"
"message": "Conta"
},
"changeMasterPassword": {
"message": "Change master password"
"message": "Cambiar o contrasinal mestre"
},
"continueToWebApp": {
"message": "Continue to web app?"
"message": "Continuar á aplicación web?"
},
"changeMasterPasswordOnWebConfirmation": {
"message": "You can change your master password on the Bitwarden web app."
@ -374,12 +374,21 @@
"other": {
"message": "Other"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lock the vault"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom fields"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "צור חשבון חדש או התחבר כדי לגשת לכספת המאובטחת שלך."
@ -374,12 +374,21 @@
"other": {
"message": "אחר"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "דירוג הרחבה"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "נעל את הכספת"
},
"privateModeWarning": {
"message": "המצב הפרטי הוא במסגרת ניסוי וחלק מהיכולות מוגבלות."
},
"customFields": {
"message": "שדות מותאמים אישית"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "अपनी सुरक्षित तिजोरी में प्रवेश करने के लिए नया खाता बनाएं या लॉग इन करें।"
@ -374,12 +374,21 @@
"other": {
"message": "अन्य"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the Extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "वॉल्ट लॉक करें"
},
"privateModeWarning": {
"message": "निजी मोड समर्थन प्रायोगिक है और कुछ सुविधाएँ सीमित हैं।"
},
"customFields": {
"message": "Custom Fields"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Prijavi se ili stvori novi račun za pristup svojem sigurnom trezoru."
@ -374,12 +374,21 @@
"other": {
"message": "Ostalo"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Za promjenu vremena isteka trezora, odredi način otključavanja."
},
"unlockMethodNeeded": {
"message": "Postavi način otključavanja u Postavkama"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Ocijeni proširenje"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Zaključaj trezor"
},
"privateModeWarning": {
"message": "Podrška za privatni način rada je eksperimentalna, a neke su značajke ograničene."
},
"customFields": {
"message": "Prilagođena polja"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Bejelentkezés vagy új fiók létrehozása a biztonsági széf eléréséhez."
@ -374,12 +374,21 @@
"other": {
"message": "Egyéb"
},
"unlockMethods": {
"message": "Feloldási opciók"
},
"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"
},
"sessionTimeoutHeader": {
"message": "Munkamenet időkifutás"
},
"otherOptions": {
"message": "Egyéb opciók"
},
"rateExtension": {
"message": "Bővítmény értékelése"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "A széf zárolása"
},
"privateModeWarning": {
"message": "A privát mód támogatása kísérleti és néhány funkció korlátozott."
},
"customFields": {
"message": "Egyedi mezők"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Adminisztrátori konzol"
},
"accountSecurity": {
"message": "Fiókbiztonság"
},
"notifications": {
"message": "Értesítések"
},
"appearance": {
"message": "Megjelenés"
},
"errorAssigningTargetCollection": {
"message": "Hiba történt a célgyűjtemény hozzárendelése során."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Masuk atau buat akun baru untuk mengakses brankas Anda."
@ -374,12 +374,21 @@
"other": {
"message": "Lainnya"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Nilai Ekstensi"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Kunci brankas"
},
"privateModeWarning": {
"message": "Dukungan mode pribadi bersifat eksperimental dan beberapa fitur terbatas."
},
"customFields": {
"message": "Ruas Khusus"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "A casa, al lavoro, o in viaggio, Bitwarden protegge tutte le tue password, passkey, e informazioni sensibili",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Accedi o crea un nuovo account per accedere alla tua cassaforte."
@ -374,12 +374,21 @@
"other": {
"message": "Altro"
},
"unlockMethods": {
"message": "Opzioni di sblocco"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Imposta un metodo di sblocco per modificare l'azione timeout cassaforte."
},
"unlockMethodNeeded": {
"message": "Imposta un metodo di sblocco in Impostazioni"
},
"sessionTimeoutHeader": {
"message": "Timeout della sessione"
},
"otherOptions": {
"message": "Altre opzioni"
},
"rateExtension": {
"message": "Valuta l'estensione"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Blocca la cassaforte"
},
"privateModeWarning": {
"message": "Il supporto della modalità privata è sperimentale e alcune funzionalità sono limitate."
},
"customFields": {
"message": "Campi personalizzati"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Console di amministrazione"
},
"accountSecurity": {
"message": "Sicurezza dell'account"
},
"notifications": {
"message": "Notifiche"
},
"appearance": {
"message": "Aspetto"
},
"errorAssigningTargetCollection": {
"message": "Errore nell'assegnazione della raccolta di destinazione."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "安全なデータ保管庫へアクセスするためにログインまたはアカウントを作成してください。"
@ -374,12 +374,21 @@
"other": {
"message": "その他"
},
"unlockMethods": {
"message": "ロック解除オプション"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "保管庫のタイムアウト動作を変更するには、ロック解除方法を設定してください。"
},
"unlockMethodNeeded": {
"message": "設定でロック解除方法をセットアップ"
},
"sessionTimeoutHeader": {
"message": "セッションタイムアウト"
},
"otherOptions": {
"message": "その他のオプション"
},
"rateExtension": {
"message": "拡張機能の評価"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "保管庫をロック"
},
"privateModeWarning": {
"message": "プライベートモードのサポートは実験的であり、一部機能は制限されています。"
},
"customFields": {
"message": "カスタムフィールド"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "管理コンソール"
},
"accountSecurity": {
"message": "アカウントのセキュリティ"
},
"notifications": {
"message": "通知"
},
"appearance": {
"message": "外観"
},
"errorAssigningTargetCollection": {
"message": "ターゲットコレクションの割り当てに失敗しました。"
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Log in or create a new account to access your secure vault."
@ -374,12 +374,21 @@
"other": {
"message": "სხვა"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lock the vault"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom fields"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Log in or create a new account to access your secure vault."
@ -374,12 +374,21 @@
"other": {
"message": "Other"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lock the vault"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom fields"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "ನಿಮ್ಮ ಸುರಕ್ಷಿತ ವಾಲ್ಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಲಾಗ್ ಇನ್ ಮಾಡಿ ಅಥವಾ ಹೊಸ ಖಾತೆಯನ್ನು ರಚಿಸಿ."
@ -374,12 +374,21 @@
"other": {
"message": "ಇತರೆ"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "ವಿಸ್ತರಣೆಯನ್ನು ರೇಟ್ ಮಾಡಿ"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "ವಾಲ್ಟ್ ಅನ್ನು ಲಾಕ್ ಮಾಡಿ"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "ಕಸ್ಟಮ್ ಕ್ಷೇತ್ರಗಳು"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden 비밀번호 관리자",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "집에서도, 직장에서도, 이동 중에도 Bitwarden은 비밀번호, 패스키, 민감 정보를 쉽게 보호합니다.",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "안전 보관함에 접근하려면 로그인하거나 새 계정을 만드세요."
@ -173,10 +173,10 @@
"message": "마스터 비밀번호 변경"
},
"continueToWebApp": {
"message": "Continue to web app?"
"message": "웹 앱에서 계속하시겠용?"
},
"changeMasterPasswordOnWebConfirmation": {
"message": "You can change your master password on the Bitwarden web app."
"message": "Bitwarden 웹 앱에서 마스터 비밀번호를 변경할 수 있습니다."
},
"fingerprintPhrase": {
"message": "지문 구절",
@ -229,10 +229,10 @@
"message": "Bitwarden 도움말 센터"
},
"communityForums": {
"message": "Explore Bitwarden community forums"
"message": "Bitwarden 커뮤니티 포럼 탐색하기"
},
"contactSupport": {
"message": "Contact Bitwarden support"
"message": "Bitwarden 지원에 문의하기"
},
"sync": {
"message": "동기화"
@ -275,7 +275,7 @@
"message": "길이"
},
"passwordMinLength": {
"message": "Minimum password length"
"message": "최소 비밀번호 길이"
},
"uppercase": {
"message": "대문자 (A-Z)"
@ -333,7 +333,7 @@
"message": "비밀번호"
},
"totp": {
"message": "Authenticator secret"
"message": "인증기 비밀 키"
},
"passphrase": {
"message": "패스프레이즈"
@ -374,11 +374,20 @@
"other": {
"message": "기타"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
"message": "잠금 해제 방법을 설정하여 보관함의 시간 초과 동작을 변경하세요."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
"message": "설정에서 잠금 해제 수단 설정하기"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "확장 프로그램 평가"
@ -421,7 +430,7 @@
"message": "지금 잠그기"
},
"lockAll": {
"message": "Lock all"
"message": "모두 잠그기"
},
"immediately": {
"message": "즉시"
@ -484,7 +493,7 @@
"message": "마스터 비밀번호를 재입력해야 합니다."
},
"masterPasswordMinlength": {
"message": "Master password must be at least $VALUE$ characters long.",
"message": "마스터 비밀번호는 최소 $VALUE$자 이상이어야 합니다.",
"description": "The Master Password must be at least a specific number of characters long.",
"placeholders": {
"value": {
@ -500,10 +509,10 @@
"message": "계정 생성이 완료되었습니다! 이제 로그인하실 수 있습니다."
},
"youSuccessfullyLoggedIn": {
"message": "You successfully logged in"
"message": "로그인에 성공했습니다."
},
"youMayCloseThisWindow": {
"message": "You may close this window"
"message": "이제 창을 닫으실 수 있습니다."
},
"masterPassSent": {
"message": "마스터 비밀번호 힌트가 담긴 이메일을 보냈습니다."
@ -528,16 +537,16 @@
"message": "선택한 항목을 이 페이지에서 자동 완성할 수 없습니다. 대신 정보를 직접 복사 / 붙여넣기하여 사용하십시오."
},
"totpCaptureError": {
"message": "Unable to scan QR code from the current webpage"
"message": "현재 웹페이지에서 QR 코드를 스캔할 수 없습니다"
},
"totpCaptureSuccess": {
"message": "Authenticator key added"
"message": "인증 키를 추가했습니다"
},
"totpCapture": {
"message": "Scan authenticator QR code from current webpage"
"message": "현재 웹페이지에서 QR 코드 스캔하기"
},
"copyTOTP": {
"message": "Copy Authenticator key (TOTP)"
"message": "인증서 키 (TOTP) 복사"
},
"loggedOut": {
"message": "로그아웃됨"
@ -644,7 +653,7 @@
"description": "This is the folder for uncategorized items"
},
"enableAddLoginNotification": {
"message": "Ask to add login"
"message": "로그인을 추가할 건지 물어보기"
},
"addLoginNotificationDesc": {
"message": "\"로그인 추가 알림\"을 사용하면 새 로그인을 사용할 때마다 보관함에 그 로그인을 추가할 것인지 물어봅니다."
@ -653,7 +662,7 @@
"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"
"message": "탭 페이지에 카드 표시"
},
"showCardsCurrentTabDesc": {
"message": "List card items on the Tab page for easy auto-fill."
@ -679,7 +688,7 @@
"message": "예, 지금 저장하겠습니다."
},
"enableChangedPasswordNotification": {
"message": "Ask to update existing login"
"message": "현재 로그인으로 업데이트할 건지 묻기"
},
"changedPasswordNotificationDesc": {
"message": "Ask to update a login's password when a change is detected on a website."
@ -688,10 +697,10 @@
"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"
"message": "패스키를 저장 및 사용할지 묻기"
},
"usePasskeysDesc": {
"message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts."
"message": "보관함에 새 패스키를 저장하거나 로그인할지 물어봅니다. 모든 로그인된 계정에 적용됩니다."
},
"notificationChangeDesc": {
"message": "Bitwarden에 저장되어 있는 비밀번호를 이 비밀번호로 변경하시겠습니까?"
@ -703,7 +712,7 @@
"message": "Unlock your Bitwarden vault to complete the auto-fill request."
},
"notificationUnlock": {
"message": "Unlock"
"message": "잠금 해제"
},
"enableContextMenuItem": {
"message": "Show context menu options"
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "보관함 잠그기"
},
"privateModeWarning": {
"message": "시크릿 모드 지원은 실험적이며 일부 기능이 제한됩니다."
},
"customFields": {
"message": "사용자 지정 필드"
},
@ -2786,55 +2792,55 @@
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
"message": "패스키"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
"message": "패스키가 복사되지 않습니다"
},
"passkeyNotCopiedAlert": {
"message": "The passkey will not be copied to the cloned item. Do you want to continue cloning this item?"
"message": "패스키는 복제된 아이템에 복사되지 않습니다. 계속 이 항목을 복제하시겠어요?"
},
"passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": {
"message": "Verification required by the initiating site. This feature is not yet implemented for accounts without master password."
"message": "사이트에서 인증을 요구합니다. 이 기능은 비밀번호가 없는 계정에서는 아직 지원하지 않습니다."
},
"logInWithPasskey": {
"message": "Log in with passkey?"
"message": "패스키로 로그인하시겠어요?"
},
"passkeyAlreadyExists": {
"message": "A passkey already exists for this application."
"message": "이미 이 애플리케이션에 해당하는 패스키가 있습니다."
},
"noPasskeysFoundForThisApplication": {
"message": "No passkeys found for this application."
"message": "이 애플리케이션에 대한 패스키를 찾을 수 없습니다."
},
"noMatchingPasskeyLogin": {
"message": "You do not have a matching login for this site."
"message": "사이트와 일치하는 로그인이 없습니다."
},
"confirm": {
"message": "Confirm"
},
"savePasskey": {
"message": "Save passkey"
"message": "패스키 저장"
},
"savePasskeyNewLogin": {
"message": "Save passkey as new login"
"message": "새 로그인으로 패스키 저장"
},
"choosePasskey": {
"message": "Choose a login to save this passkey to"
"message": "패스키를 저장할 로그인 선택하기"
},
"passkeyItem": {
"message": "Passkey Item"
"message": "패스키 항목"
},
"overwritePasskey": {
"message": "Overwrite passkey?"
"message": "비밀번호를 덮어쓰시겠어요?"
},
"overwritePasskeyAlert": {
"message": "This item already contains a passkey. Are you sure you want to overwrite the current passkey?"
"message": "이 항목은 이미 패스키가 있습니다. 정말로 현재 패스키를 덮어쓰시겠어요?"
},
"featureNotSupported": {
"message": "Feature not yet supported"
},
"yourPasskeyIsLocked": {
"message": "Authentication required to use passkey. Verify your identity to continue."
"message": "패스키를 사용하려면 인증이 필요합니다. 인증을 진행해주세요."
},
"multifactorAuthenticationCancelled": {
"message": "Multifactor authentication cancelled"
@ -3004,10 +3010,10 @@
"message": "Success"
},
"removePasskey": {
"message": "Remove passkey"
"message": "패스키 제거"
},
"passkeyRemoved": {
"message": "Passkey removed"
"message": "패스키 제거됨"
},
"unassignedItemsBannerNotice": {
"message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console."
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Prisijunkite arba sukurkite naują paskyrą, kad galėtumėte pasiekti saugyklą."
@ -173,10 +173,10 @@
"message": "Keisti pagrindinį slaptažodį"
},
"continueToWebApp": {
"message": "Continue to web app?"
"message": "Tęsti į žiniatinklio programėlę?"
},
"changeMasterPasswordOnWebConfirmation": {
"message": "You can change your master password on the Bitwarden web app."
"message": "Pagrindinį slaptažodį galite pakeisti „Bitwarden“ žiniatinklio programėlėje."
},
"fingerprintPhrase": {
"message": "Pirštų atspaudų frazė",
@ -374,12 +374,21 @@
"other": {
"message": "Kita"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Nustatyk atrakinimo būdą, kad pakeistum saugyklos laiko limito veiksmą."
},
"unlockMethodNeeded": {
"message": "Nustatykite nustatymuose atrakinimo metodą"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Įvertinkite šį plėtinį"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Užrakinti saugyklą"
},
"privateModeWarning": {
"message": "Privataus režimo palaikymas yra eksperimentinis, o kai kurios funkcijos yra ribotos."
},
"customFields": {
"message": "Pasirinktiniai laukai"
},
@ -3001,7 +3007,7 @@
"description": "Notification message for when saving credentials has failed."
},
"success": {
"message": "Success"
"message": "Sėkmė"
},
"removePasskey": {
"message": "Pašalinti slaptaraktį"
@ -3010,26 +3016,35 @@
"message": "Pašalintas slaptaraktis"
},
"unassignedItemsBannerNotice": {
"message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console."
"message": "Pranešimas: nepriskirti organizacijos elementai nebėra matomi peržiūros rodinyje Visi saugyklos ir yra pasiekiami tik per Administratoriaus konsolę."
},
"unassignedItemsBannerSelfHostNotice": {
"message": "Notice: On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console."
"message": "Pranešimas: 2024 m. gegužės 16 d. nepriskirti organizacijos elementai nebėra matomi peržiūros rodinyje Visi saugyklos ir yra pasiekiami tik per Administratoriaus konsolę."
},
"unassignedItemsBannerCTAPartOne": {
"message": "Assign these items to a collection from the",
"message": "Priskirkite šiuos elementus kolekcijai iš",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"unassignedItemsBannerCTAPartTwo": {
"message": "to make them visible.",
"message": ", kad jie būtų matomi.",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"adminConsole": {
"message": "Admin Console"
"message": "Administratoriaus konsolės"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
"message": "Klaida priskiriant tikslinę kolekciją."
},
"errorAssigningTargetFolder": {
"message": "Error assigning target folder."
"message": "Klaida priskiriant tikslinį aplanką."
}
}

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Jāpiesakās vai jāizveido jauns konts, lai piekļūtu drošajai glabātavai."
@ -374,12 +374,21 @@
"other": {
"message": "Cits"
},
"unlockMethods": {
"message": "Atslēgšanas iespējas"
},
"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"
},
"sessionTimeoutHeader": {
"message": "Sesijas noildze"
},
"otherOptions": {
"message": "Citas iespējas"
},
"rateExtension": {
"message": "Novērtēt paplašinājumu"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Aizslēgt glabātavu"
},
"privateModeWarning": {
"message": "Personiskā stāvokļa atbalsts ir izmēģinājuma, un dažas iespējas ir ierobežotas."
},
"customFields": {
"message": "Pielāgoti lauki"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "pārvaldības konsolē,"
},
"accountSecurity": {
"message": "Konta drošība"
},
"notifications": {
"message": "Paziņojumi"
},
"appearance": {
"message": "Izskats"
},
"errorAssigningTargetCollection": {
"message": "Kļūda mērķa krājuma piešķiršanā."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "നിങ്ങളുടെ സുരക്ഷിത വാൾട്ടിലേക്കു പ്രവേശിക്കാൻ ലോഗിൻ ചെയ്യുക അല്ലെങ്കിൽ ഒരു പുതിയ അക്കൗണ്ട് സൃഷ്ടിക്കുക."
@ -374,12 +374,21 @@
"other": {
"message": "മറ്റുള്ളവ"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "എക്സ്റ്റൻഷൻ റേറ്റ് ചെയ്യുക "
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "നിലവറ പൂട്ടുക"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "ഇഷ്‌ടാനുസൃത ഫീൽഡുകൾ"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "तुमच्या सुरक्षित तिजोरीत पोहचण्यासाठी लॉग इन करा किंवा नवीन खाते उघडा."
@ -374,12 +374,21 @@
"other": {
"message": "इतर"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "विस्तारकाचे मूल्यांकन करा"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lock the vault"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom fields"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Log in or create a new account to access your secure vault."
@ -374,12 +374,21 @@
"other": {
"message": "Other"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lock the vault"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom fields"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Logg på eller opprett en ny konto for å få tilgang til ditt sikre hvelv."
@ -374,12 +374,21 @@
"other": {
"message": "Annet"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Gi denne utvidelsen en vurdering"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lås hvelvet"
},
"privateModeWarning": {
"message": "Støtte for privatmodus er eksperimentelt, og noen funksjoner er begrenset."
},
"customFields": {
"message": "Tilpassede felter"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Log in or create a new account to access your secure vault."
@ -374,12 +374,21 @@
"other": {
"message": "Other"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lock the vault"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom fields"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Log in of maak een nieuw account aan om toegang te krijgen tot je beveiligde kluis."
@ -374,12 +374,21 @@
"other": {
"message": "Overig"
},
"unlockMethods": {
"message": "Ontgrendelopties"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Stel een ontgrendelingsmethode in om je kluis time-out actie te wijzigen."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Sessietime-out"
},
"otherOptions": {
"message": "Andere opties"
},
"rateExtension": {
"message": "Deze extensie beoordelen"
},
@ -531,7 +540,7 @@
"message": "Kan de QR-code van de huidige webpagina niet scannen"
},
"totpCaptureSuccess": {
"message": "Authenticatie-sleutel toegevoegd"
"message": "Authenticatiesleutel toegevoegd"
},
"totpCapture": {
"message": "Scan de authenticatie-QR-code van de huidige webpagina"
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Kluis vergrendelen"
},
"privateModeWarning": {
"message": "Private mode ondersteuning is experimenteel en sommige functies zijn beperkt."
},
"customFields": {
"message": "Aangepaste velden"
},
@ -1673,10 +1679,10 @@
"message": "Browserintegratie is niet ingeschakeld in de Bitwarden-desktopapplicatie. Schakel deze optie in de instellingen binnen de desktop-applicatie in."
},
"startDesktopTitle": {
"message": "Bitwarden-desktopapplicatie opstarten"
"message": "Bitwarden desktopapplicatie opstarten"
},
"startDesktopDesc": {
"message": "Je moet de Bitwarden-desktopapplicatie starten om deze functie te gebruiken."
"message": "Je moet de Bitwarden desktopapplicatie starten om deze functie te gebruiken."
},
"errorEnableBiometricTitle": {
"message": "Kon biometrie niet inschakelen"
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Accountbeveiliging"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Voorkomen"
},
"errorAssigningTargetCollection": {
"message": "Fout bij toewijzen doelverzameling."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Log in or create a new account to access your secure vault."
@ -374,12 +374,21 @@
"other": {
"message": "Other"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lock the vault"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom fields"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Log in or create a new account to access your secure vault."
@ -374,12 +374,21 @@
"other": {
"message": "Other"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lock the vault"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom fields"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Menedżer Haseł Bitwarden",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "W domu, w pracy, lub w ruchu, Bitwarden z łatwością zabezpiecza Twoje hasła, passkeys i poufne informacje",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Zaloguj się lub utwórz nowe konto, aby uzyskać dostęp do Twojego bezpiecznego sejfu."
@ -374,12 +374,21 @@
"other": {
"message": "Inne"
},
"unlockMethods": {
"message": "Odblokuj Opcje"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Ustaw metodę odblokowania, aby zmienić czas blokowania sejfu."
},
"unlockMethodNeeded": {
"message": "Ustaw metodę odblokowania w Ustawieniach"
},
"sessionTimeoutHeader": {
"message": "Limit czasu sesji"
},
"otherOptions": {
"message": "Pozostałe opcje"
},
"rateExtension": {
"message": "Oceń rozszerzenie"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Zablokuj sejf"
},
"privateModeWarning": {
"message": "Obsługa trybu prywatnego jest eksperymentalna, a niektóre funkcje są ograniczone."
},
"customFields": {
"message": "Pola niestandardowe"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Konsola Administracyjna"
},
"accountSecurity": {
"message": "Bezpieczeństwo konta"
},
"notifications": {
"message": "Powiadomienia"
},
"appearance": {
"message": "Wygląd"
},
"errorAssigningTargetCollection": {
"message": "Wystąpił błąd podczas przypisywania kolekcji."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden Gerenciador de Senhas",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "Em qual lugar for, o Bitwarden protege suas senhas, chaves de acesso, e informações confidenciais",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Inicie a sessão ou crie uma nova conta para acessar seu cofre seguro."
@ -173,10 +173,10 @@
"message": "Alterar Senha Mestra"
},
"continueToWebApp": {
"message": "Continue to web app?"
"message": "Continuar no aplicativo web?"
},
"changeMasterPasswordOnWebConfirmation": {
"message": "You can change your master password on the Bitwarden web app."
"message": "Você pode alterar a sua senha mestra no aplicativo web Bitwarden."
},
"fingerprintPhrase": {
"message": "Frase Biométrica",
@ -374,12 +374,21 @@
"other": {
"message": "Outros"
},
"unlockMethods": {
"message": "Unlock options"
},
"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"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Avaliar a Extensão"
},
@ -500,10 +509,10 @@
"message": "A sua nova conta foi criada! Agora você pode iniciar a sessão."
},
"youSuccessfullyLoggedIn": {
"message": "You successfully logged in"
"message": "Você logou na sua conta com sucesso"
},
"youMayCloseThisWindow": {
"message": "You may close this window"
"message": "Você pode fechar esta janela"
},
"masterPassSent": {
"message": "Enviamos um e-mail com a dica da sua senha mestra."
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Bloquear o cofre"
},
"privateModeWarning": {
"message": "O suporte para modo privado é experimental e alguns recursos são limitados."
},
"customFields": {
"message": "Campos Personalizados"
},
@ -1500,7 +1506,7 @@
"message": "Código PIN inválido."
},
"tooManyInvalidPinEntryAttemptsLoggingOut": {
"message": "Too many invalid PIN entry attempts. Logging out."
"message": "Muitas tentativas de entrada de PIN inválidas. Desconectando."
},
"unlockWithBiometrics": {
"message": "Desbloquear com a biometria"
@ -2005,7 +2011,7 @@
"message": "Selecionar pasta..."
},
"noFoldersFound": {
"message": "No folders found",
"message": "Nenhuma pasta encontrada",
"description": "Used as a message within the notification bar when no folders are found"
},
"orgPermissionsUpdatedMustSetPassword": {
@ -2017,7 +2023,7 @@
"description": "Used as a card title description on the set password page to explain why the user is there"
},
"verificationRequired": {
"message": "Verification required",
"message": "Verificação necessária",
"description": "Default title for the user verification dialog."
},
"hours": {
@ -2652,40 +2658,40 @@
}
},
"tryAgain": {
"message": "Try again"
"message": "Tentar novamente"
},
"verificationRequiredForActionSetPinToContinue": {
"message": "Verification required for this action. Set a PIN to continue."
"message": "Verificação necessária para esta ação. Defina um PIN para continuar."
},
"setPin": {
"message": "Set PIN"
"message": "Definir PIN"
},
"verifyWithBiometrics": {
"message": "Verify with biometrics"
"message": "Verificiar com biometria"
},
"awaitingConfirmation": {
"message": "Awaiting confirmation"
"message": "Aguardando confirmação"
},
"couldNotCompleteBiometrics": {
"message": "Could not complete biometrics."
"message": "Não foi possível completar a biometria."
},
"needADifferentMethod": {
"message": "Need a different method?"
"message": "Precisa de um método diferente?"
},
"useMasterPassword": {
"message": "Use master password"
"message": "Usar a senha mestra"
},
"usePin": {
"message": "Use PIN"
"message": "Usar PIN"
},
"useBiometrics": {
"message": "Use biometrics"
"message": "Usar biometria"
},
"enterVerificationCodeSentToEmail": {
"message": "Enter the verification code that was sent to your email."
"message": "Digite o código de verificação que foi enviado para o seu e-mail."
},
"resendCode": {
"message": "Resend code"
"message": "Reenviar código"
},
"total": {
"message": "Total"
@ -2700,19 +2706,19 @@
}
},
"launchDuoAndFollowStepsToFinishLoggingIn": {
"message": "Launch Duo and follow the steps to finish logging in."
"message": "Inicie o Duo e siga os passos para finalizar o login."
},
"duoRequiredForAccount": {
"message": "Duo two-step login is required for your account."
"message": "A autenticação em duas etapas do Duo é necessária para sua conta."
},
"popoutTheExtensionToCompleteLogin": {
"message": "Popout the extension to complete login."
"message": "Abra a extensão para concluir o login."
},
"popoutExtension": {
"message": "Popout extension"
"message": "Extensão pop-out"
},
"launchDuo": {
"message": "Launch Duo"
"message": "Abrir o Duo"
},
"importFormatError": {
"message": "Os dados não estão formatados corretamente. Por favor, verifique o seu arquivo de importação e tente novamente."
@ -2846,13 +2852,13 @@
"message": "Nome de usuário ou senha incorretos"
},
"incorrectPassword": {
"message": "Incorrect password"
"message": "Senha incorreta"
},
"incorrectCode": {
"message": "Incorrect code"
"message": "Código incorreto"
},
"incorrectPin": {
"message": "Incorrect PIN"
"message": "PIN incorreto"
},
"multifactorAuthenticationFailed": {
"message": "Falha na autenticação de múltiplos fatores"
@ -2965,71 +2971,80 @@
"description": "Label indicating the most common import formats"
},
"overrideDefaultBrowserAutofillTitle": {
"message": "Make Bitwarden your default password manager?",
"message": "Tornar o Bitwarden seu gerenciador de senhas padrão?",
"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.",
"message": "Ignorar esta opção pode causar conflitos entre o menu de autopreenchimento do Bitwarden e o do seu navegador.",
"description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior"
},
"overrideDefaultBrowserAutoFillSettings": {
"message": "Make Bitwarden your default password manager",
"message": "Faça do Bitwarden seu gerenciador de senhas padrão",
"description": "Label for the setting that allows overriding the default browser autofill settings"
},
"privacyPermissionAdditionNotGrantedTitle": {
"message": "Unable to set Bitwarden as the default password manager",
"message": "Não é possível definir o Bitwarden como o gerenciador de senhas padrão",
"description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings"
},
"privacyPermissionAdditionNotGrantedDescription": {
"message": "You must grant browser privacy permissions to Bitwarden to set it as the default password manager.",
"message": "Você deve conceder permissões de privacidade do navegador ao Bitwarden para defini-lo como o Gerenciador de Senhas padrão.",
"description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings"
},
"makeDefault": {
"message": "Make default",
"message": "Tornar padrão",
"description": "Button text for the setting that allows overriding the default browser autofill settings"
},
"saveCipherAttemptSuccess": {
"message": "Credentials saved successfully!",
"message": "Credenciais salvas com sucesso!",
"description": "Notification message for when saving credentials has succeeded."
},
"updateCipherAttemptSuccess": {
"message": "Credentials updated successfully!",
"message": "Credenciais atualizadas com sucesso!",
"description": "Notification message for when updating credentials has succeeded."
},
"saveCipherAttemptFailed": {
"message": "Error saving credentials. Check console for details.",
"message": "Erro ao salvar credenciais. Verifique o console para detalhes.",
"description": "Notification message for when saving credentials has failed."
},
"success": {
"message": "Success"
"message": "Sucesso"
},
"removePasskey": {
"message": "Remove passkey"
"message": "Remover senha"
},
"passkeyRemoved": {
"message": "Passkey removed"
"message": "Chave de acesso removida"
},
"unassignedItemsBannerNotice": {
"message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console."
"message": "Aviso: Itens da organização não atribuídos não estão mais visíveis na visualização Todos os Cofres e só são acessíveis por meio do painel de administração."
},
"unassignedItemsBannerSelfHostNotice": {
"message": "Notice: On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console."
"message": "Aviso: Em 16 de maio, 2024, itens da organização não serão mais visíveis na visualização Todos os Cofres e só serão acessíveis por meio do painel de administração."
},
"unassignedItemsBannerCTAPartOne": {
"message": "Assign these items to a collection from the",
"message": "Atribua estes itens a uma coleção da",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"unassignedItemsBannerCTAPartTwo": {
"message": "to make them visible.",
"message": "para torná-los visíveis.",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"adminConsole": {
"message": "Admin Console"
"message": "Painel de administração"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
"message": "Erro ao atribuir coleção de destino."
},
"errorAssigningTargetFolder": {
"message": "Error assigning target folder."
"message": "Erro ao atribuir pasta de destino."
}
}

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden - Gestor de Palavras-passe",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "Em casa, no trabalho, em todo o lado, o Bitwarden protege todas as suas palavras-passe e informações sensíveis",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Inicie sessão ou crie uma nova conta para aceder ao seu cofre seguro."
@ -303,10 +303,10 @@
"message": "Incluir número"
},
"minNumbers": {
"message": "Números mínimos"
"message": "Mínimo de números"
},
"minSpecial": {
"message": "Caracteres especiais minímos"
"message": "Mínimo de caracteres especiais"
},
"avoidAmbChar": {
"message": "Evitar caracteres ambíguos"
@ -374,12 +374,21 @@
"other": {
"message": "Outros"
},
"unlockMethods": {
"message": "Opções de desbloqueio"
},
"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"
},
"sessionTimeoutHeader": {
"message": "Tempo limite da sessão"
},
"otherOptions": {
"message": "Outras opções"
},
"rateExtension": {
"message": "Avaliar a extensão"
},
@ -1064,7 +1073,7 @@
"message": "Editar as definições do navegador."
},
"autofillOverlayVisibilityOff": {
"message": "Desligado",
"message": "Desativado",
"description": "Overlay setting select option for disabling autofill overlay"
},
"autofillOverlayVisibilityOnFieldFocus": {
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Bloquear o cofre"
},
"privateModeWarning": {
"message": "O suporte do modo privado é experimental e algumas funcionalidades são limitadas."
},
"customFields": {
"message": "Campos personalizados"
},
@ -1279,7 +1285,7 @@
"message": "Número do passaporte"
},
"licenseNumber": {
"message": "Número da licença"
"message": "Número da carta de condução"
},
"email": {
"message": "E-mail"
@ -1303,7 +1309,7 @@
"message": "Cidade / Localidade"
},
"stateProvince": {
"message": "Estado / Província"
"message": "Estado / Região"
},
"zipPostalCode": {
"message": "Código postal"
@ -1443,7 +1449,7 @@
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Criado a",
"message": "Criado",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Consola de administração"
},
"accountSecurity": {
"message": "Segurança da conta"
},
"notifications": {
"message": "Notificações"
},
"appearance": {
"message": "Aparência"
},
"errorAssigningTargetCollection": {
"message": "Erro ao atribuir a coleção de destino."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Autentificați-vă sau creați un cont nou pentru a accesa seiful dvs. securizat."
@ -374,12 +374,21 @@
"other": {
"message": "Altele"
},
"unlockMethods": {
"message": "Unlock options"
},
"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"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Evaluare extensie"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Blocare seif"
},
"privateModeWarning": {
"message": "Suportul pentru modul privat este experimental, iar unele caracteristici sunt limitate."
},
"customFields": {
"message": "Câmpuri particularizate"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden - Менеджер паролей",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "Дома, на работе или в пути - Bitwarden всегда защитит ваши пароли, passkeys и конфиденциальную информацию",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Войдите или создайте новый аккаунт для доступа к вашему защищенному хранилищу."
@ -374,12 +374,21 @@
"other": {
"message": "Прочее"
},
"unlockMethods": {
"message": "Настройки разблокировки"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Настройте способ разблокировки для изменения действия по тайм-ауту хранилища."
},
"unlockMethodNeeded": {
"message": "Установите способ разблокировки в настройках"
},
"sessionTimeoutHeader": {
"message": "Тайм-аут сессии"
},
"otherOptions": {
"message": "Прочие настройки"
},
"rateExtension": {
"message": "Оценить расширение"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Заблокировать хранилище"
},
"privateModeWarning": {
"message": "Частный режим - экспериментальный, некоторые функции ограничены."
},
"customFields": {
"message": "Пользовательские поля"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "консоли администратора"
},
"accountSecurity": {
"message": "Безопасность аккаунта"
},
"notifications": {
"message": "Уведомления"
},
"appearance": {
"message": "Внешний вид"
},
"errorAssigningTargetCollection": {
"message": "Ошибка при назначении целевой коллекции."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "ඔබගේ ආරක්ෂිත සුරක්ෂිතාගාරය වෙත පිවිසීමට හෝ නව ගිණුමක් නිර්මාණය කරන්න."
@ -374,12 +374,21 @@
"other": {
"message": "වෙනත්"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "දිගුව අනුපාතය"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "සුරක්ෂිතාගාරය ලොක් කරන්න"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "අභිරුචි ක්ෂේත්ර"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Prihláste sa, alebo vytvorte nový účet pre prístup k vášmu bezpečnému trezoru."
@ -374,12 +374,21 @@
"other": {
"message": "Ostatné"
},
"unlockMethods": {
"message": "Možnosti odomknutia"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Nastavte metódu odomknutia, aby ste zmenili akciu pri vypršaní času trezoru."
},
"unlockMethodNeeded": {
"message": "Nastavte metódu odomknutia v Nastaveniach"
},
"sessionTimeoutHeader": {
"message": "Časový limit relácie"
},
"otherOptions": {
"message": "Ďalšie možnosti"
},
"rateExtension": {
"message": "Ohodnotiť rozšírenie"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Zamknúť trezor"
},
"privateModeWarning": {
"message": "Podpora privátneho režimu je experimentálna a niektoré funkcie sú obmedzené."
},
"customFields": {
"message": "Vlastné polia"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Správcovská konzola"
},
"accountSecurity": {
"message": "Zabezpečenie účtu"
},
"notifications": {
"message": "Upozornenia"
},
"appearance": {
"message": "Vzhľad"
},
"errorAssigningTargetCollection": {
"message": "Chyba pri priraďovaní cieľovej kolekcie."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Prijavite se ali ustvarite nov račun za dostop do svojega varnega trezorja."
@ -374,12 +374,21 @@
"other": {
"message": "Drugo"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Da spremenite časovne omejitve trezorja, nastavite metodo odklepanja."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Ocenite to razširitev"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Zakleni trezor"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Polja po meri"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Пријавите се или креирајте нови налог за приступ сефу."
@ -173,10 +173,10 @@
"message": "Промени главну лозинку"
},
"continueToWebApp": {
"message": "Continue to web app?"
"message": "Ићи на веб апликацију?"
},
"changeMasterPasswordOnWebConfirmation": {
"message": "You can change your master password on the Bitwarden web app."
"message": "Можете променити главну лозинку на Bitwarden веб апликацији."
},
"fingerprintPhrase": {
"message": "Сигурносна Фраза Сефа",
@ -374,12 +374,21 @@
"other": {
"message": "Остало"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Подесите метод откључавања да бисте променили радњу временског ограничења сефа."
},
"unlockMethodNeeded": {
"message": "Подесите метод откључавања у подешавањима"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Оцени овај додатак"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Закључај сеф"
},
"privateModeWarning": {
"message": "Подршка за приватни режим је експериментална и неке функције су ограничене."
},
"customFields": {
"message": "Прилагођена Поља"
},
@ -3001,7 +3007,7 @@
"description": "Notification message for when saving credentials has failed."
},
"success": {
"message": "Success"
"message": "Успех"
},
"removePasskey": {
"message": "Уклонити приступачни кључ"
@ -3010,10 +3016,10 @@
"message": "Приступачни кључ је уклоњен"
},
"unassignedItemsBannerNotice": {
"message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console."
"message": "Напомена: Недодељене ставке организације више нису видљиве у приказу Сви сефови и доступне су само преко Админ конзоле."
},
"unassignedItemsBannerSelfHostNotice": {
"message": "Notice: On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console."
"message": "Напомена: од 16 Маја 2024м недодељене ставке организације више нису видљиве у приказу Сви сефови и доступне су само преко Админ конзоле."
},
"unassignedItemsBannerCTAPartOne": {
"message": "Assign these items to a collection from the",
@ -3024,12 +3030,21 @@
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"adminConsole": {
"message": "Admin Console"
"message": "Администраторска конзола"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
"message": "Грешка при додељивању циљне колекције."
},
"errorAssigningTargetFolder": {
"message": "Error assigning target folder."
"message": "Грешка при додељивању циљне фасцикле."
}
}

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Logga in eller skapa ett nytt konto för att komma åt ditt säkra valv."
@ -374,12 +374,21 @@
"other": {
"message": "Annat"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Ställ in en upplåsningsmetod i Inställningar"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Betygsätt tillägget"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lås valvet"
},
"privateModeWarning": {
"message": "Stöd för privat läge är experimentellt och vissa funktioner är begränsade."
},
"customFields": {
"message": "Anpassade fält"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Utseende"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Log in or create a new account to access your secure vault."
@ -374,12 +374,21 @@
"other": {
"message": "Other"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Lock the vault"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom fields"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "ล็อกอิน หรือ สร้างบัญชีใหม่ เพื่อใช้งานตู้นิรภัยของคุณ"
@ -374,12 +374,21 @@
"other": {
"message": "อื่น ๆ"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Set up an unlock method to change your vault timeout action."
},
"unlockMethodNeeded": {
"message": "Set up an unlock method in Settings"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Rate the Extension"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "ล็อกตู้เซฟ"
},
"privateModeWarning": {
"message": "Private mode support is experimental and some features are limited."
},
"customFields": {
"message": "Custom Fields"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden Parola Yöneticisi",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "Bitwarden tüm parolalarınızı, geçiş anahtarlarınızı ve hassas bilgilerinizi güvenle saklar",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Güvenli kasanıza ulaşmak için giriş yapın veya yeni bir hesap oluşturun."
@ -173,10 +173,10 @@
"message": "Ana parolayı değiştir"
},
"continueToWebApp": {
"message": "Continue to web app?"
"message": "Web uygulamasına devam edilsin mi?"
},
"changeMasterPasswordOnWebConfirmation": {
"message": "You can change your master password on the Bitwarden web app."
"message": "Ana parolanızı Bitwarden web uygulamasında değiştirebilirsiniz."
},
"fingerprintPhrase": {
"message": "Parmak izi ifadesi",
@ -333,7 +333,7 @@
"message": "Parola"
},
"totp": {
"message": "Authenticator secret"
"message": "Kimlik doğrulama sırrı"
},
"passphrase": {
"message": "Uzun söz"
@ -374,12 +374,21 @@
"other": {
"message": "Diğer"
},
"unlockMethods": {
"message": "Kilit açma seçenekleri"
},
"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"
},
"sessionTimeoutHeader": {
"message": "Oturum zaman aşımı"
},
"otherOptions": {
"message": "Diğer seçenekler"
},
"rateExtension": {
"message": "Uzantıyı değerlendirin"
},
@ -528,16 +537,16 @@
"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"
"message": "Mevcut web sayfasındaki 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"
"message": "Mevcut web sayfasındaki kimlik doğrulayıcı QR kodunu tarayın"
},
"copyTOTP": {
"message": "Kimlik Doğrulayıcı anahtarını kopyala (TOTP)"
"message": "Kimlik doğrulama anahtarını kopyala (TOTP)"
},
"loggedOut": {
"message": ıkış yapıldı"
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Kasayı kilitle"
},
"privateModeWarning": {
"message": "Gizli mod desteği deneyseldir ve bazı özellikler kısıtlıdır."
},
"customFields": {
"message": "Özel alanlar"
},
@ -2005,7 +2011,7 @@
"message": "Klasör seç..."
},
"noFoldersFound": {
"message": "Herhangi bir klasör bulunamadı",
"message": "Hbir klasör bulunamadı",
"description": "Used as a message within the notification bar when no folders are found"
},
"orgPermissionsUpdatedMustSetPassword": {
@ -2652,13 +2658,13 @@
}
},
"tryAgain": {
"message": "Tekrar deneyin"
"message": "Yeniden dene"
},
"verificationRequiredForActionSetPinToContinue": {
"message": "Bu işlem için doğrulama gerekiyor. Devam etmek için bir PIN ayarlayın."
"message": "Bu işlem için doğrulama gerekiyor. Devam etmek için bir PIN belirleyin."
},
"setPin": {
"message": "PIN Belirle"
"message": "PIN belirle"
},
"verifyWithBiometrics": {
"message": "Biyometri ile doğrula"
@ -2673,7 +2679,7 @@
"message": "Farklı bir yönteme mi ihtiyacınız var?"
},
"useMasterPassword": {
"message": "Ana parolayı kullanın"
"message": "Ana parolayı kullan"
},
"usePin": {
"message": "PIN kullan"
@ -2685,7 +2691,7 @@
"message": "E-posta adresinize gönderilen doğrulama kodunu girin."
},
"resendCode": {
"message": "Kodu tekrar gönder"
"message": "Kodu yeniden gönder"
},
"total": {
"message": "Toplam"
@ -2700,19 +2706,19 @@
}
},
"launchDuoAndFollowStepsToFinishLoggingIn": {
"message": "DUO'yu başlatın ve oturum açmayı tamamlamak için adımları izleyin."
"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."
"message": "Hesabınız için Duo iki adımlı giriş gereklidir."
},
"popoutTheExtensionToCompleteLogin": {
"message": "Oturum açma işlemini tamamlamak için uzantıyıın."
"message": "Giriş işlemini tamamlamak için uzantıyı dışarı alın."
},
"popoutExtension": {
"message": "Popout uzantısı"
"message": "Uzantıyı dışarı al"
},
"launchDuo": {
"message": "DUO'yu başlat"
"message": "Duo'yu başlat"
},
"importFormatError": {
"message": "Veriler doğru biçimlendirilmemiş. Lütfen içe aktarma dosyanızı kontrol edin ve tekrar deneyin."
@ -2795,7 +2801,7 @@
"message": "Geçiş anahtarı klonlanan öğeye kopyalanmayacaktır. Bu öğeyi klonlamaya devam etmek istiyor musunuz?"
},
"passkeyFeatureIsNotImplementedForAccountsWithoutMasterPassword": {
"message": "ılan sitenin gerektirdiği doğrulama. Bu özellik henüz ana şifresi olmayan hesaplara uygulanmamaktadır."
"message": "Site kimlik doğrulaması gerektiriyor. Bu özellik henüz ana parolası olmayan hesaplarda kullanılamaz."
},
"logInWithPasskey": {
"message": "Geçiş anahtarı ile giriş yapılsın mı?"
@ -2828,13 +2834,13 @@
"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?"
"message": "Bu kayıt zaten bir geçiş anahtarı içeriyor. Mevcut geçiş anahtarının ü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."
"message": "Geçiş anahtarını 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"
@ -2943,10 +2949,10 @@
"message": "konum"
},
"useDeviceOrHardwareKey": {
"message": "Cihazınızı veya donanım anahtarınızı kullanın"
"message": "Cihazınızı veya donanımsal anahtarınızı kullanın"
},
"justOnce": {
"message": "Yalnızca bir kez"
"message": "Yalnızca bir defa"
},
"alwaysForThisSite": {
"message": "Bu site için her zaman"
@ -2961,23 +2967,23 @@
}
},
"commonImportFormats": {
"message": "Ortak formatlar",
"message": "Sık kullanılan biçimler",
"description": "Label indicating the most common import formats"
},
"overrideDefaultBrowserAutofillTitle": {
"message": "Bitwarden varsayılan şifre yöneticiniz yapılsın mı?",
"message": "Bitwarden varsayılan parola 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.",
"message": "Bu seçeneği göz ardı ederseniz Bitwarden otomatik doldurma menüsüyle tarayıcınızınki arasında çakışma yaşanabilir.",
"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",
"message": "Bitwarden'ı varsayılan parola 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",
"message": "Bitwarden varsayılan parola yöneticisi olarak ayarlanamadı",
"description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings"
},
"privacyPermissionAdditionNotGrantedDescription": {
@ -3001,13 +3007,13 @@
"description": "Notification message for when saving credentials has failed."
},
"success": {
"message": "Success"
"message": "Başarılı"
},
"removePasskey": {
"message": "Remove passkey"
"message": "Geçiş anahtarını kaldır"
},
"passkeyRemoved": {
"message": "Passkey removed"
"message": "Geçiş anahtarı kaldırıldı"
},
"unassignedItemsBannerNotice": {
"message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console."
@ -3024,12 +3030,21 @@
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"adminConsole": {
"message": "Admin Console"
"message": "Yönetici Konsolu"
},
"accountSecurity": {
"message": "Hesap güvenliği"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
"message": "Hedef koleksiyonu atama hatası."
},
"errorAssigningTargetFolder": {
"message": "Error assigning target folder."
"message": "Hedef klasörü atama hatası."
}
}

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden менеджер паролів",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "Вдома, на роботі чи в дорозі, Bitwarden захищає ваші паролі, ключі доступу та конфіденційну інформацію",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Для доступу до сховища увійдіть в обліковий запис, або створіть новий."
@ -374,12 +374,21 @@
"other": {
"message": "Інше"
},
"unlockMethods": {
"message": "Налаштування розблокування"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "Налаштуйте спосіб розблокування, щоб змінити час очікування сховища."
},
"unlockMethodNeeded": {
"message": "Встановіть спосіб розблокування в налаштуваннях"
},
"sessionTimeoutHeader": {
"message": "Час очікування сеансу"
},
"otherOptions": {
"message": "Інші налаштування"
},
"rateExtension": {
"message": "Оцінити розширення"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Заблокувати сховище"
},
"privateModeWarning": {
"message": "Приватний режим - це експериментальна функція і деякі можливості обмежені."
},
"customFields": {
"message": "Власні поля"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "консолі адміністратора,"
},
"accountSecurity": {
"message": "Безпека облікового запису"
},
"notifications": {
"message": "Сповіщення"
},
"appearance": {
"message": "Вигляд"
},
"errorAssigningTargetCollection": {
"message": "Помилка призначення цільової збірки."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden - Trình Quản lý Mật khẩu",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "Ở nhà, ở cơ quan, hay trên đường đi, Bitwarden sẽ bảo mật tất cả mật khẩu, passkey, và thông tin cá nhân của bạn",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "Đăng nhập hoặc tạo tài khoản mới để truy cập kho lưu trữ của bạn."
@ -374,12 +374,21 @@
"other": {
"message": "Khác"
},
"unlockMethods": {
"message": "Unlock options"
},
"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"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "Đánh giá tiện ích mở rộng"
},
@ -650,7 +659,7 @@
"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."
"message": "Đưa ra lựa chọn để thêm một mục nếu không tìm thấy mục đó trong hòm của bạn. Áp dụng với mọi tài khoản đăng nhập trên thiết bị."
},
"showCardsCurrentTab": {
"message": "Hiển thị thẻ trên trang Tab"
@ -685,13 +694,13 @@
"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."
"message": "Đưa ra lựa chọn để cập nhật mật khẩu khi phát hiện có sự thay đổi trên trang web. Áp dụng với mọi tài khoản đăng nhập trên thiết bị."
},
"enableUsePasskeys": {
"message": "Ask to save and use passkeys"
"message": "Đưa ra lựa chọn để lưu và sử dụng passkey"
},
"usePasskeysDesc": {
"message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts."
"message": "Đưa ra lựa chọn để lưu passkey mới hoặc đăng nhập bằng passkey đã lưu trong hòm. Áp dụng với mọi tài khoản đăng nhập trên thiết bị."
},
"notificationChangeDesc": {
"message": "Bạn có muốn cập nhật mật khẩu này trên Bitwarden không?"
@ -712,7 +721,7 @@
"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."
"message": "Truy cập trình khởi tạo mật khẩu và các mục đăng nhập đã lưu của trang web bằng cách nhấn đúp chuột. Áp dụng với mọi tài khoản đăng nhập trên thiết bị."
},
"defaultUriMatchDetection": {
"message": "Phương thức kiểm tra URI mặc định",
@ -728,7 +737,7 @@
"message": "Thay đổi màu sắc ứng dụng."
},
"themeDescAlt": {
"message": "Change the application's color theme. Applies to all logged in accounts."
"message": "Thay đổi tông màu giao diện của ứng dụng. Áp dụng với mọi tài khoản đăng nhập trên thiết bị."
},
"dark": {
"message": "Tối",
@ -1061,10 +1070,10 @@
"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."
"message": "Thay đổi cài đặt của trình duyệt."
},
"autofillOverlayVisibilityOff": {
"message": "Off",
"message": "Tắt",
"description": "Overlay setting select option for disabling autofill overlay"
},
"autofillOverlayVisibilityOnFieldFocus": {
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "Khoá kho lưu trữ"
},
"privateModeWarning": {
"message": "Hỗ trợ cho chế độ riêng tư đang được thử nghiệm và hạn chế một số tính năng."
},
"customFields": {
"message": "Trường tùy chỉnh"
},
@ -1168,7 +1174,7 @@
"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."
"message": "Hiển thị một biểu tượng dễ nhận dạng bên cạnh mỗi mục đăng nhập. Áp dụng với mọi tài khoản đăng nhập trên thiết bị."
},
"enableBadgeCounter": {
"message": "Hiển thị biểu tượng bộ đếm"
@ -1500,7 +1506,7 @@
"message": "Mã PIN không hợp lệ."
},
"tooManyInvalidPinEntryAttemptsLoggingOut": {
"message": "Too many invalid PIN entry attempts. Logging out."
"message": "Mã PIN bị gõ sai quá nhiều lần. Đang đăng xuất."
},
"unlockWithBiometrics": {
"message": "Mở khóa bằng sinh trắc học"
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Bảng điều khiển dành cho quản trị viên"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -3,12 +3,12 @@
"message": "Bitwarden"
},
"extName": {
"message": "Bitwarden Password Manager",
"message": "Bitwarden 密码管理器",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "无论是在家里、工作中还是在外出时Bitwarden 都可以轻松地保护您的所有密码、通行密钥和敏感信息。",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "登录或者创建一个账户来访问您的安全密码库。"
@ -176,7 +176,7 @@
"message": "前往网页 App 吗?"
},
"changeMasterPasswordOnWebConfirmation": {
"message": "You can change your master password on the Bitwarden web app."
"message": "您可以在 Bitwarden 网页应用上更改您的主密码。"
},
"fingerprintPhrase": {
"message": "指纹短语",
@ -374,12 +374,21 @@
"other": {
"message": "其他"
},
"unlockMethods": {
"message": "解锁选项"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "设置一个解锁方式以更改您的密码库超时动作。"
},
"unlockMethodNeeded": {
"message": "在设置中设置一个解锁方式"
},
"sessionTimeoutHeader": {
"message": "会话超时"
},
"otherOptions": {
"message": "其他选项"
},
"rateExtension": {
"message": "为本扩展打分"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "锁定密码库"
},
"privateModeWarning": {
"message": "私密模式的支持是实验性的,某些功能会受到限制。"
},
"customFields": {
"message": "自定义字段"
},
@ -3010,22 +3016,31 @@
"message": "通行密钥已移除"
},
"unassignedItemsBannerNotice": {
"message": "Notice: Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console."
"message": "注意:未分配的组织项目在「所有密码库」视图中不再可见,只能通过管理控制台访问。"
},
"unassignedItemsBannerSelfHostNotice": {
"message": "Notice: On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and will only be accessible via the Admin Console."
"message": "注意:从 2024 年 5 月 16 日起,未分配的组织项目在「所有密码库」视图中将不再可见,只能通过管理控制台访问。"
},
"unassignedItemsBannerCTAPartOne": {
"message": "Assign these items to a collection from the",
"message": "将这些项目分配到集合,通过",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"unassignedItemsBannerCTAPartTwo": {
"message": "to make them visible.",
"message": ",以使其可见。",
"description": "This will be part of a larger sentence, which will read like so: Assign these items to a collection from the Admin Console to make them visible."
},
"adminConsole": {
"message": "管理控制台"
},
"accountSecurity": {
"message": "账户安全"
},
"notifications": {
"message": "通知"
},
"appearance": {
"message": "外观"
},
"errorAssigningTargetCollection": {
"message": "分配目标集合时出错。"
},

View File

@ -7,8 +7,8 @@
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information.",
"description": "Extension description"
"message": "At home, at work, or on the go, Bitwarden easily secures all your passwords, passkeys, and sensitive information",
"description": "Extension description, MUST be less than 112 characters (Safari restriction)"
},
"loginOrCreateNewAccount": {
"message": "登入或建立帳戶以存取您的安全密碼庫。"
@ -374,12 +374,21 @@
"other": {
"message": "其他"
},
"unlockMethods": {
"message": "Unlock options"
},
"unlockMethodNeededToChangeTimeoutActionDesc": {
"message": "設定一個解鎖方式來變更您的密碼庫逾時動作。"
},
"unlockMethodNeeded": {
"message": "設定中設定解鎖"
},
"sessionTimeoutHeader": {
"message": "Session timeout"
},
"otherOptions": {
"message": "Other options"
},
"rateExtension": {
"message": "為本套件評分"
},
@ -1120,9 +1129,6 @@
"commandLockVaultDesc": {
"message": "鎖定密碼庫"
},
"privateModeWarning": {
"message": "私密模式的支援是實驗性功能,部分功能無法完全發揮作用。"
},
"customFields": {
"message": "自訂欄位"
},
@ -3026,6 +3032,15 @@
"adminConsole": {
"message": "Admin Console"
},
"accountSecurity": {
"message": "Account security"
},
"notifications": {
"message": "Notifications"
},
"appearance": {
"message": "Appearance"
},
"errorAssigningTargetCollection": {
"message": "Error assigning target collection."
},

View File

@ -1,5 +1,5 @@
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 { DeviceTrustServiceAbstraction } from "@bitwarden/common/auth/abstractions/device-trust.service.abstraction";
import { DeviceTrustService } from "@bitwarden/common/auth/services/device-trust.service.implementation";
import {
DevicesApiServiceInitOptions,
@ -34,6 +34,7 @@ import {
KeyGenerationServiceInitOptions,
keyGenerationServiceFactory,
} from "../../../platform/background/service-factories/key-generation-service.factory";
import { logServiceFactory } from "../../../platform/background/service-factories/log-service.factory";
import {
PlatformUtilsServiceInitOptions,
platformUtilsServiceFactory,
@ -52,9 +53,9 @@ import {
userDecryptionOptionsServiceFactory,
} from "./user-decryption-options-service.factory";
type DeviceTrustCryptoServiceFactoryOptions = FactoryOptions;
type DeviceTrustServiceFactoryOptions = FactoryOptions;
export type DeviceTrustCryptoServiceInitOptions = DeviceTrustCryptoServiceFactoryOptions &
export type DeviceTrustServiceInitOptions = DeviceTrustServiceFactoryOptions &
KeyGenerationServiceInitOptions &
CryptoFunctionServiceInitOptions &
CryptoServiceInitOptions &
@ -67,16 +68,16 @@ export type DeviceTrustCryptoServiceInitOptions = DeviceTrustCryptoServiceFactor
SecureStorageServiceInitOptions &
UserDecryptionOptionsServiceInitOptions;
export function deviceTrustCryptoServiceFactory(
cache: { deviceTrustCryptoService?: DeviceTrustCryptoServiceAbstraction } & CachedServices,
opts: DeviceTrustCryptoServiceInitOptions,
): Promise<DeviceTrustCryptoServiceAbstraction> {
export function deviceTrustServiceFactory(
cache: { deviceTrustService?: DeviceTrustServiceAbstraction } & CachedServices,
opts: DeviceTrustServiceInitOptions,
): Promise<DeviceTrustServiceAbstraction> {
return factory(
cache,
"deviceTrustCryptoService",
"deviceTrustService",
opts,
async () =>
new DeviceTrustCryptoService(
new DeviceTrustService(
await keyGenerationServiceFactory(cache, opts),
await cryptoFunctionServiceFactory(cache, opts),
await cryptoServiceFactory(cache, opts),
@ -88,6 +89,7 @@ export function deviceTrustCryptoServiceFactory(
await stateProviderFactory(cache, opts),
await secureStorageServiceFactory(cache, opts),
await userDecryptionOptionsServiceFactory(cache, opts),
await logServiceFactory(cache, opts),
),
);
}

View File

@ -0,0 +1,28 @@
import { KdfConfigService as AbstractKdfConfigService } from "@bitwarden/common/auth/abstractions/kdf-config.service";
import { KdfConfigService } from "@bitwarden/common/auth/services/kdf-config.service";
import {
FactoryOptions,
CachedServices,
factory,
} from "../../../platform/background/service-factories/factory-options";
import {
StateProviderInitOptions,
stateProviderFactory,
} from "../../../platform/background/service-factories/state-provider.factory";
type KdfConfigServiceFactoryOptions = FactoryOptions;
export type KdfConfigServiceInitOptions = KdfConfigServiceFactoryOptions & StateProviderInitOptions;
export function kdfConfigServiceFactory(
cache: { kdfConfigService?: AbstractKdfConfigService } & CachedServices,
opts: KdfConfigServiceInitOptions,
): Promise<AbstractKdfConfigService> {
return factory(
cache,
"kdfConfigService",
opts,
async () => new KdfConfigService(await stateProviderFactory(cache, opts)),
);
}

View File

@ -4,6 +4,10 @@ import {
policyServiceFactory,
PolicyServiceInitOptions,
} from "../../../admin-console/background/service-factories/policy-service.factory";
import {
vaultTimeoutSettingsServiceFactory,
VaultTimeoutSettingsServiceInitOptions,
} from "../../../background/service-factories/vault-timeout-settings-service.factory";
import {
apiServiceFactory,
ApiServiceInitOptions,
@ -65,9 +69,10 @@ import {
AuthRequestServiceInitOptions,
} from "./auth-request-service.factory";
import {
deviceTrustCryptoServiceFactory,
DeviceTrustCryptoServiceInitOptions,
} from "./device-trust-crypto-service.factory";
deviceTrustServiceFactory,
DeviceTrustServiceInitOptions,
} from "./device-trust-service.factory";
import { kdfConfigServiceFactory, KdfConfigServiceInitOptions } from "./kdf-config-service.factory";
import {
keyConnectorServiceFactory,
KeyConnectorServiceInitOptions,
@ -102,11 +107,13 @@ export type LoginStrategyServiceInitOptions = LoginStrategyServiceFactoryOptions
EncryptServiceInitOptions &
PolicyServiceInitOptions &
PasswordStrengthServiceInitOptions &
DeviceTrustCryptoServiceInitOptions &
DeviceTrustServiceInitOptions &
AuthRequestServiceInitOptions &
UserDecryptionOptionsServiceInitOptions &
GlobalStateProviderInitOptions &
BillingAccountProfileStateServiceInitOptions;
BillingAccountProfileStateServiceInitOptions &
VaultTimeoutSettingsServiceInitOptions &
KdfConfigServiceInitOptions;
export function loginStrategyServiceFactory(
cache: { loginStrategyService?: LoginStrategyServiceAbstraction } & CachedServices,
@ -135,11 +142,13 @@ export function loginStrategyServiceFactory(
await encryptServiceFactory(cache, opts),
await passwordStrengthServiceFactory(cache, opts),
await policyServiceFactory(cache, opts),
await deviceTrustCryptoServiceFactory(cache, opts),
await deviceTrustServiceFactory(cache, opts),
await authRequestServiceFactory(cache, opts),
await internalUserDecryptionOptionServiceFactory(cache, opts),
await globalStateProviderFactory(cache, opts),
await billingAccountProfileStateServiceFactory(cache, opts),
await vaultTimeoutSettingsServiceFactory(cache, opts),
await kdfConfigServiceFactory(cache, opts),
),
);
}

View File

@ -4,20 +4,35 @@ import {
} from "@bitwarden/common/auth/abstractions/master-password.service.abstraction";
import { MasterPasswordService } from "@bitwarden/common/auth/services/master-password/master-password.service";
import {
encryptServiceFactory,
EncryptServiceInitOptions,
} from "../../../platform/background/service-factories/encrypt-service.factory";
import {
CachedServices,
factory,
FactoryOptions,
} from "../../../platform/background/service-factories/factory-options";
import {
keyGenerationServiceFactory,
KeyGenerationServiceInitOptions,
} from "../../../platform/background/service-factories/key-generation-service.factory";
import {
stateProviderFactory,
StateProviderInitOptions,
} from "../../../platform/background/service-factories/state-provider.factory";
import {
stateServiceFactory,
StateServiceInitOptions,
} from "../../../platform/background/service-factories/state-service.factory";
type MasterPasswordServiceFactoryOptions = FactoryOptions;
export type MasterPasswordServiceInitOptions = MasterPasswordServiceFactoryOptions &
StateProviderInitOptions;
StateProviderInitOptions &
StateServiceInitOptions &
KeyGenerationServiceInitOptions &
EncryptServiceInitOptions;
export function internalMasterPasswordServiceFactory(
cache: { masterPasswordService?: InternalMasterPasswordServiceAbstraction } & CachedServices,
@ -27,7 +42,13 @@ export function internalMasterPasswordServiceFactory(
cache,
"masterPasswordService",
opts,
async () => new MasterPasswordService(await stateProviderFactory(cache, opts)),
async () =>
new MasterPasswordService(
await stateProviderFactory(cache, opts),
await stateServiceFactory(cache, opts),
await keyGenerationServiceFactory(cache, opts),
await encryptServiceFactory(cache, opts),
),
);
}

View File

@ -1,49 +0,0 @@
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<PinCryptoServiceAbstraction> {
return factory(
cache,
"pinCryptoService",
opts,
async () =>
new PinCryptoService(
await stateServiceFactory(cache, opts),
await cryptoServiceFactory(cache, opts),
await vaultTimeoutSettingsServiceFactory(cache, opts),
await logServiceFactory(cache, opts),
),
);
}

View File

@ -0,0 +1,74 @@
import { PinServiceAbstraction, PinService } from "@bitwarden/auth/common";
import {
CryptoFunctionServiceInitOptions,
cryptoFunctionServiceFactory,
} from "../../../platform/background/service-factories/crypto-function-service.factory";
import {
EncryptServiceInitOptions,
encryptServiceFactory,
} from "../../../platform/background/service-factories/encrypt-service.factory";
import {
FactoryOptions,
CachedServices,
factory,
} from "../../../platform/background/service-factories/factory-options";
import {
KeyGenerationServiceInitOptions,
keyGenerationServiceFactory,
} from "../../../platform/background/service-factories/key-generation-service.factory";
import {
LogServiceInitOptions,
logServiceFactory,
} from "../../../platform/background/service-factories/log-service.factory";
import {
StateProviderInitOptions,
stateProviderFactory,
} from "../../../platform/background/service-factories/state-provider.factory";
import {
StateServiceInitOptions,
stateServiceFactory,
} from "../../../platform/background/service-factories/state-service.factory";
import { AccountServiceInitOptions, accountServiceFactory } from "./account-service.factory";
import { KdfConfigServiceInitOptions, kdfConfigServiceFactory } from "./kdf-config-service.factory";
import {
MasterPasswordServiceInitOptions,
masterPasswordServiceFactory,
} from "./master-password-service.factory";
type PinServiceFactoryOptions = FactoryOptions;
export type PinServiceInitOptions = PinServiceFactoryOptions &
AccountServiceInitOptions &
CryptoFunctionServiceInitOptions &
EncryptServiceInitOptions &
KdfConfigServiceInitOptions &
KeyGenerationServiceInitOptions &
LogServiceInitOptions &
MasterPasswordServiceInitOptions &
StateProviderInitOptions &
StateServiceInitOptions;
export function pinServiceFactory(
cache: { pinService?: PinServiceAbstraction } & CachedServices,
opts: PinServiceInitOptions,
): Promise<PinServiceAbstraction> {
return factory(
cache,
"pinService",
opts,
async () =>
new PinService(
await accountServiceFactory(cache, opts),
await cryptoFunctionServiceFactory(cache, opts),
await encryptServiceFactory(cache, opts),
await kdfConfigServiceFactory(cache, opts),
await keyGenerationServiceFactory(cache, opts),
await logServiceFactory(cache, opts),
await masterPasswordServiceFactory(cache, opts),
await stateProviderFactory(cache, opts),
await stateServiceFactory(cache, opts),
),
);
}

View File

@ -1,11 +1,13 @@
import { TwoFactorService as AbstractTwoFactorService } from "@bitwarden/common/auth/abstractions/two-factor.service";
import { TwoFactorService } from "@bitwarden/common/auth/services/two-factor.service";
import { GlobalStateProvider } from "@bitwarden/common/platform/state";
import {
FactoryOptions,
CachedServices,
factory,
} from "../../../platform/background/service-factories/factory-options";
import { globalStateProviderFactory } from "../../../platform/background/service-factories/global-state-provider.factory";
import {
I18nServiceInitOptions,
i18nServiceFactory,
@ -19,7 +21,8 @@ type TwoFactorServiceFactoryOptions = FactoryOptions;
export type TwoFactorServiceInitOptions = TwoFactorServiceFactoryOptions &
I18nServiceInitOptions &
PlatformUtilsServiceInitOptions;
PlatformUtilsServiceInitOptions &
GlobalStateProvider;
export async function twoFactorServiceFactory(
cache: { twoFactorService?: AbstractTwoFactorService } & CachedServices,
@ -33,6 +36,7 @@ export async function twoFactorServiceFactory(
new TwoFactorService(
await i18nServiceFactory(cache, opts),
await platformUtilsServiceFactory(cache, opts),
await globalStateProviderFactory(cache, opts),
),
);
service.init();

View File

@ -32,11 +32,12 @@ import {
} from "../../../platform/background/service-factories/state-service.factory";
import { accountServiceFactory, AccountServiceInitOptions } from "./account-service.factory";
import { KdfConfigServiceInitOptions, kdfConfigServiceFactory } from "./kdf-config-service.factory";
import {
internalMasterPasswordServiceFactory,
MasterPasswordServiceInitOptions,
} from "./master-password-service.factory";
import { PinCryptoServiceInitOptions, pinCryptoServiceFactory } from "./pin-crypto-service.factory";
import { PinServiceInitOptions, pinServiceFactory } from "./pin-service.factory";
import {
userDecryptionOptionsServiceFactory,
UserDecryptionOptionsServiceInitOptions,
@ -56,10 +57,11 @@ export type UserVerificationServiceInitOptions = UserVerificationServiceFactoryO
I18nServiceInitOptions &
UserVerificationApiServiceInitOptions &
UserDecryptionOptionsServiceInitOptions &
PinCryptoServiceInitOptions &
PinServiceInitOptions &
LogServiceInitOptions &
VaultTimeoutSettingsServiceInitOptions &
PlatformUtilsServiceInitOptions;
PlatformUtilsServiceInitOptions &
KdfConfigServiceInitOptions;
export function userVerificationServiceFactory(
cache: { userVerificationService?: AbstractUserVerificationService } & CachedServices,
@ -78,10 +80,11 @@ export function userVerificationServiceFactory(
await i18nServiceFactory(cache, opts),
await userVerificationApiServiceFactory(cache, opts),
await userDecryptionOptionsServiceFactory(cache, opts),
await pinCryptoServiceFactory(cache, opts),
await pinServiceFactory(cache, opts),
await logServiceFactory(cache, opts),
await vaultTimeoutSettingsServiceFactory(cache, opts),
await platformUtilsServiceFactory(cache, opts),
await kdfConfigServiceFactory(cache, opts),
),
);
}

View File

@ -26,7 +26,9 @@ export const fido2AuthGuard: CanActivateFn = async (
const authStatus = await authService.getAuthStatus();
if (authStatus === AuthenticationStatus.Locked) {
routerService.setPreviousUrl(state.url);
// Appending fromLock=true to the query params to indicate that the user is being redirected from the lock screen, this is used for user verification.
const previousUrl = `${state.url}&fromLock=true`;
routerService.setPreviousUrl(previousUrl);
return router.createUrlTree(["/lock"], { queryParams: route.queryParams });
}

View File

@ -49,7 +49,7 @@
<button
type="button"
class="account-switcher-row tw-flex tw-w-full tw-items-center tw-gap-3 tw-rounded-md tw-p-3 disabled:tw-cursor-not-allowed disabled:tw-border-text-muted/60 disabled:!tw-text-muted/60"
(click)="lock()"
(click)="lock(currentAccount.id)"
[disabled]="currentAccount.status === lockedStatus || !activeUserCanLock"
[title]="!activeUserCanLock ? ('unlockMethodNeeded' | i18n) : ''"
>
@ -59,7 +59,7 @@
<button
type="button"
class="account-switcher-row tw-flex tw-w-full tw-items-center tw-gap-3 tw-rounded-md tw-p-3"
(click)="logOut()"
(click)="logOut(currentAccount.id)"
>
<i class="bwi bwi-sign-out tw-text-2xl" aria-hidden="true"></i>
{{ "logOut" | i18n }}

View File

@ -1,7 +1,7 @@
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 { Subject, firstValueFrom, map, of, 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";
@ -10,6 +10,7 @@ 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 { UserId } from "@bitwarden/common/types/guid";
import { DialogService } from "@bitwarden/components";
import { AccountSwitcherService } from "./services/account-switcher.service";
@ -48,7 +49,7 @@ export class AccountSwitcherComponent implements OnInit, OnDestroy {
readonly currentAccount$ = this.accountService.activeAccount$.pipe(
switchMap((a) =>
a == null
? null
? of(null)
: this.authService.activeAccountStatus$.pipe(map((s) => ({ ...a, status: s }))),
),
);
@ -64,9 +65,9 @@ export class AccountSwitcherComponent implements OnInit, OnDestroy {
this.location.back();
}
async lock(userId?: string) {
async lock(userId: string) {
this.loading = true;
await this.vaultTimeoutService.lock(userId ? userId : null);
await this.vaultTimeoutService.lock(userId);
// 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"]);
@ -96,7 +97,7 @@ export class AccountSwitcherComponent implements OnInit, OnDestroy {
.subscribe(() => this.router.navigate(["lock"]));
}
async logOut() {
async logOut(userId: UserId) {
this.loading = true;
const confirmed = await this.dialogService.openSimpleDialog({
title: { key: "logOut" },
@ -105,12 +106,14 @@ export class AccountSwitcherComponent implements OnInit, OnDestroy {
});
if (confirmed) {
this.messagingService.send("logout");
const result = await this.accountSwitcherService.logoutAccount(userId);
// unlocked logout responses need to be navigated out of the account switcher.
// other responses will be handled by background and app.component
if (result?.status === AuthenticationStatus.Unlocked) {
this.location.back();
}
}
// 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"]);
this.loading = false;
}
ngOnDestroy() {

View File

@ -1,10 +1,10 @@
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 { LogService } from "@bitwarden/common/platform/abstractions/log.service";
import { AvatarModule } from "@bitwarden/components";
import { AccountSwitcherService, AvailableAccount } from "./services/account-switcher.service";
@ -21,9 +21,9 @@ export class AccountComponent {
constructor(
private accountSwitcherService: AccountSwitcherService,
private router: Router,
private location: Location,
private i18nService: I18nService,
private logService: LogService,
) {}
get specialAccountAddId() {
@ -32,15 +32,19 @@ export class AccountComponent {
async selectAccount(id: string) {
this.loading.emit(true);
await this.accountSwitcherService.selectAccount(id);
let result;
try {
result = await this.accountSwitcherService.selectAccount(id);
} catch (e) {
this.logService.error("Error selecting account", e);
}
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 {
// Navigate out of account switching for unlocked accounts
// locked or logged out account statuses are handled by background and app.component
if (result?.status === AuthenticationStatus.Unlocked) {
this.location.back();
}
this.loading.emit(false);
}
get status() {

View File

@ -1,13 +1,15 @@
import { Location } from "@angular/common";
import { CommonModule, Location } from "@angular/common";
import { Component } from "@angular/core";
import { ActivatedRoute, Router } from "@angular/router";
import { Observable, combineLatest, switchMap } from "rxjs";
import { JslibModule } from "@bitwarden/angular/jslib.module";
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";
import { AvatarModule } from "@bitwarden/components";
export type CurrentAccount = {
id: UserId;
@ -20,6 +22,8 @@ export type CurrentAccount = {
@Component({
selector: "app-current-account",
templateUrl: "current-account.component.html",
standalone: true,
imports: [CommonModule, JslibModule, AvatarModule],
})
export class CurrentAccountComponent {
currentAccount$: Observable<CurrentAccount>;

View File

@ -58,6 +58,7 @@ describe("AccountSwitcherService", () => {
const accountInfo: AccountInfo = {
name: "Test User 1",
email: "test1@email.com",
emailVerified: true,
};
avatarService.getUserAvatarColor$.mockReturnValue(of("#cccccc"));
@ -89,6 +90,7 @@ describe("AccountSwitcherService", () => {
for (let i = 0; i < numberOfAccounts; i++) {
seedAccounts[`${i}` as UserId] = {
email: `test${i}@email.com`,
emailVerified: true,
name: "Test User ${i}",
};
seedStatuses[`${i}` as UserId] = AuthenticationStatus.Unlocked;
@ -113,6 +115,7 @@ describe("AccountSwitcherService", () => {
const user1AccountInfo: AccountInfo = {
name: "Test User 1",
email: "",
emailVerified: true,
};
accountsSubject.next({ ["1" as UserId]: user1AccountInfo });
authStatusSubject.next({ ["1" as UserId]: AuthenticationStatus.LoggedOut });
@ -183,4 +186,35 @@ describe("AccountSwitcherService", () => {
expect(removeListenerSpy).toBeCalledTimes(1);
});
});
describe("logout", () => {
const userId1 = "1" as UserId;
const userId2 = "2" as UserId;
it("initiates logout", async () => {
let listener: (
message: { command: string; userId: UserId; status: AuthenticationStatus },
sender: unknown,
sendResponse: unknown,
) => void;
jest.spyOn(chrome.runtime.onMessage, "addListener").mockImplementation((addedListener) => {
listener = addedListener;
});
const removeListenerSpy = jest.spyOn(chrome.runtime.onMessage, "removeListener");
const logoutPromise = accountSwitcherService.logoutAccount(userId1);
listener(
{ command: "switchAccountFinish", userId: userId2, status: AuthenticationStatus.Unlocked },
undefined,
undefined,
);
const result = await logoutPromise;
expect(messagingService.send).toHaveBeenCalledWith("logout", { userId: userId1 });
expect(result).toEqual({ newUserId: userId2, status: AuthenticationStatus.Unlocked });
expect(removeListenerSpy).toBeCalledTimes(1);
});
});
});

View File

@ -41,7 +41,7 @@ export class AccountSwitcherService {
SPECIAL_ADD_ACCOUNT_ID = "addAccount";
availableAccounts$: Observable<AvailableAccount[]>;
switchAccountFinished$: Observable<string>;
switchAccountFinished$: Observable<{ userId: UserId; status: AuthenticationStatus }>;
constructor(
private accountService: AccountService,
@ -110,12 +110,12 @@ export class AccountSwitcherService {
}),
);
// 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(
// Create a reusable observable that listens to the switchAccountFinish message and returns the userId from the message
this.switchAccountFinished$ = fromChromeEvent<
[message: { command: string; userId: UserId; status: AuthenticationStatus }]
>(chrome.runtime.onMessage).pipe(
filter(([message]) => message.command === "switchAccountFinish"),
map(([message]) => message.userId),
map(([message]) => ({ userId: message.userId, status: message.status })),
);
}
@ -127,12 +127,46 @@ export class AccountSwitcherService {
if (id === this.SPECIAL_ADD_ACCOUNT_ID) {
id = null;
}
const userId = id as UserId;
// Creates a subscription to the switchAccountFinished observable but further
// filters it to only care about the current userId.
const switchAccountFinishedPromise = firstValueFrom(
const switchAccountFinishedPromise = this.listenForSwitchAccountFinish(userId);
// Initiate the actions required to make account switching happen
await this.accountService.switchAccount(userId);
this.messagingService.send("switchAccount", { userId }); // This message should cause switchAccountFinish to be sent
// Wait until we receive the switchAccountFinished message
return await switchAccountFinishedPromise;
}
/**
*
* @param userId the user id to logout
* @returns the userId and status of the that has been switch to due to the logout. null on errors.
*/
async logoutAccount(
userId: UserId,
): Promise<{ newUserId: UserId; status: AuthenticationStatus } | null> {
// logout creates an account switch to the next up user, which may be null
const switchPromise = this.listenForSwitchAccountFinish(null);
await this.messagingService.send("logout", { userId });
// wait for account switch to happen, the result will be the new user id and status
const result = await switchPromise;
return { newUserId: result.userId, status: result.status };
}
// Listens for the switchAccountFinish message and returns the userId from the message
// Optionally filters switchAccountFinish to an expected userId
private listenForSwitchAccountFinish(
expectedUserId: UserId | null,
): Promise<{ userId: UserId; status: AuthenticationStatus } | null> {
return firstValueFrom(
this.switchAccountFinished$.pipe(
filter((userId) => userId === id),
filter(({ userId }) => (expectedUserId ? userId === expectedUserId : true)),
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
@ -143,20 +177,13 @@ export class AccountSwitcherService {
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) => {
).catch((err) => {
if (
err instanceof Error &&
err.message === AccountSwitcherService.incompleteAccountSwitchError
) {
this.logService.warning("message 'switchAccount' never responded.");
return;
return null;
}
throw err;
});

View File

@ -12,8 +12,16 @@
<input class="tw-font-mono" bitInput type="password" formControlName="pin" />
<button type="button" bitIconButton bitSuffix bitPasswordInputToggle></button>
</bit-form-field>
<label class="tw-flex tw-items-start tw-gap-2" *ngIf="showMasterPassOnRestart">
<input class="tw-mt-1" type="checkbox" bitCheckbox formControlName="masterPassOnRestart" />
<label
class="tw-flex tw-items-start tw-gap-2"
*ngIf="showMasterPasswordOnClientRestartOption"
>
<input
class="tw-mt-1"
type="checkbox"
bitCheckbox
formControlName="requireMasterPasswordOnClientRestart"
/>
<span>{{ "lockWithMasterPassOnRestart" | i18n }}</span>
</label>
</div>

View File

@ -89,7 +89,6 @@
<p class="text-center" *ngIf="!fido2Data.isFido2Session">
<button type="button" appStopClick (click)="logOut()">{{ "logOut" | i18n }}</button>
</p>
<app-private-mode-warning></app-private-mode-warning>
<app-callout *ngIf="biometricError" type="error">{{ biometricError }}</app-callout>
<p class="text-center text-muted" *ngIf="pendingBiometric">
<i class="bwi bwi-spinner bwi-spin" aria-hidden="true"></i> {{ "awaitDesktop" | i18n }}

View File

@ -3,7 +3,7 @@ import { Router } from "@angular/router";
import { firstValueFrom } from "rxjs";
import { LockComponent as BaseLockComponent } from "@bitwarden/angular/auth/components/lock.component";
import { PinCryptoServiceAbstraction } from "@bitwarden/auth/common";
import { PinServiceAbstraction } from "@bitwarden/auth/common";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vault-timeout/vault-timeout-settings.service";
import { VaultTimeoutService } from "@bitwarden/common/abstractions/vault-timeout/vault-timeout.service";
@ -11,7 +11,8 @@ import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abs
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 { DeviceTrustCryptoServiceAbstraction } from "@bitwarden/common/auth/abstractions/device-trust-crypto.service.abstraction";
import { DeviceTrustServiceAbstraction } from "@bitwarden/common/auth/abstractions/device-trust.service.abstraction";
import { KdfConfigService } from "@bitwarden/common/auth/abstractions/kdf-config.service";
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";
@ -58,14 +59,15 @@ export class LockComponent extends BaseLockComponent {
policyApiService: PolicyApiServiceAbstraction,
policyService: InternalPolicyService,
passwordStrengthService: PasswordStrengthServiceAbstraction,
private authService: AuthService,
authService: AuthService,
dialogService: DialogService,
deviceTrustCryptoService: DeviceTrustCryptoServiceAbstraction,
deviceTrustService: DeviceTrustServiceAbstraction,
userVerificationService: UserVerificationService,
pinCryptoService: PinCryptoServiceAbstraction,
pinService: PinServiceAbstraction,
private routerService: BrowserRouterService,
biometricStateService: BiometricStateService,
accountService: AccountService,
kdfConfigService: KdfConfigService,
) {
super(
masterPasswordService,
@ -85,11 +87,13 @@ export class LockComponent extends BaseLockComponent {
policyService,
passwordStrengthService,
dialogService,
deviceTrustCryptoService,
deviceTrustService,
userVerificationService,
pinCryptoService,
pinService,
biometricStateService,
accountService,
authService,
kdfConfigService,
);
this.successRoute = "/tabs/current";
this.isInitialLockScreen = (window as any).previousPopupUrl == null;
@ -139,15 +143,17 @@ export class LockComponent extends BaseLockComponent {
try {
success = await super.unlockBiometric();
} catch (e) {
const error = BiometricErrors[e as BiometricErrorTypes];
const error = BiometricErrors[e?.message as BiometricErrorTypes];
if (error == null) {
this.logService.error("Unknown error: " + e);
return false;
}
this.biometricError = this.i18nService.t(error.description);
} finally {
this.pendingBiometric = false;
}
this.pendingBiometric = false;
return success;
}

View File

@ -12,7 +12,7 @@ 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 { DeviceTrustServiceAbstraction } from "@bitwarden/common/auth/abstractions/device-trust.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";
@ -20,7 +20,6 @@ import { EnvironmentService } from "@bitwarden/common/platform/abstractions/envi
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";
@ -44,10 +43,9 @@ export class LoginViaAuthRequestComponent extends BaseLoginWithDeviceComponent {
platformUtilsService: PlatformUtilsService,
anonymousHubService: AnonymousHubService,
validationService: ValidationService,
stateService: StateService,
loginEmailService: LoginEmailServiceAbstraction,
syncService: SyncService,
deviceTrustCryptoService: DeviceTrustCryptoServiceAbstraction,
deviceTrustService: DeviceTrustServiceAbstraction,
authRequestService: AuthRequestServiceAbstraction,
loginStrategyService: LoginStrategyServiceAbstraction,
accountService: AccountService,
@ -67,12 +65,11 @@ export class LoginViaAuthRequestComponent extends BaseLoginWithDeviceComponent {
platformUtilsService,
anonymousHubService,
validationService,
stateService,
accountService,
loginEmailService,
deviceTrustCryptoService,
deviceTrustService,
authRequestService,
loginStrategyService,
accountService,
);
super.onSuccessfulLogin = async () => {
await syncService.fullSync(true);

View File

@ -57,7 +57,6 @@
</button>
</div>
</div>
<app-private-mode-warning></app-private-mode-warning>
<div class="content login-buttons">
<button type="submit" class="btn primary block" [disabled]="form.loading">
<span [hidden]="form.loading"

View File

@ -0,0 +1,140 @@
<app-header>
<div class="left">
<button type="button" routerLink="/tabs/settings">
<span class="header-icon"><i class="bwi bwi-angle-left" aria-hidden="true"></i></span>
<span>{{ "back" | i18n }}</span>
</button>
</div>
<h1 class="center">
<span class="title">{{ "accountSecurity" | i18n }}</span>
</h1>
<div class="right">
<app-pop-out></app-pop-out>
</div>
</app-header>
<main tabindex="-1" [formGroup]="form">
<div class="box list">
<h2 class="box-header">{{ "unlockMethods" | i18n }}</h2>
<div class="box-content single-line">
<div class="box-content-row box-content-row-checkbox" appBoxRow *ngIf="supportsBiometric">
<label for="biometric">{{ "unlockWithBiometrics" | i18n }}</label>
<input id="biometric" type="checkbox" formControlName="biometric" />
</div>
<div
class="box-content-row box-content-row-checkbox"
appBoxRow
*ngIf="supportsBiometric && this.form.value.biometric"
>
<label for="autoBiometricsPrompt">{{ "enableAutoBiometricsPrompt" | i18n }}</label>
<input
id="autoBiometricsPrompt"
type="checkbox"
(change)="updateAutoBiometricsPrompt()"
formControlName="enableAutoBiometricsPrompt"
/>
</div>
<div class="box-content-row box-content-row-checkbox" appBoxRow>
<label for="pin">{{ "unlockWithPin" | i18n }}</label>
<input id="pin" type="checkbox" formControlName="pin" />
</div>
</div>
</div>
<div class="box list">
<h2 class="box-header">{{ "sessionTimeoutHeader" | i18n }}</h2>
<div class="box-content single-line">
<app-callout type="info" *ngIf="vaultTimeoutPolicyCallout | async as policy">
<span *ngIf="policy.timeout && policy.action">
{{
"vaultTimeoutPolicyWithActionInEffect"
| i18n: policy.timeout.hours : policy.timeout.minutes : (policy.action | i18n)
}}
</span>
<span *ngIf="policy.timeout && !policy.action">
{{ "vaultTimeoutPolicyInEffect" | i18n: policy.timeout.hours : policy.timeout.minutes }}
</span>
<span *ngIf="!policy.timeout && policy.action">
{{ "vaultTimeoutActionPolicyInEffect" | i18n: (policy.action | i18n) }}
</span>
</app-callout>
<app-vault-timeout-input
[vaultTimeoutOptions]="vaultTimeoutOptions"
[formControl]="form.controls.vaultTimeout"
ngDefaultControl
>
</app-vault-timeout-input>
<div class="box-content-row display-block" appBoxRow>
<label for="vaultTimeoutAction">{{ "vaultTimeoutAction" | i18n }}</label>
<select
id="vaultTimeoutAction"
name="VaultTimeoutActions"
formControlName="vaultTimeoutAction"
>
<option *ngFor="let action of availableVaultTimeoutActions" [ngValue]="action">
{{ action | i18n }}
</option>
</select>
</div>
<div
*ngIf="!availableVaultTimeoutActions.includes(VaultTimeoutAction.Lock)"
id="unlockMethodHelp"
class="box-footer"
>
{{ "unlockMethodNeededToChangeTimeoutActionDesc" | i18n }}
</div>
</div>
</div>
<div class="box list">
<h2 class="box-header">{{ "otherOptions" | i18n }}</h2>
<div class="box-content single-line">
<button
type="button"
class="box-content-row box-content-row-flex text-default"
appStopClick
(click)="fingerprint()"
>
<div class="row-main">{{ "fingerprintPhrase" | i18n }}</div>
</button>
<button
type="button"
class="box-content-row box-content-row-flex text-default"
appStopClick
(click)="twoStep()"
>
<div class="row-main">{{ "twoStepLogin" | i18n }}</div>
<i class="bwi bwi-external-link bwi-lg row-sub-icon" aria-hidden="true"></i>
</button>
<button
type="button"
class="box-content-row box-content-row-flex text-default"
appStopClick
(click)="changePassword()"
*ngIf="showChangeMasterPass"
>
<div class="row-main">{{ "changeMasterPassword" | i18n }}</div>
<i class="bwi bwi-external-link bwi-lg row-sub-icon" aria-hidden="true"></i>
</button>
<button
*ngIf="
!accountSwitcherEnabled && availableVaultTimeoutActions.includes(VaultTimeoutAction.Lock)
"
type="button"
class="box-content-row box-content-row-flex text-default"
appStopClick
(click)="lock()"
>
<div class="row-main">{{ "lockNow" | i18n }}</div>
<i class="bwi bwi-angle-right bwi-lg row-sub-icon" aria-hidden="true"></i>
</button>
<button
*ngIf="!accountSwitcherEnabled"
type="button"
class="box-content-row box-content-row-flex text-default"
appStopClick
(click)="logOut()"
>
<div class="row-main">{{ "logOut" | i18n }}</div>
<i class="bwi bwi-angle-right bwi-lg row-sub-icon" aria-hidden="true"></i>
</button>
</div>
</div>
</main>

View File

@ -1,6 +1,5 @@
import { ChangeDetectorRef, Component, OnInit } from "@angular/core";
import { FormBuilder } from "@angular/forms";
import { Router } from "@angular/router";
import {
BehaviorSubject,
combineLatest,
@ -17,12 +16,13 @@ import {
} from "rxjs";
import { FingerprintDialogComponent } from "@bitwarden/auth/angular";
import { PinServiceAbstraction } from "@bitwarden/auth/common";
import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vault-timeout/vault-timeout-settings.service";
import { VaultTimeoutService } from "@bitwarden/common/abstractions/vault-timeout/vault-timeout.service";
import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction";
import { PolicyType } from "@bitwarden/common/admin-console/enums";
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction";
import { DeviceType } from "@bitwarden/common/enums";
import { VaultTimeoutAction } from "@bitwarden/common/enums/vault-timeout-action.enum";
import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service";
import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
@ -31,41 +31,31 @@ import { MessagingService } from "@bitwarden/common/platform/abstractions/messag
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 {
VaultTimeout,
VaultTimeoutOption,
VaultTimeoutStringType,
} from "@bitwarden/common/types/vault-timeout.type";
import { DialogService } from "@bitwarden/components";
import { SetPinComponent } from "../../auth/popup/components/set-pin.component";
import { BiometricErrors, BiometricErrorTypes } from "../../models/biometricErrors";
import { BrowserApi } from "../../platform/browser/browser-api";
import { enableAccountSwitching } from "../../platform/flags";
import BrowserPopupUtils from "../../platform/popup/browser-popup-utils";
import { BiometricErrors, BiometricErrorTypes } from "../../../models/biometricErrors";
import { BrowserApi } from "../../../platform/browser/browser-api";
import { enableAccountSwitching } from "../../../platform/flags";
import BrowserPopupUtils from "../../../platform/popup/browser-popup-utils";
import { SetPinComponent } from "../components/set-pin.component";
import { AboutComponent } from "./about.component";
import { AwaitDesktopDialogComponent } from "./await-desktop-dialog.component";
const RateUrls = {
[DeviceType.ChromeExtension]:
"https://chromewebstore.google.com/detail/bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb/reviews",
[DeviceType.FirefoxExtension]:
"https://addons.mozilla.org/en-US/firefox/addon/bitwarden-password-manager/#reviews",
[DeviceType.OperaExtension]:
"https://addons.opera.com/en/extensions/details/bitwarden-free-password-manager/#feedback-container",
[DeviceType.EdgeExtension]:
"https://microsoftedge.microsoft.com/addons/detail/jbkfoedolllekgbhcbcoahefnbanhhlh",
[DeviceType.VivaldiExtension]:
"https://chromewebstore.google.com/detail/bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb/reviews",
[DeviceType.SafariExtension]: "https://apps.apple.com/app/bitwarden/id1352778147",
};
@Component({
selector: "app-settings",
templateUrl: "settings.component.html",
selector: "auth-account-security",
templateUrl: "account-security.component.html",
})
// eslint-disable-next-line rxjs-angular/prefer-takeuntil
export class SettingsComponent implements OnInit {
export class AccountSecurityComponent implements OnInit {
protected readonly VaultTimeoutAction = VaultTimeoutAction;
availableVaultTimeoutActions: VaultTimeoutAction[] = [];
vaultTimeoutOptions: any[];
vaultTimeoutOptions: VaultTimeoutOption[];
vaultTimeoutPolicyCallout: Observable<{
timeout: { hours: number; minutes: number };
action: VaultTimeoutAction;
@ -75,7 +65,7 @@ export class SettingsComponent implements OnInit {
accountSwitcherEnabled = false;
form = this.formBuilder.group({
vaultTimeout: [null as number | null],
vaultTimeout: [null as VaultTimeout | null],
vaultTimeoutAction: [VaultTimeoutAction.Lock],
pin: [null as boolean | null],
biometric: false,
@ -86,6 +76,8 @@ export class SettingsComponent implements OnInit {
private destroy$ = new Subject<void>();
constructor(
private accountService: AccountService,
private pinService: PinServiceAbstraction,
private policyService: PolicyService,
private formBuilder: FormBuilder,
private platformUtilsService: PlatformUtilsService,
@ -93,7 +85,6 @@ export class SettingsComponent implements OnInit {
private vaultTimeoutService: VaultTimeoutService,
private vaultTimeoutSettingsService: VaultTimeoutSettingsService,
public messagingService: MessagingService,
private router: Router,
private environmentService: EnvironmentService,
private cryptoService: CryptoService,
private stateService: StateService,
@ -132,22 +123,32 @@ export class SettingsComponent implements OnInit {
{ name: this.i18nService.t("thirtyMinutes"), value: 30 },
{ name: this.i18nService.t("oneHour"), value: 60 },
{ name: this.i18nService.t("fourHours"), value: 240 },
// { name: i18nService.t('onIdle'), value: -4 },
// { name: i18nService.t('onSleep'), value: -3 },
];
if (showOnLocked) {
this.vaultTimeoutOptions.push({ name: this.i18nService.t("onLocked"), value: -2 });
this.vaultTimeoutOptions.push({
name: this.i18nService.t("onLocked"),
value: VaultTimeoutStringType.OnLocked,
});
}
this.vaultTimeoutOptions.push({ name: this.i18nService.t("onRestart"), value: -1 });
this.vaultTimeoutOptions.push({ name: this.i18nService.t("never"), value: null });
this.vaultTimeoutOptions.push({
name: this.i18nService.t("onRestart"),
value: VaultTimeoutStringType.OnRestart,
});
this.vaultTimeoutOptions.push({
name: this.i18nService.t("never"),
value: VaultTimeoutStringType.Never,
});
let timeout = await this.vaultTimeoutSettingsService.getVaultTimeout();
if (timeout === -2 && !showOnLocked) {
timeout = -1;
const activeAccount = await firstValueFrom(this.accountService.activeAccount$);
let timeout = await firstValueFrom(
this.vaultTimeoutSettingsService.getVaultTimeoutByUserId$(activeAccount.id),
);
if (timeout === VaultTimeoutStringType.OnLocked && !showOnLocked) {
timeout = VaultTimeoutStringType.OnRestart;
}
const pinStatus = await this.vaultTimeoutSettingsService.isPinLockSet();
this.form.controls.vaultTimeout.valueChanges
.pipe(
@ -169,12 +170,14 @@ export class SettingsComponent implements OnInit {
)
.subscribe();
const userId = (await firstValueFrom(this.accountService.activeAccount$))?.id;
const initialValues = {
vaultTimeout: timeout,
vaultTimeoutAction: await firstValueFrom(
this.vaultTimeoutSettingsService.vaultTimeoutAction$(),
this.vaultTimeoutSettingsService.getVaultTimeoutActionByUserId$(activeAccount.id),
),
pin: pinStatus !== "DISABLED",
pin: await this.pinService.isPinSet(userId),
biometric: await this.vaultTimeoutSettingsService.isBiometricLockSet(),
enableAutoBiometricsPrompt: await firstValueFrom(
this.biometricStateService.promptAutomatically$,
@ -216,7 +219,7 @@ export class SettingsComponent implements OnInit {
switchMap(() =>
combineLatest([
this.vaultTimeoutSettingsService.availableVaultTimeoutActions$(),
this.vaultTimeoutSettingsService.vaultTimeoutAction$(),
this.vaultTimeoutSettingsService.getVaultTimeoutActionByUserId$(activeAccount.id),
]),
),
takeUntil(this.destroy$),
@ -250,8 +253,8 @@ export class SettingsComponent implements OnInit {
});
}
async saveVaultTimeout(previousValue: number, newValue: number) {
if (newValue == null) {
async saveVaultTimeout(previousValue: VaultTimeout, newValue: VaultTimeout) {
if (newValue === VaultTimeoutStringType.Never) {
const confirmed = await this.dialogService.openSimpleDialog({
title: { key: "warning" },
content: { key: "neverLockWarning" },
@ -275,11 +278,18 @@ export class SettingsComponent implements OnInit {
return;
}
await this.vaultTimeoutSettingsService.setVaultTimeoutOptions(
newValue,
await firstValueFrom(this.vaultTimeoutSettingsService.vaultTimeoutAction$()),
const activeAccount = await firstValueFrom(this.accountService.activeAccount$);
const vaultTimeoutAction = await firstValueFrom(
this.vaultTimeoutSettingsService.getVaultTimeoutActionByUserId$(activeAccount.id),
);
if (newValue == null) {
await this.vaultTimeoutSettingsService.setVaultTimeoutOptions(
activeAccount.id,
newValue,
vaultTimeoutAction,
);
if (newValue === VaultTimeoutStringType.Never) {
this.messagingService.send("bgReseedStorage");
}
}
@ -309,7 +319,10 @@ export class SettingsComponent implements OnInit {
return;
}
const activeAccount = await firstValueFrom(this.accountService.activeAccount$);
await this.vaultTimeoutSettingsService.setVaultTimeoutOptions(
activeAccount.id,
this.form.value.vaultTimeout,
newValue,
);
@ -423,22 +436,6 @@ export class SettingsComponent implements OnInit {
);
}
async lock() {
await this.vaultTimeoutService.lock();
}
async logOut() {
const confirmed = await this.dialogService.openSimpleDialog({
title: { key: "logOut" },
content: { key: "logOutConfirmation" },
type: "info",
});
if (confirmed) {
this.messagingService.send("logout");
}
}
async changePassword() {
const confirmed = await this.dialogService.openSimpleDialog({
title: { key: "continueToWebApp" },
@ -465,44 +462,6 @@ export class SettingsComponent implements OnInit {
}
}
async share() {
const confirmed = await this.dialogService.openSimpleDialog({
title: { key: "learnOrg" },
content: { key: "learnOrgConfirmation" },
type: "info",
});
if (confirmed) {
// 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
BrowserApi.createNewTab("https://bitwarden.com/help/about-organizations/");
}
}
async webVault() {
const env = await firstValueFrom(this.environmentService.environment$);
const url = env.getWebVaultUrl();
await BrowserApi.createNewTab(url);
}
async import() {
await this.router.navigate(["/import"]);
if (await BrowserApi.isPopupOpen()) {
// 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
BrowserPopupUtils.openCurrentPagePopout(window);
}
}
export() {
// 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(["/export"]);
}
about() {
this.dialogService.open(AboutComponent);
}
async fingerprint() {
const fingerprint = await this.cryptoService.getFingerprint(
await this.stateService.getUserId(),
@ -515,11 +474,21 @@ export class SettingsComponent implements OnInit {
return firstValueFrom(dialogRef.closed);
}
rate() {
const deviceType = this.platformUtilsService.getDevice();
// 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
BrowserApi.createNewTab((RateUrls as any)[deviceType]);
async lock() {
await this.vaultTimeoutService.lock();
}
async logOut() {
const confirmed = await this.dialogService.openSimpleDialog({
title: { key: "logOut" },
content: { key: "logOutConfirmation" },
type: "info",
});
const userId = (await firstValueFrom(this.accountService.activeAccount$))?.id;
if (confirmed) {
this.messagingService.send("logout", { userId: userId });
}
}
ngOnDestroy() {

Some files were not shown because too many files have changed in this diff Show More