diff --git a/.github/whitelist-capital-letters.txt b/.github/whitelist-capital-letters.txt
index a320149281b..73d323851e5 100644
--- a/.github/whitelist-capital-letters.txt
+++ b/.github/whitelist-capital-letters.txt
@@ -37,7 +37,6 @@
./apps/browser/store/windows/AppxManifest.xml
./apps/browser/src/background/nativeMessaging.background.ts
./apps/browser/src/models/browserComponentState.ts
-./apps/browser/src/models/browserSendComponentState.ts
./apps/browser/src/models/browserGroupingsComponentState.ts
./apps/browser/src/models/biometricErrors.ts
./apps/browser/src/browser/safariApp.ts
diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml
index bc9bdec396a..2a59dc28fc9 100644
--- a/.github/workflows/build-desktop.yml
+++ b/.github/workflows/build-desktop.yml
@@ -1433,7 +1433,7 @@ jobs:
crowdin-push:
name: Crowdin Push
- if: github.ref == 'refs/heads/main'
+ if: github.event_name != 'pull_request_target' && github.ref == 'refs/heads/main'
needs:
- linux
- windows
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 9dc72c7fdda..a907618bd36 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -58,3 +58,31 @@ jobs:
run: |
npm ci
npm run lint
+
+ rust:
+ name: Run Rust lint on ${{ matrix.os }}
+ runs-on: ${{ matrix.os || 'ubuntu-latest' }}
+
+ strategy:
+ matrix:
+ os:
+ - ubuntu-latest
+ - macos-latest
+ - windows-latest
+
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ - name: Check Rust version
+ run: rustup --version
+
+ - name: Run cargo fmt
+ working-directory: ./apps/desktop/desktop_native
+ run: cargo fmt --check
+
+ - name: Run Clippy
+ working-directory: ./apps/desktop/desktop_native
+ run: cargo clippy --all-features --tests
+ env:
+ RUSTFLAGS: "-D warnings"
diff --git a/apps/browser/package.json b/apps/browser/package.json
index 4610bcb2df8..3643066b860 100644
--- a/apps/browser/package.json
+++ b/apps/browser/package.json
@@ -1,6 +1,6 @@
{
"name": "@bitwarden/browser",
- "version": "2024.12.2",
+ "version": "2024.12.4",
"scripts": {
"build": "npm run build:chrome",
"build:chrome": "cross-env BROWSER=chrome MANIFEST_VERSION=3 webpack",
@@ -14,11 +14,11 @@
"build:watch:firefox": "npm run build:firefox -- --watch",
"build:watch:opera": "npm run build:opera -- --watch",
"build:watch:safari": "npm run build:safari -- --watch",
- "build:prod:chrome": "cross-env NODE_ENV=production NODE_OPTIONS=\"--max-old-space-size=4096\" npm run build:chrome",
- "build:prod:edge": "cross-env NODE_ENV=production NODE_OPTIONS=\"--max-old-space-size=4096\" npm run build:edge",
- "build:prod:firefox": "cross-env NODE_ENV=production NODE_OPTIONS=\"--max-old-space-size=4096\" npm run build:firefox",
- "build:prod:opera": "cross-env NODE_ENV=production NODE_OPTIONS=\"--max-old-space-size=4096\" npm run build:opera",
- "build:prod:safari": "cross-env NODE_ENV=production NODE_OPTIONS=\"--max-old-space-size=4096\" npm run build:safari",
+ "build:prod:chrome": "cross-env NODE_ENV=production NODE_OPTIONS=\"--max-old-space-size=8192\" npm run build:chrome",
+ "build:prod:edge": "cross-env NODE_ENV=production NODE_OPTIONS=\"--max-old-space-size=8192\" npm run build:edge",
+ "build:prod:firefox": "cross-env NODE_ENV=production NODE_OPTIONS=\"--max-old-space-size=8192\" npm run build:firefox",
+ "build:prod:opera": "cross-env NODE_ENV=production NODE_OPTIONS=\"--max-old-space-size=8192\" npm run build:opera",
+ "build:prod:safari": "cross-env NODE_ENV=production NODE_OPTIONS=\"--max-old-space-size=8192\" npm run build:safari",
"dist:chrome": "npm run build:prod:chrome && mkdir -p dist && ./scripts/compress.ps1 dist-chrome.zip",
"dist:edge": "npm run build:prod:edge && mkdir -p dist && ./scripts/compress.ps1 dist-edge.zip",
"dist:firefox": "npm run build:prod:firefox && mkdir -p dist && ./scripts/compress.ps1 dist-firefox.zip",
diff --git a/apps/browser/src/_locales/ar/messages.json b/apps/browser/src/_locales/ar/messages.json
index 725eef3bd07..7ba554b13b7 100644
--- a/apps/browser/src/_locales/ar/messages.json
+++ b/apps/browser/src/_locales/ar/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "قيِّم هذه الإضافة"
},
- "rateExtensionDesc": {
- "message": "يرجى النظر في مساعدتنا بكتابة تعليق إيجابي!"
- },
"browserNotSupportClipboard": {
"message": "متصفح الويب الخاص بك لا يدعم خاصية النسخ السهل. يرجى استخدام النسخ اليدوي."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/az/messages.json b/apps/browser/src/_locales/az/messages.json
index 4b83341dce5..aea4e46abeb 100644
--- a/apps/browser/src/_locales/az/messages.json
+++ b/apps/browser/src/_locales/az/messages.json
@@ -193,10 +193,10 @@
"message": "Kimliyi avto-doldur"
},
"fillVerificationCode": {
- "message": "Fill verification code"
+ "message": "Doğrulama kodunu doldur"
},
"fillVerificationCodeAria": {
- "message": "Fill Verification Code",
+ "message": "Doğrulama Kodunu Doldur",
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
},
"generatePasswordCopied": {
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Uzantını qiymətləndir"
},
- "rateExtensionDesc": {
- "message": "Gözəl bir rəy ilə bizə dəstək ola bilərsiniz!"
- },
"browserNotSupportClipboard": {
"message": "Veb brauzeriniz lövhəyə kopyalamağı dəstəkləmir. Əvəzində əllə kopyalayın."
},
@@ -3588,11 +3585,11 @@
"description": "Screen reader text (aria-label) for unlock account button in overlay"
},
"totpCodeAria": {
- "message": "Time-based One-Time Password Verification Code",
+ "message": "Vaxt əsaslı Təkistifadəlik Parol Doğrulama Kodu",
"description": "Aria label for the totp code displayed in the inline menu for autofill"
},
"totpSecondsSpanAria": {
- "message": "Time remaining before current TOTP expires",
+ "message": "Hazırkı TOTP-nin bitməsinə qalan vaxt",
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
},
"fillCredentialsFor": {
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Uzantı ikonunda giriş üçün avto-doldurma təklif sayını göstər"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "İlkin sistem"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Vacib bildiriş"
+ },
+ "setupTwoStepLogin": {
+ "message": "İki addımlı girişi qur"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden, 2025-ci ilin Fevral ayından etibarən yeni cihazlardan gələn girişləri doğrulamaq üçün hesabınızın e-poçtuna bir kod göndərəcək."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "Hesabınızı qorumaq üçün alternativ bir yol kimi iki addımlı girişi qura və ya e-poçtunuzu müraciət edə biləcəyiniz e-poçtla dəyişdirə bilərsiniz."
+ },
+ "remindMeLater": {
+ "message": "Daha sonra xatırlat"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "$EMAIL$ e-poçtunuza güvənli şəkildə müraciət edə bilirsiniz?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "Xeyr, edə bilmirəm"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Bəli, e-poçtuma güvənli şəkildə müraciət edə bilirəm"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "İki addımlı girişi işə sal"
+ },
+ "changeAcctEmail": {
+ "message": "Hesabın e-poçtunu dəyişdir"
+ },
"extensionWidth": {
"message": "Uzantı eni"
},
diff --git a/apps/browser/src/_locales/be/messages.json b/apps/browser/src/_locales/be/messages.json
index 3010bb6b6c6..37b234105c3 100644
--- a/apps/browser/src/_locales/be/messages.json
+++ b/apps/browser/src/_locales/be/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Ацаніць пашырэнне"
},
- "rateExtensionDesc": {
- "message": "Падумайце пра тое, каб дапамагчы нам добрым водгукам!"
- },
"browserNotSupportClipboard": {
"message": "Ваш вэб-браўзер не падтрымлівае капіяванне даных у буфер абмену. Скапіюйце іх уручную."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/bg/messages.json b/apps/browser/src/_locales/bg/messages.json
index 56d2ce80ea1..554650d5800 100644
--- a/apps/browser/src/_locales/bg/messages.json
+++ b/apps/browser/src/_locales/bg/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Оценяване на разширението"
},
- "rateExtensionDesc": {
- "message": "Молим да ни помогнете, като оставите положителен отзив!"
- },
"browserNotSupportClipboard": {
"message": "Браузърът не поддържа копиране в буфера, затова копирайте на ръка."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Показване на броя предложения за автоматично попълване на данни за вписване върху иконката на добавката"
},
+ "showQuickCopyActions": {
+ "message": "Показване на действията за бързо копиране в трезора"
+ },
"systemDefault": {
"message": "По подразбиране за системата"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Бета"
},
+ "importantNotice": {
+ "message": "Важно съобщение"
+ },
+ "setupTwoStepLogin": {
+ "message": "Настройте двустепенно удостоверяване"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Битуорден ще изпрати код до е-пощата Ви, за потвърждаване на вписването от нови устройства. Това ще започне от февруари 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "Можете да настроите двустепенно удостоверяване, като различен метод на защита, или ако е необходимо да промените е-пощата си с такава, до която имате достъп."
+ },
+ "remindMeLater": {
+ "message": "Напомнете ми по-късно"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Имате ли сигурен достъп до е-пощата си – $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "Не, нямам"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Да, имам достъп до е-пощата си"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Включване на двустепенното удостоверяване"
+ },
+ "changeAcctEmail": {
+ "message": "Промяна на е-пощата"
+ },
"extensionWidth": {
"message": "Ширина на разширението"
},
diff --git a/apps/browser/src/_locales/bn/messages.json b/apps/browser/src/_locales/bn/messages.json
index a03e86b860b..c31f3511a5f 100644
--- a/apps/browser/src/_locales/bn/messages.json
+++ b/apps/browser/src/_locales/bn/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "এক্সটেনশনটি মূল্যায়ন করুন"
},
- "rateExtensionDesc": {
- "message": "দয়া করে একটি ভাল পর্যালোচনার মাধ্যমে সাহায্য করতে আমাদের বিবেচনা করুন!"
- },
"browserNotSupportClipboard": {
"message": "আপনার ওয়েব ব্রাউজার সহজে ক্লিপবোর্ড অনুলিপি সমর্থন করে না। পরিবর্তে এটি নিজেই অনুলিপি করুন।"
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/bs/messages.json b/apps/browser/src/_locales/bs/messages.json
index 97997f677b2..d6cb591a524 100644
--- a/apps/browser/src/_locales/bs/messages.json
+++ b/apps/browser/src/_locales/bs/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Rate the extension"
},
- "rateExtensionDesc": {
- "message": "Please consider helping us out with a good review!"
- },
"browserNotSupportClipboard": {
"message": "Your web browser does not support easy clipboard copying. Copy it manually instead."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/ca/messages.json b/apps/browser/src/_locales/ca/messages.json
index 9ca06f2b50a..e405a18f885 100644
--- a/apps/browser/src/_locales/ca/messages.json
+++ b/apps/browser/src/_locales/ca/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Valora aquesta extensió"
},
- "rateExtensionDesc": {
- "message": "Considereu ajudar-nos amb una bona valoració!"
- },
"browserNotSupportClipboard": {
"message": "El vostre navegador web no admet la còpia fàcil del porta-retalls. Copieu-ho manualment."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/cs/messages.json b/apps/browser/src/_locales/cs/messages.json
index b74fe0c9cfd..cf3ae3e2fd0 100644
--- a/apps/browser/src/_locales/cs/messages.json
+++ b/apps/browser/src/_locales/cs/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Ohodnotit rozšíření"
},
- "rateExtensionDesc": {
- "message": "Pomozte nám napsáním dobré recenze!"
- },
"browserNotSupportClipboard": {
"message": "Váš webový prohlížeč nepodporuje automatické kopírování do schránky. Musíte ho zkopírovat ručně."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Zobrazit počet návrhů automatického vyplňování přihlášení na ikoně rozšíření"
},
+ "showQuickCopyActions": {
+ "message": "Zobrazit akce rychlé kopie v trezoru"
+ },
"systemDefault": {
"message": "Systémový výchozí"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Důležité upozornění"
+ },
+ "setupTwoStepLogin": {
+ "message": "Nastavit dvoufázové přihlášení"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden odešle kód na e-mail Vašeho účtu pro ověření přihlášení z nových zařízení počínaje únorem 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "Dvoufázové přihlášení můžete nastavit jako alternativní způsob ochrany Vašeho účtu nebo změnit svůj e-mail na ten, k němuž můžete přistupovat."
+ },
+ "remindMeLater": {
+ "message": "Připomenout později"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Máte spolehlivý přístup ke svému e-mailu $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "Ne, nemám"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Ano, ke svému e-mailu mám přístup"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Zapnout dvoufázové přihlášení"
+ },
+ "changeAcctEmail": {
+ "message": "Změnit e-mail účtu"
+ },
"extensionWidth": {
"message": "Šířka rozšíření"
},
diff --git a/apps/browser/src/_locales/cy/messages.json b/apps/browser/src/_locales/cy/messages.json
index 3d3866097f2..3d4f1c73c02 100644
--- a/apps/browser/src/_locales/cy/messages.json
+++ b/apps/browser/src/_locales/cy/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Rhoi eich barn ar yr estyniad"
},
- "rateExtensionDesc": {
- "message": "Ystyriwch ein helpu ni gydag adolygiad da!"
- },
"browserNotSupportClipboard": {
"message": "Dyw eich porwr gwe ddim yn cefnogi copïo drwy'r clipfwrdd yn hawdd. Copïwch â llaw yn lle."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json
index 78229082235..207f409378e 100644
--- a/apps/browser/src/_locales/da/messages.json
+++ b/apps/browser/src/_locales/da/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Bedøm udvidelsen"
},
- "rateExtensionDesc": {
- "message": "Overvej om du vil hjælpe os med en god anmeldelse!"
- },
"browserNotSupportClipboard": {
"message": "Din webbrowser understøtter ikke udklipsholder kopiering. Kopiér det manuelt i stedet."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Vis antal login-autoudfyldningsforslag på udvidelsesikon"
},
+ "showQuickCopyActions": {
+ "message": "Vis hurtig-kopihandlinger på Boks"
+ },
"systemDefault": {
"message": "Systemstandard"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Vigtig notits"
+ },
+ "setupTwoStepLogin": {
+ "message": "Opsæt totrins-login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Startende i februar 2025, sender Bitwarden en kode til kontoe-mailadressen for at bekræfte logins fra nye enheder."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "Man kan opsætte totrins-login som en alternativ måde at beskytte sin konto på eller ændre sin e-mail til en, man kan tilgå."
+ },
+ "remindMeLater": {
+ "message": "Påmind senere"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Er der pålidelig adgang til e-mailadressen, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "Nej, jeg gør ikke"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Ja, e-mailadressen kan pålideligt tilgås"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Slå totrins-login til"
+ },
+ "changeAcctEmail": {
+ "message": "Skift kontoe-mailadresse"
+ },
"extensionWidth": {
"message": "Udvidelsesbredde"
},
diff --git a/apps/browser/src/_locales/de/messages.json b/apps/browser/src/_locales/de/messages.json
index 098af701cd6..169cdf6aa78 100644
--- a/apps/browser/src/_locales/de/messages.json
+++ b/apps/browser/src/_locales/de/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Erweiterung bewerten"
},
- "rateExtensionDesc": {
- "message": "Wir würden uns freuen, wenn du uns mit einer positiven Bewertung helfen könntest!"
- },
"browserNotSupportClipboard": {
"message": "Den Browser unterstützt das einfache Kopieren nicht. Bitte kopiere es manuell."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Anzahl der Vorschläge zum Auto-Ausfüllen von Zugangsdaten auf dem Erweiterungssymbol anzeigen"
},
+ "showQuickCopyActions": {
+ "message": "Schnellkopier-Aktionen im Tresor anzeigen"
+ },
"systemDefault": {
"message": "Systemstandard"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Wichtiger Hinweis"
+ },
+ "setupTwoStepLogin": {
+ "message": "Richte die zweistufige Anmeldung ein"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden wird einen Code an deine Konto-E-Mail-Adresse senden, um Anmeldungen von neuen Geräten ab Februar 2025 zu überprüfen."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "Du kannst die zweistufige Anmeldung als eine alternative Methode einrichten, um deinen Account zu schützen, oder ändere deine E-Mail-Adresse zu einer, auf die du zugreifen kannst."
+ },
+ "remindMeLater": {
+ "message": "Erinnere mich später"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Hast du zuverlässigen Zugriff auf deine E-Mail-Adresse $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "Nein, habe ich nicht"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Ja, ich kann zuverlässig auf meine E-Mails zugreifen"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Aktiviere die zweistufige Anmeldung"
+ },
+ "changeAcctEmail": {
+ "message": "Ändere die E-Mail-Adresse des Kontos"
+ },
"extensionWidth": {
"message": "Breite der Erweiterung"
},
diff --git a/apps/browser/src/_locales/el/messages.json b/apps/browser/src/_locales/el/messages.json
index be853922400..d6ae3c52333 100644
--- a/apps/browser/src/_locales/el/messages.json
+++ b/apps/browser/src/_locales/el/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Βαθμολογήστε την επέκταση"
},
- "rateExtensionDesc": {
- "message": "Παρακαλούμε σκεφτείτε να μας βοηθήσετε με μια καλή κριτική!"
- },
"browserNotSupportClipboard": {
"message": "Το πρόγραμμα περιήγησης ιστού δεν υποστηρίζει εύκολη αντιγραφή πρόχειρου. Αντιγράψτε το με το χέρι αντ'αυτού."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Εμφάνιση αριθμού προτάσεων αυτόματης συμπλήρωσης σύνδεσης στο εικονίδιο επέκτασης"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "Προεπιλογή συστήματος"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json
index c2e9ef60d8c..06f11406b68 100644
--- a/apps/browser/src/_locales/en/messages.json
+++ b/apps/browser/src/_locales/en/messages.json
@@ -454,9 +454,6 @@
"length": {
"message": "Length"
},
- "passwordMinLength": {
- "message": "Minimum password length"
- },
"uppercase": {
"message": "Uppercase (A-Z)",
"description": "deprecated. Use uppercaseLabel instead."
@@ -528,10 +525,6 @@
"minSpecial": {
"message": "Minimum special"
},
- "avoidAmbChar": {
- "message": "Avoid ambiguous characters",
- "description": "deprecated. Use avoidAmbiguous instead."
- },
"avoidAmbiguous": {
"message": "Avoid ambiguous characters",
"description": "Label for the avoid ambiguous characters checkbox."
@@ -1011,6 +1004,9 @@
"showIdentitiesCurrentTabDesc": {
"message": "List identity items on the Tab page for easy autofill."
},
+ "clickToAutofillOnVault": {
+ "message": "Click items to autofill on Vault view"
+ },
"clearClipboard": {
"message": "Clear clipboard",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
@@ -1157,9 +1153,6 @@
"moveToOrganization": {
"message": "Move to organization"
},
- "share": {
- "message": "Share"
- },
"movedItemToOrg": {
"message": "$ITEMNAME$ moved to $ORGNAME$",
"placeholders": {
@@ -2047,9 +2040,6 @@
"clone": {
"message": "Clone"
},
- "passwordGeneratorPolicyInEffect": {
- "message": "One or more organization policies are affecting your generator settings."
- },
"passwordGenerator": {
"message": "Password generator"
},
@@ -2389,14 +2379,6 @@
"message": "Send details",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
- "searchSends": {
- "message": "Search Sends",
- "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
- },
- "addSend": {
- "message": "Add Send",
- "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
- },
"sendTypeText": {
"message": "Text"
},
@@ -2413,16 +2395,9 @@
"hideTextByDefault": {
"message": "Hide text by default"
},
- "maxAccessCountReached": {
- "message": "Max access count reached",
- "description": "This text will be displayed after a Send has been accessed the maximum amount of times."
- },
"expired": {
"message": "Expired"
},
- "pendingDeletion": {
- "message": "Pending deletion"
- },
"passwordProtected": {
"message": "Password protected"
},
@@ -2472,24 +2447,9 @@
"message": "Edit Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
- "sendTypeHeader": {
- "message": "What type of Send is this?",
- "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
- },
- "sendNameDesc": {
- "message": "A friendly name to describe this Send.",
- "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
- },
- "sendFileDesc": {
- "message": "The file you want to send."
- },
"deletionDate": {
"message": "Deletion date"
},
- "deletionDateDesc": {
- "message": "The Send will be permanently deleted on the specified date and time.",
- "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
- },
"deletionDateDescV2": {
"message": "The Send will be permanently deleted on this date.",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
@@ -2497,10 +2457,6 @@
"expirationDate": {
"message": "Expiration date"
},
- "expirationDateDesc": {
- "message": "If set, access to this Send will expire on the specified date and time.",
- "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
- },
"oneDay": {
"message": "1 day"
},
@@ -2516,43 +2472,10 @@
"custom": {
"message": "Custom"
},
- "maximumAccessCount": {
- "message": "Maximum Access Count"
- },
- "maximumAccessCountDesc": {
- "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.",
- "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
- },
- "sendPasswordDesc": {
- "message": "Optionally require a password for users to access this Send.",
- "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
- },
"sendPasswordDescV3": {
"message": "Add an optional password for recipients to access this Send.",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
- "sendNotesDesc": {
- "message": "Private notes about this Send.",
- "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
- },
- "sendDisableDesc": {
- "message": "Deactivate this Send so that no one can access it.",
- "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
- },
- "sendShareDesc": {
- "message": "Copy this Send's link to clipboard upon save.",
- "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
- },
- "sendTextDesc": {
- "message": "The text you want to send."
- },
- "sendHideText": {
- "message": "Hide this Send's text by default.",
- "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
- },
- "currentAccessCount": {
- "message": "Current access count"
- },
"createSend": {
"message": "New Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
@@ -2635,18 +2558,6 @@
"sendFileCalloutHeader": {
"message": "Before you start"
},
- "sendFirefoxCustomDatePopoutMessage1": {
- "message": "To use a calendar style date picker",
- "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'"
- },
- "sendFirefoxCustomDatePopoutMessage2": {
- "message": "click here",
- "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'"
- },
- "sendFirefoxCustomDatePopoutMessage3": {
- "message": "to pop out your window.",
- "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'"
- },
"expirationDateIsInvalid": {
"message": "The expiration date provided is not valid."
},
@@ -2662,15 +2573,9 @@
"dateParsingError": {
"message": "There was an error saving your deletion and expiration dates."
},
- "hideEmail": {
- "message": "Hide my email address from recipients."
- },
"hideYourEmail": {
"message": "Hide your email address from viewers."
},
- "sendOptionsPolicyInEffect": {
- "message": "One or more organization policies are affecting your Send options."
- },
"passwordPrompt": {
"message": "Master password re-prompt"
},
@@ -2884,9 +2789,6 @@
"error": {
"message": "Error"
},
- "regenerateUsername": {
- "message": "Regenerate username"
- },
"generateUsername": {
"message": "Generate username"
},
@@ -2927,9 +2829,6 @@
}
}
},
- "usernameType": {
- "message": "Username type"
- },
"plusAddressedEmail": {
"message": "Plus addressed email",
"description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com"
@@ -2952,12 +2851,6 @@
"websiteName": {
"message": "Website name"
},
- "whatWouldYouLikeToGenerate": {
- "message": "What would you like to generate?"
- },
- "passwordType": {
- "message": "Password type"
- },
"service": {
"message": "Service"
},
@@ -4910,6 +4803,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/en_GB/messages.json b/apps/browser/src/_locales/en_GB/messages.json
index 13db7b5080b..a771b390b1b 100644
--- a/apps/browser/src/_locales/en_GB/messages.json
+++ b/apps/browser/src/_locales/en_GB/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Rate the extension"
},
- "rateExtensionDesc": {
- "message": "Please consider helping us out with a good review!"
- },
"browserNotSupportClipboard": {
"message": "Your web browser does not support easy clipboard copying. Copy it manually instead."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/en_IN/messages.json b/apps/browser/src/_locales/en_IN/messages.json
index 173fe8e788a..17c06b57c2a 100644
--- a/apps/browser/src/_locales/en_IN/messages.json
+++ b/apps/browser/src/_locales/en_IN/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Rate the extension"
},
- "rateExtensionDesc": {
- "message": "Please consider helping us out with a good review!"
- },
"browserNotSupportClipboard": {
"message": "Your web browser does not support easy clipboard copying. Copy it manually instead."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/es/messages.json b/apps/browser/src/_locales/es/messages.json
index 4b3dc12f684..eaff576d94b 100644
--- a/apps/browser/src/_locales/es/messages.json
+++ b/apps/browser/src/_locales/es/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Valora la extensión"
},
- "rateExtensionDesc": {
- "message": "¡Por favor, considera ayudarnos con una buena reseña!"
- },
"browserNotSupportClipboard": {
"message": "Tu navegador web no soporta copiar al portapapeles facilmente. Cópialo manualmente."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/et/messages.json b/apps/browser/src/_locales/et/messages.json
index 4f17a302633..c772a7b23e7 100644
--- a/apps/browser/src/_locales/et/messages.json
+++ b/apps/browser/src/_locales/et/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Hinda seda laiendust"
},
- "rateExtensionDesc": {
- "message": "Soovi korral võid meid positiivse hinnanguga toetada!"
- },
"browserNotSupportClipboard": {
"message": "Kasutatav brauser ei toeta lihtsat lõikelaua kopeerimist. Kopeeri see käsitsi."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/eu/messages.json b/apps/browser/src/_locales/eu/messages.json
index d98ae43081f..117751b3794 100644
--- a/apps/browser/src/_locales/eu/messages.json
+++ b/apps/browser/src/_locales/eu/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Baloratu gehigarria"
},
- "rateExtensionDesc": {
- "message": "Mesedez, aipu on batekin lagundu!"
- },
"browserNotSupportClipboard": {
"message": "Zure web nabigatzaileak ez du onartzen arbelean erraz kopiatzea. Eskuz kopiatu."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/fa/messages.json b/apps/browser/src/_locales/fa/messages.json
index 6b88d9e5234..47bf414db2f 100644
--- a/apps/browser/src/_locales/fa/messages.json
+++ b/apps/browser/src/_locales/fa/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "به این افزونه امتیاز دهید"
},
- "rateExtensionDesc": {
- "message": "لطفاً با یک بررسی خوب به ما کمک کنید!"
- },
"browserNotSupportClipboard": {
"message": "مرورگر شما از کپی کلیپ بورد آسان پشتیبانی نمیکند. به جای آن به صورت دستی کپی کنید."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/fi/messages.json b/apps/browser/src/_locales/fi/messages.json
index 0a2313d7dca..f0104488d32 100644
--- a/apps/browser/src/_locales/fi/messages.json
+++ b/apps/browser/src/_locales/fi/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Arvioi laajennus"
},
- "rateExtensionDesc": {
- "message": "Harkitse tukemistamme hyvällä arvostelulla!"
- },
"browserNotSupportClipboard": {
"message": "Selaimesi ei tue helppoa leikepöydälle kopiointia. Kopioi kohde manuaalisesti."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Näytä automaattitäytön ehdotusten määrä laajennuksen kuvakkeessa"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "Järjestelmän oletus"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Laajennuksen leveys"
},
diff --git a/apps/browser/src/_locales/fil/messages.json b/apps/browser/src/_locales/fil/messages.json
index 33cc408a0d6..ebaf884a141 100644
--- a/apps/browser/src/_locales/fil/messages.json
+++ b/apps/browser/src/_locales/fil/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "I-rate ang extension"
},
- "rateExtensionDesc": {
- "message": "Paki-isipan ang pagtulong sa amin sa pamamagitan ng isang magandang review!"
- },
"browserNotSupportClipboard": {
"message": "Hindi suportado ng iyong web browser ang madaling pag-copy ng clipboard. Kopya ito manually sa halip."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/fr/messages.json b/apps/browser/src/_locales/fr/messages.json
index 679b6248033..0ff35958be0 100644
--- a/apps/browser/src/_locales/fr/messages.json
+++ b/apps/browser/src/_locales/fr/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Noter l'extension"
},
- "rateExtensionDesc": {
- "message": "Merci de nous aider en mettant une bonne note !"
- },
"browserNotSupportClipboard": {
"message": "Votre navigateur web ne supporte pas la copie rapide depuis le presse-papier. Copiez-le manuellement à la place."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Afficher le nombre de suggestions de saisie automatique d'identifiant sur l'icône d'extension"
},
+ "showQuickCopyActions": {
+ "message": "Afficher les actions de copie rapide dans le coffre"
+ },
"systemDefault": {
"message": "Par défaut"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Largeur de l'extension"
},
diff --git a/apps/browser/src/_locales/gl/messages.json b/apps/browser/src/_locales/gl/messages.json
index 7240d88a587..beeae76232a 100644
--- a/apps/browser/src/_locales/gl/messages.json
+++ b/apps/browser/src/_locales/gl/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Valorar a extensión"
},
- "rateExtensionDesc": {
- "message": "Por favor, considera axudarnos cunha boa recensión!"
- },
"browserNotSupportClipboard": {
"message": "O teu navegador web non soporta copia doada ao portapapeis. Cópiao manualmente no seu lugar."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/he/messages.json b/apps/browser/src/_locales/he/messages.json
index cb2c8782c9e..a069afdc69a 100644
--- a/apps/browser/src/_locales/he/messages.json
+++ b/apps/browser/src/_locales/he/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "דירוג הרחבה"
},
- "rateExtensionDesc": {
- "message": "אם נהנית מהתוכנה, בבקשה דרג את התוכנה וכתוב דירוג עם חוות דעת טובה!"
- },
"browserNotSupportClipboard": {
"message": "הדפדפן שלך לא תומך בהעתקה ללוח. אנא העתק בצורה ידנית."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/hi/messages.json b/apps/browser/src/_locales/hi/messages.json
index b14aa89def1..288aa1171ce 100644
--- a/apps/browser/src/_locales/hi/messages.json
+++ b/apps/browser/src/_locales/hi/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Rate the Extension"
},
- "rateExtensionDesc": {
- "message": "कृपया एक अच्छी समीक्षा के साथ हमारी मदत करने पर विचार करें!"
- },
"browserNotSupportClipboard": {
"message": "आपका वेब ब्राउज़र आसान क्लिपबोर्ड कॉपीिंग का समर्थन नहीं करता है। इसके बजाय इसे मैन्युअल रूप से कॉपी करें।"
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/hr/messages.json b/apps/browser/src/_locales/hr/messages.json
index 4e280dcff43..a8c680ac666 100644
--- a/apps/browser/src/_locales/hr/messages.json
+++ b/apps/browser/src/_locales/hr/messages.json
@@ -20,16 +20,16 @@
"message": "Stvori račun"
},
"newToBitwarden": {
- "message": "New to Bitwarden?"
+ "message": "Novi u Bitwardenu?"
},
"logInWithPasskey": {
- "message": "Log in with passkey"
+ "message": "Prijava pristupnim ključem"
},
"useSingleSignOn": {
- "message": "Use single sign-on"
+ "message": "Jedinstvena prijava (SSO)"
},
"welcomeBack": {
- "message": "Welcome back"
+ "message": "Dobro došli natrag"
},
"setAStrongPassword": {
"message": "Postavi jaku lozinku"
@@ -84,7 +84,7 @@
"message": "Pridruži se organizaciji"
},
"joinOrganizationName": {
- "message": "Join $ORGANIZATIONNAME$",
+ "message": "Pidruži se $ORGANIZATIONNAME$",
"placeholders": {
"organizationName": {
"content": "$1",
@@ -120,7 +120,7 @@
"message": "Kopiraj lozinku"
},
"copyPassphrase": {
- "message": "Copy passphrase"
+ "message": "Kopiraj fraznu lozinku"
},
"copyNote": {
"message": "Kopiraj bilješku"
@@ -153,13 +153,13 @@
"message": "Kopiraj OIB"
},
"copyPrivateKey": {
- "message": "Copy private key"
+ "message": "Kopiraj privatni ključ"
},
"copyPublicKey": {
- "message": "Copy public key"
+ "message": "Kopiraj javni ključ"
},
"copyFingerprint": {
- "message": "Copy fingerprint"
+ "message": "Kopiraj otisak prsta"
},
"copyCustomField": {
"message": "Kopiraj $FIELD$",
@@ -177,7 +177,7 @@
"message": "Kopiraj bilješke"
},
"fill": {
- "message": "Fill",
+ "message": "Ispuni",
"description": "This string is used on the vault page to indicate autofilling. Horizontal space is limited in the interface here so try and keep translations as concise as possible."
},
"autoFill": {
@@ -193,10 +193,10 @@
"message": "Auto-ispuna identiteta"
},
"fillVerificationCode": {
- "message": "Fill verification code"
+ "message": "Ispuni kôd za provjeru"
},
"fillVerificationCodeAria": {
- "message": "Fill Verification Code",
+ "message": "Ispuni kôd za provjeru",
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
},
"generatePasswordCopied": {
@@ -284,7 +284,7 @@
"message": "Nastavi na web aplikaciju?"
},
"continueToWebAppDesc": {
- "message": "Pronađi viđe značajki svojeg Bitwarden računa u web aplikaciji."
+ "message": "Pronađi više značajki svojeg Bitwarden računa u web aplikaciji."
},
"continueToHelpCenter": {
"message": "Nastavi u centar za pomoć?"
@@ -349,10 +349,10 @@
"message": "Stvori laka i sigurna iskustva prijave bez tradicionalnih lozinki uz Passwordless.dev. Saznaj više na web stranici bitwarden.com."
},
"freeBitwardenFamilies": {
- "message": "Besplatan obiteljski Bitwarden"
+ "message": "Besplatni Bitwarden Families"
},
"freeBitwardenFamiliesPageDesc": {
- "message": "Ispunjavaš uvjete za besplatni obiteljski Bitwarden. Iskoristi ovu ponudu u web aplikaciji već danas."
+ "message": "Ispunjavaš uvjete za besplatni Bitwarden Families. Iskoristi ovu ponudu u web aplikaciji već danas."
},
"version": {
"message": "Verzija"
@@ -443,7 +443,7 @@
"message": "Generiraj lozinku"
},
"generatePassphrase": {
- "message": "Generate passphrase"
+ "message": "Generiraj frazu lozinke"
},
"regeneratePassword": {
"message": "Ponovno generiraj lozinku"
@@ -607,7 +607,7 @@
"message": "Pokreni web stranicu"
},
"launchWebsiteName": {
- "message": "Launch website $ITEMNAME$",
+ "message": "Otvori stranicu $ITEMNAME$",
"placeholders": {
"itemname": {
"content": "$1",
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Ocijeni proširenje"
},
- "rateExtensionDesc": {
- "message": "Razmotri da nam pomogneš dobrom recenzijom!"
- },
"browserNotSupportClipboard": {
"message": "Web preglednik ne podržava jednostavno kopiranje međuspremnika. Umjesto toga ručno kopirajte."
},
@@ -804,7 +801,7 @@
"message": "Poslali smo e-poštu s podsjetnikom glavne lozinke."
},
"verificationCodeRequired": {
- "message": "Potvrdni kôd je obavezan."
+ "message": "Kôd za provjeru je obavezan."
},
"webauthnCancelOrTimeout": {
"message": "Autentifikacija je otkazana ili je trajala predugo. Molimo pokušaj ponovno."
@@ -862,7 +859,7 @@
"message": "Prijavi se"
},
"logInToBitwarden": {
- "message": "Log in to Bitwarden"
+ "message": "Prijavi se u Bitwarden"
},
"restartRegistration": {
"message": "Ponovno pokreni registraciju"
@@ -1133,7 +1130,7 @@
"description": "WARNING (should stay in capitalized letters if the language permits)"
},
"warningCapitalized": {
- "message": "Warning",
+ "message": "Upozorenje",
"description": "Warning (should maintain locale-relevant capitalization)"
},
"confirmVaultExport": {
@@ -1312,7 +1309,7 @@
"message": "Automatski kopiraj TOTP"
},
"disableAutoTotpCopyDesc": {
- "message": "Ako za prijavu postoji autentifikatorski ključ, kopiraj TOTP kontrolni kôd u međuspremnik nakon auto-ispune prijave."
+ "message": "Ako za prijavu postoji autentifikatorski ključ, kopiraj TOTP kôd za provjeru u međuspremnik nakon auto-ispune prijave."
},
"enableAutoBiometricsPrompt": {
"message": "Traži biometrijsku autentifikaciju pri pokretanju"
@@ -1324,16 +1321,16 @@
"message": "Za korištenje ove značajke potrebno je Premium članstvo."
},
"enterVerificationCodeApp": {
- "message": "Unesi 6-znamenkasti kontrolni kôd iz autentifikatorske aplikacije."
+ "message": "Unesi 6-znamenkasti kôd za provjeru iz autentifikatorske aplikacije."
},
"authenticationTimeout": {
- "message": "Authentication timeout"
+ "message": "Istek vremena za autentifikaciju"
},
"authenticationSessionTimedOut": {
- "message": "The authentication session timed out. Please restart the login process."
+ "message": "Sesija za autentifikaciju je istekla. Ponovi proces prijave."
},
"enterVerificationCodeEmail": {
- "message": "Unesi 6-znamenkasti kontrolni kôd poslan e-poštom na $EMAIL$.",
+ "message": "Unesi 6-znamenkasti kôd za provjeru poslan e-poštom na $EMAIL$.",
"placeholders": {
"email": {
"content": "$1",
@@ -1450,7 +1447,7 @@
"message": "URL poslužitelja"
},
"selfHostBaseUrl": {
- "message": "Self-host server URL",
+ "message": "URL vlastitog poslužitelja",
"description": "Label for field requesting a self-hosted integration service URL"
},
"apiUrl": {
@@ -1482,10 +1479,10 @@
"message": "Prikaži prijedloge auto-ispune na poljima obrazaca"
},
"showInlineMenuIdentitiesLabel": {
- "message": "Display identities as suggestions"
+ "message": "Prikaži identitete kao prijedloge"
},
"showInlineMenuCardsLabel": {
- "message": "Display cards as suggestions"
+ "message": "Prikaži platne kartice kao prijedloge"
},
"showInlineMenuOnIconSelectionLabel": {
"message": "Prikaži prijedloge kada je odabrana ikona"
@@ -1604,7 +1601,7 @@
"description": "This describes a value that is 'linked' (tied) to another value."
},
"popup2faCloseMessage": {
- "message": "Ako klikneš izvan iskočnog prozora, za provjeru kontrolnog kôda iz e-pošte, on će se zatvoriti. Želiš li ovaj iskočni prozor otvoriti u novom prozoru kako se ne bi zatvorio?"
+ "message": "Ako klikneš izvan iskočnog prozora, za provjeru kôda za provjeru iz e-pošte, on će se zatvoriti. Želiš li ovaj iskočni prozor otvoriti u novom prozoru kako se ne bi zatvorio?"
},
"popupU2fCloseMessage": {
"message": "Ovaj preglednik ne može obraditi U2F zahtjeve u ovom iskočnom prozoru. Želiš li otvoriti ovaj iskočni prozor u novom prozoru za prijavu putem U2F?"
@@ -1679,7 +1676,7 @@
"message": "prosinac"
},
"securityCode": {
- "message": "Kontrolni broj"
+ "message": "Sigurnosni kôd"
},
"ex": {
"message": "npr."
@@ -1778,7 +1775,7 @@
"message": "Identitet"
},
"typeSshKey": {
- "message": "SSH key"
+ "message": "SSH ključ"
},
"newItemHeader": {
"message": "Novi $TYPE$",
@@ -1811,13 +1808,13 @@
"message": "Povijest"
},
"generatorHistory": {
- "message": "Generator history"
+ "message": "Povijest generatora"
},
"clearGeneratorHistoryTitle": {
- "message": "Clear generator history"
+ "message": "Očisti povijest generatora"
},
"cleargGeneratorHistoryDescription": {
- "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?"
+ "message": "Cijela povijest generatora biti će trajno izbirsana. Sigurno želiš nastaviti?"
},
"back": {
"message": "Natrag"
@@ -1856,7 +1853,7 @@
"message": "Sigurne bilješke"
},
"sshKeys": {
- "message": "SSH Keys"
+ "message": "SSH ključevi"
},
"clear": {
"message": "Očisti",
@@ -1939,10 +1936,10 @@
"message": "Očisti povijest"
},
"nothingToShow": {
- "message": "Nothing to show"
+ "message": "Ništa za prikazati"
},
"nothingGeneratedRecently": {
- "message": "You haven't generated anything recently"
+ "message": "Ništa nije generirano"
},
"remove": {
"message": "Ukloni"
@@ -2531,7 +2528,7 @@
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendPasswordDescV3": {
- "message": "Add an optional password for recipients to access this Send.",
+ "message": "Dodaj opcionalnu lozinku za primatelje ovog Senda.",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendNotesDesc": {
@@ -2729,7 +2726,7 @@
"description": "Used as a card title description on the set password page to explain why the user is there"
},
"cardMetrics": {
- "message": "out of $TOTAL$",
+ "message": "od $TOTAL$",
"placeholders": {
"total": {
"content": "$1",
@@ -2894,10 +2891,10 @@
"message": "Generiraj korisničko ime"
},
"generateEmail": {
- "message": "Generate email"
+ "message": "Generiraj e-poštu"
},
"spinboxBoundariesHint": {
- "message": "Value must be between $MIN$ and $MAX$.",
+ "message": "Vrijednost mora biti u rasponu $MIN$ - $MAX$.",
"description": "Explains spin box minimum and maximum values to the user",
"placeholders": {
"min": {
@@ -2911,7 +2908,7 @@
}
},
"passwordLengthRecommendationHint": {
- "message": " Use $RECOMMENDED$ characters or more to generate a strong password.",
+ "message": " Koristi $RECOMMENDED$ i više znakova za generiranje jake lozinke.",
"description": "Appended to `spinboxBoundariesHint` to recommend a length to the user. This must include any language-specific 'sentence' separator characters (e.g. a space in english).",
"placeholders": {
"recommended": {
@@ -2921,7 +2918,7 @@
}
},
"passphraseNumWordsRecommendationHint": {
- "message": " Use $RECOMMENDED$ words or more to generate a strong passphrase.",
+ "message": " Koristi $RECOMMENDED$ i više riječi za generiranje jake frazne lozinke.",
"description": "Appended to `spinboxBoundariesHint` to recommend a number of words to the user. This must include any language-specific 'sentence' separator characters (e.g. a space in english).",
"placeholders": {
"recommended": {
@@ -2971,11 +2968,11 @@
"message": "Generiraj pseudonim e-pošte s vanjskom uslugom prosljeđivanja."
},
"forwarderDomainName": {
- "message": "Email domain",
+ "message": "Domena e-pošte",
"description": "Labels the domain name email forwarder service option"
},
"forwarderDomainNameHint": {
- "message": "Choose a domain that is supported by the selected service",
+ "message": "Odaberi domenu koju podržava odabrani servis",
"description": "Guidance provided for email forwarding services that support multiple email domains."
},
"forwarderError": {
@@ -3178,25 +3175,25 @@
"message": "Ponovno pošalji obavijest"
},
"viewAllLogInOptions": {
- "message": "View all log in options"
+ "message": "Pogledaj sve mogućnosti prijave"
},
"viewAllLoginOptionsV1": {
- "message": "View all log in options"
+ "message": "Pogledaj sve mogućnosti prijave"
},
"notificationSentDevice": {
"message": "Obavijest je poslana na tvoj uređaj."
},
"aNotificationWasSentToYourDevice": {
- "message": "A notification was sent to your device"
+ "message": "Obavijest je poslana na tvoj uređaj"
},
"makeSureYourAccountIsUnlockedAndTheFingerprintEtc": {
- "message": "Make sure your account is unlocked and the fingerprint phrase matches on the other device"
+ "message": "Provjeri je li trezor otključan i slaže li se jedinstvena fraza s drugim uređajem"
},
"youWillBeNotifiedOnceTheRequestIsApproved": {
- "message": "You will be notified once the request is approved"
+ "message": "Dobiti ćeš obavijest kada je tvoj zahtjev odobren"
},
"needAnotherOptionV1": {
- "message": "Need another option?"
+ "message": "Trebaš drugu opciju?"
},
"loginInitiated": {
"message": "Prijava pokrenuta"
@@ -3292,16 +3289,16 @@
"message": "Otvara u novom prozoru"
},
"rememberThisDeviceToMakeFutureLoginsSeamless": {
- "message": "Remember this device to make future logins seamless"
+ "message": "Zapamti ovaj uređaj kako bi buduće prijave bile brže"
},
"deviceApprovalRequired": {
"message": "Potrebno je odobriti uređaj. Odaberi metodu odobravanja:"
},
"deviceApprovalRequiredV2": {
- "message": "Device approval required"
+ "message": "Potrebno odobrenje uređaja"
},
"selectAnApprovalOptionBelow": {
- "message": "Select an approval option below"
+ "message": "Odaberi opciju odobrenja"
},
"rememberThisDevice": {
"message": "Zapamti ovaj uređaj"
@@ -3377,7 +3374,7 @@
"message": "Nedostaje e-pošta korisnika"
},
"activeUserEmailNotFoundLoggingYouOut": {
- "message": "Active user email not found. Logging you out."
+ "message": "Nije pronađena e-pošta aktivnog korisnika. Odjava u tijeku..."
},
"deviceTrusted": {
"message": "Uređaj pouzdan"
@@ -3588,11 +3585,11 @@
"description": "Screen reader text (aria-label) for unlock account button in overlay"
},
"totpCodeAria": {
- "message": "Time-based One-Time Password Verification Code",
+ "message": "Kôd za provjeru jednokratne lozinka zasnovane na vremenu (TOTP) ",
"description": "Aria label for the totp code displayed in the inline menu for autofill"
},
"totpSecondsSpanAria": {
- "message": "Time remaining before current TOTP expires",
+ "message": "Preostalo vrijeme koda za provjeru",
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
},
"fillCredentialsFor": {
@@ -3824,7 +3821,7 @@
"message": "Pristupanje"
},
"loggedInExclamation": {
- "message": "Logged in!"
+ "message": "Prijava uspješna!"
},
"passkeyNotCopied": {
"message": "Pristupni ključ neće biti kopiran"
@@ -4288,7 +4285,7 @@
"message": "Najveća veličina datoteke je 500 MB"
},
"deleteAttachmentName": {
- "message": "Izbriši privitak",
+ "message": "Izbriši privitak $NAME$",
"placeholders": {
"name": {
"content": "$1",
@@ -4318,13 +4315,13 @@
"message": "Filtri"
},
"filterVault": {
- "message": "Filter vault"
+ "message": "Filtriraj trezor"
},
"filterApplied": {
- "message": "One filter applied"
+ "message": "Uključen jedan filter"
},
"filterAppliedPlural": {
- "message": "$COUNT$ filters applied",
+ "message": "Uključeno filtera: $COUNT$",
"placeholders": {
"count": {
"content": "$1",
@@ -4656,13 +4653,13 @@
"message": "Lokacija stavke"
},
"fileSend": {
- "message": "File Send"
+ "message": "Send datoteke"
},
"fileSends": {
"message": "Send datoteke"
},
"textSend": {
- "message": "Text Send"
+ "message": "Send teksta"
},
"textSends": {
"message": "Send tekstovi"
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Prikaži broj prijedloga auto-ispune na ikoni proširenja"
},
+ "showQuickCopyActions": {
+ "message": "Prikaži akcije brzog kopiranja na trezoru"
+ },
"systemDefault": {
"message": "Zadano sustavom"
},
@@ -4686,16 +4686,16 @@
"message": "Pravila tvrtke primijenjena su na ovu postavku"
},
"sshPrivateKey": {
- "message": "Private key"
+ "message": "Privatni ključ"
},
"sshPublicKey": {
- "message": "Public key"
+ "message": "Javni ključ"
},
"sshFingerprint": {
- "message": "Fingerprint"
+ "message": "Otisak prsta"
},
"sshKeyAlgorithm": {
- "message": "Key type"
+ "message": "Vrsta ključa"
},
"sshKeyAlgorithmED25519": {
"message": "ED25519"
@@ -4752,171 +4752,207 @@
"message": "Autentifikacija"
},
"fillGeneratedPassword": {
- "message": "Fill generated password",
+ "message": "Ispuni generiranu lozinku",
"description": "Heading for the password generator within the inline menu"
},
"passwordRegenerated": {
- "message": "Password regenerated",
+ "message": "Lozinka re-generirana",
"description": "Notification message for when a password has been regenerated"
},
"saveLoginToBitwarden": {
- "message": "Save login to Bitwarden?",
+ "message": "Spremi prijavu u Bitwarden?",
"description": "Confirmation message for saving a login to Bitwarden"
},
"spaceCharacterDescriptor": {
- "message": "Space",
+ "message": "Razmak",
"description": "Represents the space key in screen reader content as a readable word"
},
"tildeCharacterDescriptor": {
- "message": "Tilde",
+ "message": "znak ˜",
"description": "Represents the ~ key in screen reader content as a readable word"
},
"backtickCharacterDescriptor": {
- "message": "Backtick",
+ "message": "znak `",
"description": "Represents the ` key in screen reader content as a readable word"
},
"exclamationCharacterDescriptor": {
- "message": "Exclamation mark",
+ "message": "znak !",
"description": "Represents the ! key in screen reader content as a readable word"
},
"atSignCharacterDescriptor": {
- "message": "At sign",
+ "message": "znak @",
"description": "Represents the @ key in screen reader content as a readable word"
},
"hashSignCharacterDescriptor": {
- "message": "Hash sign",
+ "message": "znak #",
"description": "Represents the # key in screen reader content as a readable word"
},
"dollarSignCharacterDescriptor": {
- "message": "Dollar sign",
+ "message": "znak $",
"description": "Represents the $ key in screen reader content as a readable word"
},
"percentSignCharacterDescriptor": {
- "message": "Percent sign",
+ "message": "znak %",
"description": "Represents the % key in screen reader content as a readable word"
},
"caretCharacterDescriptor": {
- "message": "Caret",
+ "message": "znak ^",
"description": "Represents the ^ key in screen reader content as a readable word"
},
"ampersandCharacterDescriptor": {
- "message": "Ampersand",
+ "message": "znak &",
"description": "Represents the & key in screen reader content as a readable word"
},
"asteriskCharacterDescriptor": {
- "message": "Asterisk",
+ "message": "znak *",
"description": "Represents the * key in screen reader content as a readable word"
},
"parenLeftCharacterDescriptor": {
- "message": "Left parenthesis",
+ "message": "lijeva zagrada (",
"description": "Represents the ( key in screen reader content as a readable word"
},
"parenRightCharacterDescriptor": {
- "message": "Right parenthesis",
+ "message": "desna zagrada )",
"description": "Represents the ) key in screen reader content as a readable word"
},
"hyphenCharacterDescriptor": {
- "message": "Underscore",
+ "message": "donja crtica _",
"description": "Represents the _ key in screen reader content as a readable word"
},
"underscoreCharacterDescriptor": {
- "message": "Hyphen",
+ "message": "crtica -",
"description": "Represents the - key in screen reader content as a readable word"
},
"plusCharacterDescriptor": {
- "message": "Plus",
+ "message": "znak +",
"description": "Represents the + key in screen reader content as a readable word"
},
"equalsCharacterDescriptor": {
- "message": "Equals",
+ "message": "znak =",
"description": "Represents the = key in screen reader content as a readable word"
},
"braceLeftCharacterDescriptor": {
- "message": "Left brace",
+ "message": "znak {",
"description": "Represents the { key in screen reader content as a readable word"
},
"braceRightCharacterDescriptor": {
- "message": "Right brace",
+ "message": "znak }",
"description": "Represents the } key in screen reader content as a readable word"
},
"bracketLeftCharacterDescriptor": {
- "message": "Left bracket",
+ "message": "znak [",
"description": "Represents the [ key in screen reader content as a readable word"
},
"bracketRightCharacterDescriptor": {
- "message": "Right bracket",
+ "message": "zank ]",
"description": "Represents the ] key in screen reader content as a readable word"
},
"pipeCharacterDescriptor": {
- "message": "Pipe",
+ "message": "znak |",
"description": "Represents the | key in screen reader content as a readable word"
},
"backSlashCharacterDescriptor": {
- "message": "Back slash",
+ "message": "znak \\",
"description": "Represents the back slash key in screen reader content as a readable word"
},
"colonCharacterDescriptor": {
- "message": "Colon",
+ "message": "znak :",
"description": "Represents the : key in screen reader content as a readable word"
},
"semicolonCharacterDescriptor": {
- "message": "Semicolon",
+ "message": "znak ;",
"description": "Represents the ; key in screen reader content as a readable word"
},
"doubleQuoteCharacterDescriptor": {
- "message": "Double quote",
+ "message": "znak \"",
"description": "Represents the double quote key in screen reader content as a readable word"
},
"singleQuoteCharacterDescriptor": {
- "message": "Single quote",
+ "message": "znak '",
"description": "Represents the ' key in screen reader content as a readable word"
},
"lessThanCharacterDescriptor": {
- "message": "Less than",
+ "message": "znak <",
"description": "Represents the < key in screen reader content as a readable word"
},
"greaterThanCharacterDescriptor": {
- "message": "Greater than",
+ "message": "znak >",
"description": "Represents the > key in screen reader content as a readable word"
},
"commaCharacterDescriptor": {
- "message": "Comma",
+ "message": "znak ,",
"description": "Represents the , key in screen reader content as a readable word"
},
"periodCharacterDescriptor": {
- "message": "Period",
+ "message": "znak .",
"description": "Represents the . key in screen reader content as a readable word"
},
"questionCharacterDescriptor": {
- "message": "Question mark",
+ "message": "znak ?",
"description": "Represents the ? key in screen reader content as a readable word"
},
"forwardSlashCharacterDescriptor": {
- "message": "Forward slash",
+ "message": "znak /",
"description": "Represents the / key in screen reader content as a readable word"
},
"lowercaseAriaLabel": {
- "message": "Lowercase"
+ "message": "Mala slova"
},
"uppercaseAriaLabel": {
- "message": "Uppercase"
+ "message": "Velika slova"
},
"generatedPassword": {
- "message": "Generated password"
+ "message": "Generiraj lozinku"
},
"compactMode": {
- "message": "Compact mode"
+ "message": "Kompaktni način"
},
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
- "message": "Extension width"
+ "message": "Širina proširenja"
},
"wide": {
- "message": "Wide"
+ "message": "Široko"
},
"extraWide": {
- "message": "Extra wide"
+ "message": "Ekstra široko"
}
}
diff --git a/apps/browser/src/_locales/hu/messages.json b/apps/browser/src/_locales/hu/messages.json
index 04644910c63..07662b83157 100644
--- a/apps/browser/src/_locales/hu/messages.json
+++ b/apps/browser/src/_locales/hu/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Bővítmény értékelése"
},
- "rateExtensionDesc": {
- "message": "Kérlek, fontold meg egy jó értékelés hagyását, ezzel segítve nekünk!"
- },
"browserNotSupportClipboard": {
"message": "A webböngésződ nem támogat könnyű vágólap másolást. Másold manuálisan inkább."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Az automatikus bejelentkezési kitöltési javaslatok számának megjelenítése a bővítmény ikonján"
},
+ "showQuickCopyActions": {
+ "message": "Gyors másolási műveletek megjelenítése a Széfen"
+ },
"systemDefault": {
"message": "Rendszer alapértelmezett"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Béta"
},
+ "importantNotice": {
+ "message": "Fontos megjegyzés"
+ },
+ "setupTwoStepLogin": {
+ "message": "Kétlépéses bejelentkezés beüzemelése"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "A Bitwarden 2025 februárjától kódot küld a fiókhoz tartozó email-címre, amellyel ellenőrizhetők az új eszközökről történő bejelentkezések."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "A fiók védelmének alternatív módjaként beállíthatunk kétlépcsős bejelentkezést vagy módosíthatjuk az email címet egy elérhetőre."
+ },
+ "remindMeLater": {
+ "message": "Emlékeztetés később"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Megbízható a hozzáférés $EMAIL$ email címhez?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "Nem, nem érem el"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Igen, megbízhatóan hozzáférek az emailjeimhez"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Kétlépéses bejelentkezés bekapcsolása"
+ },
+ "changeAcctEmail": {
+ "message": "Fiók email cím megváltoztatása"
+ },
"extensionWidth": {
"message": "Kiterjesztés szélesség"
},
diff --git a/apps/browser/src/_locales/id/messages.json b/apps/browser/src/_locales/id/messages.json
index 7de07f17f10..ef8e1431284 100644
--- a/apps/browser/src/_locales/id/messages.json
+++ b/apps/browser/src/_locales/id/messages.json
@@ -3,7 +3,7 @@
"message": "Bitwarden"
},
"extName": {
- "message": "Bitwarden Pengelola Sandi",
+ "message": "Pengelola Sandi Bitwarden",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
@@ -193,10 +193,10 @@
"message": "Autofill identitas"
},
"fillVerificationCode": {
- "message": "Fill verification code"
+ "message": "Isikan kode verifikasi"
},
"fillVerificationCodeAria": {
- "message": "Fill Verification Code",
+ "message": "Isikan Kode Verifikasi",
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
},
"generatePasswordCopied": {
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Nilai Ekstensi"
},
- "rateExtensionDesc": {
- "message": "Mohon pertimbangkan membantu kami dengan ulasan yang baik!"
- },
"browserNotSupportClipboard": {
"message": "Peramban Anda tidak mendukung menyalin clipboard dengan mudah. Salin secara manual."
},
@@ -3181,7 +3178,7 @@
"message": "Lihat semua pilihan masuk"
},
"viewAllLoginOptionsV1": {
- "message": "View all log in options"
+ "message": "Lihat semua pilihan masuk"
},
"notificationSentDevice": {
"message": "Sebuah pemberitahuan dikirim ke perangkat Anda."
@@ -3588,11 +3585,11 @@
"description": "Screen reader text (aria-label) for unlock account button in overlay"
},
"totpCodeAria": {
- "message": "Time-based One-Time Password Verification Code",
+ "message": "Kode Verifikasi Kata Sandi Sekali-Waktu Berbasis Waktu",
"description": "Aria label for the totp code displayed in the inline menu for autofill"
},
"totpSecondsSpanAria": {
- "message": "Time remaining before current TOTP expires",
+ "message": "Waktu tersisa sebelum TOTP sekarang kadaluwarsa",
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
},
"fillCredentialsFor": {
@@ -4339,10 +4336,10 @@
"message": "Pengenalan"
},
"contactInfo": {
- "message": "Contact info"
+ "message": "Info kontak"
},
"downloadAttachment": {
- "message": "Download - $ITEMNAME$",
+ "message": "Unduh - $ITEMNAME$",
"placeholders": {
"itemname": {
"content": "$1",
@@ -4351,23 +4348,23 @@
}
},
"cardNumberEndsWith": {
- "message": "card number ends with",
+ "message": "nomor kartu berakhiran",
"description": "Used within the inline menu to provide an aria description when users are attempting to fill a card cipher."
},
"loginCredentials": {
- "message": "Login credentials"
+ "message": "Kredensial login"
},
"authenticatorKey": {
- "message": "Authenticator key"
+ "message": "Kunci Otentikator"
},
"autofillOptions": {
- "message": "Autofill options"
+ "message": "Pilihan isi otomatis"
},
"websiteUri": {
- "message": "Website (URI)"
+ "message": "Situs web (URI)"
},
"websiteUriCount": {
- "message": "Website (URI) $COUNT$",
+ "message": "$COUNT$ Situs web (URI)",
"description": "Label for an input field that contains a website URI. The input field is part of a list of fields, and the count indicates the position of the field in the list.",
"placeholders": {
"count": {
@@ -4377,16 +4374,16 @@
}
},
"websiteAdded": {
- "message": "Website added"
+ "message": "Situs web ditambahkan"
},
"addWebsite": {
- "message": "Add website"
+ "message": "Tambah situs web"
},
"deleteWebsite": {
- "message": "Delete website"
+ "message": "Hapus situs web"
},
"defaultLabel": {
- "message": "Default ($VALUE$)",
+ "message": "Bawaan ($VALUE$)",
"description": "A label that indicates the default value for a field with the current default value in parentheses.",
"placeholders": {
"value": {
@@ -4396,7 +4393,7 @@
}
},
"showMatchDetection": {
- "message": "Show match detection $WEBSITE$",
+ "message": "Tampilkan deteksi kecocokan $WEBSITE$",
"placeholders": {
"website": {
"content": "$1",
@@ -4405,7 +4402,7 @@
}
},
"hideMatchDetection": {
- "message": "Hide match detection $WEBSITE$",
+ "message": "Sembunyikan deteksi kecocokan $WEBSITE$",
"placeholders": {
"website": {
"content": "$1",
@@ -4414,19 +4411,19 @@
}
},
"autoFillOnPageLoad": {
- "message": "Autofill on page load?"
+ "message": "Isi otomatis ketika halaman dimuat?"
},
"cardExpiredTitle": {
- "message": "Expired card"
+ "message": "Kartu kadaluwarsa"
},
"cardExpiredMessage": {
- "message": "If you've renewed it, update the card's information"
+ "message": "Jika Anda telah memperpanjangnya, perbarui informasi kartu"
},
"cardDetails": {
- "message": "Card details"
+ "message": "Rincian kartu"
},
"cardBrandDetails": {
- "message": "$BRAND$ details",
+ "message": "Rincian $BRAND$",
"placeholders": {
"brand": {
"content": "$1",
@@ -4435,43 +4432,43 @@
}
},
"enableAnimations": {
- "message": "Enable animations"
+ "message": "Nyalakan animasi"
},
"showAnimations": {
- "message": "Show animations"
+ "message": "Tampilkan animasi"
},
"addAccount": {
- "message": "Add account"
+ "message": "Tambah akun"
},
"loading": {
- "message": "Loading"
+ "message": "Memuat"
},
"data": {
"message": "Data"
},
"passkeys": {
- "message": "Passkeys",
+ "message": "Kunci sandi",
"description": "A section header for a list of passkeys."
},
"passwords": {
- "message": "Passwords",
+ "message": "Kata Sandi",
"description": "A section header for a list of passwords."
},
"logInWithPasskeyAriaLabel": {
- "message": "Log in with passkey",
+ "message": "Masuk dengan kunci sandi",
"description": "ARIA label for the inline menu button that logs in with a passkey."
},
"assign": {
- "message": "Assign"
+ "message": "Terapkan"
},
"bulkCollectionAssignmentDialogDescriptionSingular": {
- "message": "Only organization members with access to these collections will be able to see the item."
+ "message": "Hanya anggota organisasi dengan akses ke koleksi berikut yang dapat melihat isinya."
},
"bulkCollectionAssignmentDialogDescriptionPlural": {
- "message": "Only organization members with access to these collections will be able to see the items."
+ "message": "Hanya anggota organisasi dengan akses ke koleksi berikut yang dapat melihat isinya."
},
"bulkCollectionAssignmentWarning": {
- "message": "You have selected $TOTAL_COUNT$ items. You cannot update $READONLY_COUNT$ of the items because you do not have edit permissions.",
+ "message": "Anda telah memilih $TOTAL_COUNT$ benda. Anda tidak dapat memperbarui $READONLY_COUNT$ dari benda karena Anda tidak memiliki izin untuk menyunting.",
"placeholders": {
"total_count": {
"content": "$1",
@@ -4483,37 +4480,37 @@
}
},
"addField": {
- "message": "Add field"
+ "message": "Tambahkan bidang"
},
"add": {
- "message": "Add"
+ "message": "Tambah"
},
"fieldType": {
- "message": "Field type"
+ "message": "Jenis bidang"
},
"fieldLabel": {
- "message": "Field label"
+ "message": "Label bidang"
},
"textHelpText": {
- "message": "Use text fields for data like security questions"
+ "message": "Gunakan bidang teks untuk data seperti pertanyaan keamanan"
},
"hiddenHelpText": {
- "message": "Use hidden fields for sensitive data like a password"
+ "message": "Gunakan bidang tersembunyi untuk data sensitif seperti kata sandi"
},
"checkBoxHelpText": {
- "message": "Use checkboxes if you'd like to autofill a form's checkbox, like a remember email"
+ "message": "Gunakan kotak centang jika Anda ingin mengisi sebuah kotak centang di formullir, seperti mengingat surel"
},
"linkedHelpText": {
- "message": "Use a linked field when you are experiencing autofill issues for a specific website."
+ "message": "Gunakan bidang tertaut ketika Anda mengalami masalah pengisian otomatis untuk situs web tertentu."
},
"linkedLabelHelpText": {
- "message": "Enter the the field's html id, name, aria-label, or placeholder."
+ "message": "Masukkan id, name, aria-label, atau placeholder html dari bidang."
},
"editField": {
- "message": "Edit field"
+ "message": "Sunting bidang"
},
"editFieldLabel": {
- "message": "Edit $LABEL$",
+ "message": "Sunting $LABEL$",
"placeholders": {
"label": {
"content": "$1",
@@ -4522,7 +4519,7 @@
}
},
"deleteCustomField": {
- "message": "Delete $LABEL$",
+ "message": "Hapus $LABEL$",
"placeholders": {
"label": {
"content": "$1",
@@ -4531,7 +4528,7 @@
}
},
"fieldAdded": {
- "message": "$LABEL$ added",
+ "message": "$LABEL$ ditambahkan",
"placeholders": {
"label": {
"content": "$1",
@@ -4540,7 +4537,7 @@
}
},
"reorderToggleButton": {
- "message": "Reorder $LABEL$. Use arrow key to move item up or down.",
+ "message": "Urutkan $LABEL$. Gunakan tombol panah untuk memindahkan benda ke atas atau ke bawah.",
"placeholders": {
"label": {
"content": "$1",
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4768,155 +4768,191 @@
"description": "Represents the space key in screen reader content as a readable word"
},
"tildeCharacterDescriptor": {
- "message": "Tilde",
+ "message": "Tanda gelombang",
"description": "Represents the ~ key in screen reader content as a readable word"
},
"backtickCharacterDescriptor": {
- "message": "Backtick",
+ "message": "Tanda petik terbalik",
"description": "Represents the ` key in screen reader content as a readable word"
},
"exclamationCharacterDescriptor": {
- "message": "Exclamation mark",
+ "message": "Tanda seru",
"description": "Represents the ! key in screen reader content as a readable word"
},
"atSignCharacterDescriptor": {
- "message": "At sign",
+ "message": "Tanda pada",
"description": "Represents the @ key in screen reader content as a readable word"
},
"hashSignCharacterDescriptor": {
- "message": "Hash sign",
+ "message": "Tanda pagar",
"description": "Represents the # key in screen reader content as a readable word"
},
"dollarSignCharacterDescriptor": {
- "message": "Dollar sign",
+ "message": "Tanda dolar",
"description": "Represents the $ key in screen reader content as a readable word"
},
"percentSignCharacterDescriptor": {
- "message": "Percent sign",
+ "message": "Tanda persen",
"description": "Represents the % key in screen reader content as a readable word"
},
"caretCharacterDescriptor": {
- "message": "Caret",
+ "message": "Tanda sisipan",
"description": "Represents the ^ key in screen reader content as a readable word"
},
"ampersandCharacterDescriptor": {
- "message": "Ampersand",
+ "message": "Tanda dan",
"description": "Represents the & key in screen reader content as a readable word"
},
"asteriskCharacterDescriptor": {
- "message": "Asterisk",
+ "message": "Tanda bintang",
"description": "Represents the * key in screen reader content as a readable word"
},
"parenLeftCharacterDescriptor": {
- "message": "Left parenthesis",
+ "message": "Tanda kurung kiri",
"description": "Represents the ( key in screen reader content as a readable word"
},
"parenRightCharacterDescriptor": {
- "message": "Right parenthesis",
+ "message": "Tanda kurung kanan",
"description": "Represents the ) key in screen reader content as a readable word"
},
"hyphenCharacterDescriptor": {
- "message": "Underscore",
+ "message": "Garis bawah",
"description": "Represents the _ key in screen reader content as a readable word"
},
"underscoreCharacterDescriptor": {
- "message": "Hyphen",
+ "message": "Tanda penghubung",
"description": "Represents the - key in screen reader content as a readable word"
},
"plusCharacterDescriptor": {
- "message": "Plus",
+ "message": "Tanda tambah",
"description": "Represents the + key in screen reader content as a readable word"
},
"equalsCharacterDescriptor": {
- "message": "Equals",
+ "message": "Tanda sama dengan",
"description": "Represents the = key in screen reader content as a readable word"
},
"braceLeftCharacterDescriptor": {
- "message": "Left brace",
+ "message": "Kurung kurawal kiri",
"description": "Represents the { key in screen reader content as a readable word"
},
"braceRightCharacterDescriptor": {
- "message": "Right brace",
+ "message": "Kurung kurawal kanan",
"description": "Represents the } key in screen reader content as a readable word"
},
"bracketLeftCharacterDescriptor": {
- "message": "Left bracket",
+ "message": "Tanda kurung siku kiri",
"description": "Represents the [ key in screen reader content as a readable word"
},
"bracketRightCharacterDescriptor": {
- "message": "Right bracket",
+ "message": "Tanda kurung siku kanan",
"description": "Represents the ] key in screen reader content as a readable word"
},
"pipeCharacterDescriptor": {
- "message": "Pipe",
+ "message": "Garis tegak lurus",
"description": "Represents the | key in screen reader content as a readable word"
},
"backSlashCharacterDescriptor": {
- "message": "Back slash",
+ "message": "Garis miring terbalik",
"description": "Represents the back slash key in screen reader content as a readable word"
},
"colonCharacterDescriptor": {
- "message": "Colon",
+ "message": "Tanda titik dua",
"description": "Represents the : key in screen reader content as a readable word"
},
"semicolonCharacterDescriptor": {
- "message": "Semicolon",
+ "message": "Tanda titik koma",
"description": "Represents the ; key in screen reader content as a readable word"
},
"doubleQuoteCharacterDescriptor": {
- "message": "Double quote",
+ "message": "Tanda petik ganda",
"description": "Represents the double quote key in screen reader content as a readable word"
},
"singleQuoteCharacterDescriptor": {
- "message": "Single quote",
+ "message": "Tanda petik tunggal",
"description": "Represents the ' key in screen reader content as a readable word"
},
"lessThanCharacterDescriptor": {
- "message": "Less than",
+ "message": "Tanda kurang dari",
"description": "Represents the < key in screen reader content as a readable word"
},
"greaterThanCharacterDescriptor": {
- "message": "Greater than",
+ "message": "Tanda lebih besar dari",
"description": "Represents the > key in screen reader content as a readable word"
},
"commaCharacterDescriptor": {
- "message": "Comma",
+ "message": "Tanda koma",
"description": "Represents the , key in screen reader content as a readable word"
},
"periodCharacterDescriptor": {
- "message": "Period",
+ "message": "Tanda titik",
"description": "Represents the . key in screen reader content as a readable word"
},
"questionCharacterDescriptor": {
- "message": "Question mark",
+ "message": "Tanda tanya",
"description": "Represents the ? key in screen reader content as a readable word"
},
"forwardSlashCharacterDescriptor": {
- "message": "Forward slash",
+ "message": "Tanda garis miring ke depan",
"description": "Represents the / key in screen reader content as a readable word"
},
"lowercaseAriaLabel": {
- "message": "Lowercase"
+ "message": "Huruf kecil"
},
"uppercaseAriaLabel": {
- "message": "Uppercase"
+ "message": "Huruf kapital"
},
"generatedPassword": {
- "message": "Generated password"
+ "message": "Kata sandi yang dihasilkan"
},
"compactMode": {
- "message": "Compact mode"
+ "message": "Mode ringkas"
},
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
- "message": "Extension width"
+ "message": "Lebar ekstensi"
},
"wide": {
- "message": "Wide"
+ "message": "Lebar"
},
"extraWide": {
- "message": "Extra wide"
+ "message": "Ekstra lebar"
}
}
diff --git a/apps/browser/src/_locales/it/messages.json b/apps/browser/src/_locales/it/messages.json
index 1261106cf32..5b563d69f75 100644
--- a/apps/browser/src/_locales/it/messages.json
+++ b/apps/browser/src/_locales/it/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Valuta l'estensione"
},
- "rateExtensionDesc": {
- "message": "Aiutaci lasciando una buona recensione!"
- },
"browserNotSupportClipboard": {
"message": "Il tuo browser non supporta copiare dagli appunti. Copialo manualmente."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Mostra il numero di suggerimenti di riempimento automatico sull'icona dell'estensione"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "Predefinito del sistema"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/ja/messages.json b/apps/browser/src/_locales/ja/messages.json
index f0f80b745af..f5998a02f87 100644
--- a/apps/browser/src/_locales/ja/messages.json
+++ b/apps/browser/src/_locales/ja/messages.json
@@ -20,16 +20,16 @@
"message": "アカウントの作成"
},
"newToBitwarden": {
- "message": "New to Bitwarden?"
+ "message": "Bitwarden は初めてですか?"
},
"logInWithPasskey": {
- "message": "Log in with passkey"
+ "message": "パスキーでログイン"
},
"useSingleSignOn": {
- "message": "Use single sign-on"
+ "message": "シングルサインオンを使用する"
},
"welcomeBack": {
- "message": "Welcome back"
+ "message": "ようこそ"
},
"setAStrongPassword": {
"message": "強力なパスワードを設定する"
@@ -84,7 +84,7 @@
"message": "組織に参加"
},
"joinOrganizationName": {
- "message": "Join $ORGANIZATIONNAME$",
+ "message": "$ORGANIZATIONNAME$ に参加",
"placeholders": {
"organizationName": {
"content": "$1",
@@ -120,7 +120,7 @@
"message": "パスワードをコピー"
},
"copyPassphrase": {
- "message": "Copy passphrase"
+ "message": "パスフレーズをコピー"
},
"copyNote": {
"message": "メモをコピー"
@@ -153,13 +153,13 @@
"message": "免許証番号をコピー"
},
"copyPrivateKey": {
- "message": "Copy private key"
+ "message": "秘密鍵をコピー"
},
"copyPublicKey": {
- "message": "Copy public key"
+ "message": "公開鍵をコピー"
},
"copyFingerprint": {
- "message": "Copy fingerprint"
+ "message": "フィンガープリントをコピー"
},
"copyCustomField": {
"message": "$FIELD$ をコピー",
@@ -177,7 +177,7 @@
"message": "メモをコピー"
},
"fill": {
- "message": "Fill",
+ "message": "入力",
"description": "This string is used on the vault page to indicate autofilling. Horizontal space is limited in the interface here so try and keep translations as concise as possible."
},
"autoFill": {
@@ -193,10 +193,10 @@
"message": "自動入力 ID"
},
"fillVerificationCode": {
- "message": "Fill verification code"
+ "message": "認証コードを入力"
},
"fillVerificationCodeAria": {
- "message": "Fill Verification Code",
+ "message": "認証コードを入力",
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
},
"generatePasswordCopied": {
@@ -443,7 +443,7 @@
"message": "パスワードの自動生成"
},
"generatePassphrase": {
- "message": "Generate passphrase"
+ "message": "パスフレーズを生成"
},
"regeneratePassword": {
"message": "パスワードの再生成"
@@ -607,7 +607,7 @@
"message": "ウェブサイトを開く"
},
"launchWebsiteName": {
- "message": "Launch website $ITEMNAME$",
+ "message": "ウェブサイト $ITEMNAME$ を開く",
"placeholders": {
"itemname": {
"content": "$1",
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "拡張機能の評価"
},
- "rateExtensionDesc": {
- "message": "良いレビューで私たちを助けてください!"
- },
"browserNotSupportClipboard": {
"message": "お使いのブラウザはクリップボードへのコピーに対応していません。手動でコピーしてください"
},
@@ -862,7 +859,7 @@
"message": "ログイン"
},
"logInToBitwarden": {
- "message": "Log in to Bitwarden"
+ "message": "Bitwarden にログイン"
},
"restartRegistration": {
"message": "登録を再度始める"
@@ -1133,7 +1130,7 @@
"description": "WARNING (should stay in capitalized letters if the language permits)"
},
"warningCapitalized": {
- "message": "Warning",
+ "message": "注意",
"description": "Warning (should maintain locale-relevant capitalization)"
},
"confirmVaultExport": {
@@ -1327,10 +1324,10 @@
"message": "認証アプリに表示された6桁の認証コードを入力してください。"
},
"authenticationTimeout": {
- "message": "Authentication timeout"
+ "message": "認証のタイムアウト"
},
"authenticationSessionTimedOut": {
- "message": "The authentication session timed out. Please restart the login process."
+ "message": "認証セッションの有効期限が切れました。ログインプロセスを再開してください。"
},
"enterVerificationCodeEmail": {
"message": "$EMAIL$に送信された6桁の認証コードを入力してください。",
@@ -1450,7 +1447,7 @@
"message": "サーバー URL"
},
"selfHostBaseUrl": {
- "message": "Self-host server URL",
+ "message": "自己ホスト型サーバー URL",
"description": "Label for field requesting a self-hosted integration service URL"
},
"apiUrl": {
@@ -1778,7 +1775,7 @@
"message": "ID"
},
"typeSshKey": {
- "message": "SSH key"
+ "message": "SSH 鍵"
},
"newItemHeader": {
"message": "$TYPE$ を新規作成",
@@ -1811,13 +1808,13 @@
"message": "パスワードの履歴"
},
"generatorHistory": {
- "message": "Generator history"
+ "message": "生成履歴"
},
"clearGeneratorHistoryTitle": {
- "message": "Clear generator history"
+ "message": "生成履歴を消去"
},
"cleargGeneratorHistoryDescription": {
- "message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?"
+ "message": "続行すると、すべてのエントリは生成履歴から完全に削除されます。続行してもよろしいですか?"
},
"back": {
"message": "戻る"
@@ -1856,7 +1853,7 @@
"message": "セキュアメモ"
},
"sshKeys": {
- "message": "SSH Keys"
+ "message": "SSH 鍵"
},
"clear": {
"message": "消去する",
@@ -1939,10 +1936,10 @@
"message": "履歴を消去"
},
"nothingToShow": {
- "message": "Nothing to show"
+ "message": "表示するものがありません"
},
"nothingGeneratedRecently": {
- "message": "You haven't generated anything recently"
+ "message": "最近生成したものはありません"
},
"remove": {
"message": "削除"
@@ -2531,7 +2528,7 @@
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendPasswordDescV3": {
- "message": "Add an optional password for recipients to access this Send.",
+ "message": "受信者がこの Send にアクセスするための任意のパスワードを追加します。",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendNotesDesc": {
@@ -2894,10 +2891,10 @@
"message": "ユーザー名を生成"
},
"generateEmail": {
- "message": "Generate email"
+ "message": "メールアドレスを生成"
},
"spinboxBoundariesHint": {
- "message": "Value must be between $MIN$ and $MAX$.",
+ "message": "値は $MIN$ から $MAX$ の間でなければなりません。",
"description": "Explains spin box minimum and maximum values to the user",
"placeholders": {
"min": {
@@ -2911,7 +2908,7 @@
}
},
"passwordLengthRecommendationHint": {
- "message": " Use $RECOMMENDED$ characters or more to generate a strong password.",
+ "message": " 強力なパスワードを生成するには、 $RECOMMENDED$ 文字以上を使用してください。",
"description": "Appended to `spinboxBoundariesHint` to recommend a length to the user. This must include any language-specific 'sentence' separator characters (e.g. a space in english).",
"placeholders": {
"recommended": {
@@ -2921,7 +2918,7 @@
}
},
"passphraseNumWordsRecommendationHint": {
- "message": " Use $RECOMMENDED$ words or more to generate a strong passphrase.",
+ "message": " 強力なパスフレーズを生成するには、 $RECOMMENDED$ 単語以上を使用してください。",
"description": "Appended to `spinboxBoundariesHint` to recommend a number of words to the user. This must include any language-specific 'sentence' separator characters (e.g. a space in english).",
"placeholders": {
"recommended": {
@@ -2971,11 +2968,11 @@
"message": "外部転送サービスを使用してメールエイリアスを生成します。"
},
"forwarderDomainName": {
- "message": "Email domain",
+ "message": "メールアドレスのドメイン",
"description": "Labels the domain name email forwarder service option"
},
"forwarderDomainNameHint": {
- "message": "Choose a domain that is supported by the selected service",
+ "message": "選択したサービスでサポートされているドメインを選択してください",
"description": "Guidance provided for email forwarding services that support multiple email domains."
},
"forwarderError": {
@@ -3178,25 +3175,25 @@
"message": "通知を再送信する"
},
"viewAllLogInOptions": {
- "message": "View all log in options"
+ "message": "すべてのログインオプションを表示"
},
"viewAllLoginOptionsV1": {
- "message": "View all log in options"
+ "message": "すべてのログインオプションを表示"
},
"notificationSentDevice": {
"message": "デバイスに通知を送信しました。"
},
"aNotificationWasSentToYourDevice": {
- "message": "A notification was sent to your device"
+ "message": "お使いのデバイスに通知が送信されました"
},
"makeSureYourAccountIsUnlockedAndTheFingerprintEtc": {
- "message": "Make sure your account is unlocked and the fingerprint phrase matches on the other device"
+ "message": "アカウントがロック解除されていることと、フィンガープリントフレーズが他の端末で一致していることを確認してください"
},
"youWillBeNotifiedOnceTheRequestIsApproved": {
- "message": "You will be notified once the request is approved"
+ "message": "リクエストが承認されると通知されます"
},
"needAnotherOptionV1": {
- "message": "Need another option?"
+ "message": "別の選択肢が必要ですか?"
},
"loginInitiated": {
"message": "ログイン開始"
@@ -3292,16 +3289,16 @@
"message": "新しいウィンドウで開く"
},
"rememberThisDeviceToMakeFutureLoginsSeamless": {
- "message": "Remember this device to make future logins seamless"
+ "message": "このデバイスを記憶して今後のログインをシームレスにする"
},
"deviceApprovalRequired": {
"message": "デバイスの承認が必要です。以下から承認オプションを選択してください:"
},
"deviceApprovalRequiredV2": {
- "message": "Device approval required"
+ "message": "デバイスの承認が必要です"
},
"selectAnApprovalOptionBelow": {
- "message": "Select an approval option below"
+ "message": "以下の承認オプションを選択してください"
},
"rememberThisDevice": {
"message": "このデバイスを記憶する"
@@ -3377,7 +3374,7 @@
"message": "ユーザーのメールアドレスがありません"
},
"activeUserEmailNotFoundLoggingYouOut": {
- "message": "Active user email not found. Logging you out."
+ "message": "アクティブなユーザーメールアドレスが見つかりません。ログアウトします。"
},
"deviceTrusted": {
"message": "信頼されたデバイス"
@@ -3588,11 +3585,11 @@
"description": "Screen reader text (aria-label) for unlock account button in overlay"
},
"totpCodeAria": {
- "message": "Time-based One-Time Password Verification Code",
+ "message": "時間ベースのワンタイムパスワード認証コード",
"description": "Aria label for the totp code displayed in the inline menu for autofill"
},
"totpSecondsSpanAria": {
- "message": "Time remaining before current TOTP expires",
+ "message": "現在の TOTP 有効期限が切れるまでの残り時間",
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
},
"fillCredentialsFor": {
@@ -3824,7 +3821,7 @@
"message": "アクセス中"
},
"loggedInExclamation": {
- "message": "Logged in!"
+ "message": "ログインしました!"
},
"passkeyNotCopied": {
"message": "パスキーはコピーされません"
@@ -4318,13 +4315,13 @@
"message": "フィルター"
},
"filterVault": {
- "message": "Filter vault"
+ "message": "保管庫をフィルター"
},
"filterApplied": {
- "message": "One filter applied"
+ "message": "1 個のフィルタを適用しました"
},
"filterAppliedPlural": {
- "message": "$COUNT$ filters applied",
+ "message": "$COUNT$ 個のフィルタを適用しました",
"placeholders": {
"count": {
"content": "$1",
@@ -4656,13 +4653,13 @@
"message": "アイテムの場所"
},
"fileSend": {
- "message": "File Send"
+ "message": "ファイル Send"
},
"fileSends": {
"message": "ファイル Send"
},
"textSend": {
- "message": "Text Send"
+ "message": "テキスト Send"
},
"textSends": {
"message": "テキスト Send"
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "拡張機能アイコンにログイン自動入力の候補の数を表示する"
},
+ "showQuickCopyActions": {
+ "message": "保管庫にクイックコピー操作を表示する"
+ },
"systemDefault": {
"message": "システムのデフォルト"
},
@@ -4686,16 +4686,16 @@
"message": "エンタープライズポリシー要件がこの設定に適用されました"
},
"sshPrivateKey": {
- "message": "Private key"
+ "message": "秘密鍵"
},
"sshPublicKey": {
- "message": "Public key"
+ "message": "公開鍵"
},
"sshFingerprint": {
- "message": "Fingerprint"
+ "message": "フィンガープリント"
},
"sshKeyAlgorithm": {
- "message": "Key type"
+ "message": "鍵の種類"
},
"sshKeyAlgorithmED25519": {
"message": "ED25519"
@@ -4752,171 +4752,207 @@
"message": "認証中"
},
"fillGeneratedPassword": {
- "message": "Fill generated password",
+ "message": "生成したパスワードを入力",
"description": "Heading for the password generator within the inline menu"
},
"passwordRegenerated": {
- "message": "Password regenerated",
+ "message": "パスワードを再生成しました",
"description": "Notification message for when a password has been regenerated"
},
"saveLoginToBitwarden": {
- "message": "Save login to Bitwarden?",
+ "message": "Bitwarden にログイン情報を保存しますか?",
"description": "Confirmation message for saving a login to Bitwarden"
},
"spaceCharacterDescriptor": {
- "message": "Space",
+ "message": "スペース",
"description": "Represents the space key in screen reader content as a readable word"
},
"tildeCharacterDescriptor": {
- "message": "Tilde",
+ "message": "チルダ",
"description": "Represents the ~ key in screen reader content as a readable word"
},
"backtickCharacterDescriptor": {
- "message": "Backtick",
+ "message": "バッククォート",
"description": "Represents the ` key in screen reader content as a readable word"
},
"exclamationCharacterDescriptor": {
- "message": "Exclamation mark",
+ "message": "エクスクラメーションマーク",
"description": "Represents the ! key in screen reader content as a readable word"
},
"atSignCharacterDescriptor": {
- "message": "At sign",
+ "message": "アットマーク",
"description": "Represents the @ key in screen reader content as a readable word"
},
"hashSignCharacterDescriptor": {
- "message": "Hash sign",
+ "message": "ハッシュ記号",
"description": "Represents the # key in screen reader content as a readable word"
},
"dollarSignCharacterDescriptor": {
- "message": "Dollar sign",
+ "message": "ドル記号",
"description": "Represents the $ key in screen reader content as a readable word"
},
"percentSignCharacterDescriptor": {
- "message": "Percent sign",
+ "message": "パーセント記号",
"description": "Represents the % key in screen reader content as a readable word"
},
"caretCharacterDescriptor": {
- "message": "Caret",
+ "message": "キャレット",
"description": "Represents the ^ key in screen reader content as a readable word"
},
"ampersandCharacterDescriptor": {
- "message": "Ampersand",
+ "message": "アンパサンド",
"description": "Represents the & key in screen reader content as a readable word"
},
"asteriskCharacterDescriptor": {
- "message": "Asterisk",
+ "message": "アスタリスク",
"description": "Represents the * key in screen reader content as a readable word"
},
"parenLeftCharacterDescriptor": {
- "message": "Left parenthesis",
+ "message": "左かっこ",
"description": "Represents the ( key in screen reader content as a readable word"
},
"parenRightCharacterDescriptor": {
- "message": "Right parenthesis",
+ "message": "右かっこ",
"description": "Represents the ) key in screen reader content as a readable word"
},
"hyphenCharacterDescriptor": {
- "message": "Underscore",
+ "message": "アンダースコア",
"description": "Represents the _ key in screen reader content as a readable word"
},
"underscoreCharacterDescriptor": {
- "message": "Hyphen",
+ "message": "ハイフン",
"description": "Represents the - key in screen reader content as a readable word"
},
"plusCharacterDescriptor": {
- "message": "Plus",
+ "message": "プラス",
"description": "Represents the + key in screen reader content as a readable word"
},
"equalsCharacterDescriptor": {
- "message": "Equals",
+ "message": "イコール",
"description": "Represents the = key in screen reader content as a readable word"
},
"braceLeftCharacterDescriptor": {
- "message": "Left brace",
+ "message": "左中かっこ",
"description": "Represents the { key in screen reader content as a readable word"
},
"braceRightCharacterDescriptor": {
- "message": "Right brace",
+ "message": "右中かっこ",
"description": "Represents the } key in screen reader content as a readable word"
},
"bracketLeftCharacterDescriptor": {
- "message": "Left bracket",
+ "message": "左大かっこ",
"description": "Represents the [ key in screen reader content as a readable word"
},
"bracketRightCharacterDescriptor": {
- "message": "Right bracket",
+ "message": "右大かっこ",
"description": "Represents the ] key in screen reader content as a readable word"
},
"pipeCharacterDescriptor": {
- "message": "Pipe",
+ "message": "パイプ",
"description": "Represents the | key in screen reader content as a readable word"
},
"backSlashCharacterDescriptor": {
- "message": "Back slash",
+ "message": "バックスラッシュ",
"description": "Represents the back slash key in screen reader content as a readable word"
},
"colonCharacterDescriptor": {
- "message": "Colon",
+ "message": "コロン",
"description": "Represents the : key in screen reader content as a readable word"
},
"semicolonCharacterDescriptor": {
- "message": "Semicolon",
+ "message": "セミコロン",
"description": "Represents the ; key in screen reader content as a readable word"
},
"doubleQuoteCharacterDescriptor": {
- "message": "Double quote",
+ "message": "ダブルクォート",
"description": "Represents the double quote key in screen reader content as a readable word"
},
"singleQuoteCharacterDescriptor": {
- "message": "Single quote",
+ "message": "シングルクォート",
"description": "Represents the ' key in screen reader content as a readable word"
},
"lessThanCharacterDescriptor": {
- "message": "Less than",
+ "message": "小なり",
"description": "Represents the < key in screen reader content as a readable word"
},
"greaterThanCharacterDescriptor": {
- "message": "Greater than",
+ "message": "大なり",
"description": "Represents the > key in screen reader content as a readable word"
},
"commaCharacterDescriptor": {
- "message": "Comma",
+ "message": "コンマ",
"description": "Represents the , key in screen reader content as a readable word"
},
"periodCharacterDescriptor": {
- "message": "Period",
+ "message": "ピリオド",
"description": "Represents the . key in screen reader content as a readable word"
},
"questionCharacterDescriptor": {
- "message": "Question mark",
+ "message": "クエスチョンマーク",
"description": "Represents the ? key in screen reader content as a readable word"
},
"forwardSlashCharacterDescriptor": {
- "message": "Forward slash",
+ "message": "スラッシュ",
"description": "Represents the / key in screen reader content as a readable word"
},
"lowercaseAriaLabel": {
- "message": "Lowercase"
+ "message": "小文字"
},
"uppercaseAriaLabel": {
- "message": "Uppercase"
+ "message": "大文字"
},
"generatedPassword": {
- "message": "Generated password"
+ "message": "生成したパスワード"
},
"compactMode": {
- "message": "Compact mode"
+ "message": "コンパクトモード"
},
"beta": {
- "message": "Beta"
+ "message": "ベータ"
+ },
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
},
"extensionWidth": {
- "message": "Extension width"
+ "message": "拡張機能の幅"
},
"wide": {
- "message": "Wide"
+ "message": "ワイド"
},
"extraWide": {
- "message": "Extra wide"
+ "message": "エクストラワイド"
}
}
diff --git a/apps/browser/src/_locales/ka/messages.json b/apps/browser/src/_locales/ka/messages.json
index 33ccbdbb1a1..8cef6ece782 100644
--- a/apps/browser/src/_locales/ka/messages.json
+++ b/apps/browser/src/_locales/ka/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Rate the extension"
},
- "rateExtensionDesc": {
- "message": "Please consider helping us out with a good review!"
- },
"browserNotSupportClipboard": {
"message": "Your web browser does not support easy clipboard copying. Copy it manually instead."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "სისტემურად ნაგულისხმევი"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/km/messages.json b/apps/browser/src/_locales/km/messages.json
index 779ff917578..8f7673803cb 100644
--- a/apps/browser/src/_locales/km/messages.json
+++ b/apps/browser/src/_locales/km/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Rate the extension"
},
- "rateExtensionDesc": {
- "message": "Please consider helping us out with a good review!"
- },
"browserNotSupportClipboard": {
"message": "Your web browser does not support easy clipboard copying. Copy it manually instead."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/kn/messages.json b/apps/browser/src/_locales/kn/messages.json
index 8b21fc61e56..7507e254447 100644
--- a/apps/browser/src/_locales/kn/messages.json
+++ b/apps/browser/src/_locales/kn/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "ವಿಸ್ತರಣೆಯನ್ನು ರೇಟ್ ಮಾಡಿ"
},
- "rateExtensionDesc": {
- "message": "ಉತ್ತಮ ವಿಮರ್ಶೆಯೊಂದಿಗೆ ನಮಗೆ ಸಹಾಯ ಮಾಡಲು ದಯವಿಟ್ಟು ಪರಿಗಣಿಸಿ!"
- },
"browserNotSupportClipboard": {
"message": "ನಿಮ್ಮ ವೆಬ್ ಬ್ರೌಸರ್ ಸುಲಭವಾದ ಕ್ಲಿಪ್ಬೋರ್ಡ್ ನಕಲು ಮಾಡುವುದನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ಬದಲಿಗೆ ಅದನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ನಕಲಿಸಿ."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/ko/messages.json b/apps/browser/src/_locales/ko/messages.json
index 91207cd0e34..6ab1a467475 100644
--- a/apps/browser/src/_locales/ko/messages.json
+++ b/apps/browser/src/_locales/ko/messages.json
@@ -193,10 +193,10 @@
"message": "신원 자동 완성"
},
"fillVerificationCode": {
- "message": "Fill verification code"
+ "message": "인증 코드를 입력하세요"
},
"fillVerificationCodeAria": {
- "message": "Fill Verification Code",
+ "message": "인증 코드를 입력하세요",
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
},
"generatePasswordCopied": {
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "확장 프로그램 평가"
},
- "rateExtensionDesc": {
- "message": "좋은 리뷰를 남겨 저희를 도와주세요!"
- },
"browserNotSupportClipboard": {
"message": "사용하고 있는 웹 브라우저가 쉬운 클립보드 복사를 지원하지 않습니다. 직접 복사하세요."
},
@@ -2069,11 +2066,11 @@
"message": "보안 비밀번호가 생성되었습니다! 웹사이트에서 비밀번호를 업데이트하는 것도 잊지 마세요."
},
"useGeneratorHelpTextPartOne": {
- "message": "생성기를 사용하세요",
+ "message": "생성기를 사용하여",
"description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'"
},
"useGeneratorHelpTextPartTwo": {
- "message": "강력한 고유 비밀번호를 만들기 위해서는",
+ "message": "강력한 고유 비밀번호를 만드세요",
"description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'"
},
"vaultTimeoutAction": {
@@ -3181,7 +3178,7 @@
"message": "모든 로그인 방식 보기"
},
"viewAllLoginOptionsV1": {
- "message": "View all log in options"
+ "message": "모든 로그인 옵션 보기"
},
"notificationSentDevice": {
"message": "기기에 알림이 전송되었습니다."
@@ -3588,11 +3585,11 @@
"description": "Screen reader text (aria-label) for unlock account button in overlay"
},
"totpCodeAria": {
- "message": "Time-based One-Time Password Verification Code",
+ "message": "TOTP 인증 코드",
"description": "Aria label for the totp code displayed in the inline menu for autofill"
},
"totpSecondsSpanAria": {
- "message": "Time remaining before current TOTP expires",
+ "message": "TOTP 만료까지 남은 시간",
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
},
"fillCredentialsFor": {
@@ -3669,7 +3666,7 @@
"message": "데이터 가져오기 성공"
},
"importSuccessNumberOfItems": {
- "message": "A total of $AMOUNT$ items were imported.",
+ "message": "총 $AMOUNT$개의 항목을 가져왔습니다.",
"placeholders": {
"amount": {
"content": "$1",
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "확장 아이콘에 로그인 자동 완성 제안 수 표시"
},
+ "showQuickCopyActions": {
+ "message": "보관함에서 빠른 복사 기능 표시"
+ },
"systemDefault": {
"message": "시스템 기본 설정"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "베타"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "확장 폭"
},
diff --git a/apps/browser/src/_locales/lt/messages.json b/apps/browser/src/_locales/lt/messages.json
index 7fd47194b7c..f55fb8b3e25 100644
--- a/apps/browser/src/_locales/lt/messages.json
+++ b/apps/browser/src/_locales/lt/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Įvertinkite šį plėtinį"
},
- "rateExtensionDesc": {
- "message": "Apsvarstykite galimybę mums padėti palikdami gerą atsiliepimą!"
- },
"browserNotSupportClipboard": {
"message": "Jūsų žiniatinklio naršyklė nepalaiko automatinio kopijavimo. Vietoj to nukopijuokite rankiniu būdu."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/lv/messages.json b/apps/browser/src/_locales/lv/messages.json
index 3fa9085d005..31bdcd59e45 100644
--- a/apps/browser/src/_locales/lv/messages.json
+++ b/apps/browser/src/_locales/lv/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Novērtēt paplašinājumu"
},
- "rateExtensionDesc": {
- "message": "Lūgums apsvērt palīdzēt mums ar labu atsauksmi."
- },
"browserNotSupportClipboard": {
"message": "Pārlūks neatbalsta vienkāršo ievietošanu starpliktuvē. Tā vietā tas jāievieto starpliktuvē pašrocīgi."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Paplašinājuma ikonā rādīt pieteikšanās automātiskās aizpildes ieteikumu skaitu"
},
+ "showQuickCopyActions": {
+ "message": "Glabātavā rādīt ātrās kopēšanas darbības"
+ },
"systemDefault": {
"message": "Sistēmas noklusējums"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Svarīgs paziņojums"
+ },
+ "setupTwoStepLogin": {
+ "message": "Iestatīt divpakāpju pieteikšanos"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden, sākot ar 2025. gada februāri, nosūtīs kodu uz konta e-pasta adresi, lai apliecinātu pieteikšanos no jaunām ierīcēm."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "Var iestatīt divpakāpju pieteikšanos kā citu veidu, kā aizsargāt savu kontu, vai iestatīt savu e-pasta adresi uz tādu, kurai ir piekļuve."
+ },
+ "remindMeLater": {
+ "message": "Atgādināt man vēlāk"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Vai ir uzticama piekļuve savai e-pasta adresei $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "Nē, nav"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Jā, varu uzticami piekļūt savam e-pastam"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Ieslēgt divpakāpju pieteikšanos"
+ },
+ "changeAcctEmail": {
+ "message": "Mainīt konta e-pasta adresi"
+ },
"extensionWidth": {
"message": "Paplašinājuma platums"
},
diff --git a/apps/browser/src/_locales/ml/messages.json b/apps/browser/src/_locales/ml/messages.json
index 80e8cd90052..e3c377b2e8c 100644
--- a/apps/browser/src/_locales/ml/messages.json
+++ b/apps/browser/src/_locales/ml/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "എക്സ്റ്റൻഷൻ റേറ്റ് ചെയ്യുക "
},
- "rateExtensionDesc": {
- "message": "ഒരു നല്ല അവലോകനത്തിന് ഞങ്ങളെ സഹായിക്കുന്നത് പരിഗണിക്കുക!"
- },
"browserNotSupportClipboard": {
"message": "നിങ്ങളുടെ ബ്രൌസർ എളുപ്പമുള്ള ക്ലിപ്പ്ബോർഡ് പകർത്തൽ പിന്തുണയ്ക്കത്തില്ല. പകരം അത് സ്വമേധയാ പകർക്കുക ."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/mr/messages.json b/apps/browser/src/_locales/mr/messages.json
index be0b2627b8a..02c66ea8f69 100644
--- a/apps/browser/src/_locales/mr/messages.json
+++ b/apps/browser/src/_locales/mr/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "विस्तारकाचे मूल्यांकन करा"
},
- "rateExtensionDesc": {
- "message": "चांगला अभिप्राय देऊन आम्हाला मदत करा!"
- },
"browserNotSupportClipboard": {
"message": "Your web browser does not support easy clipboard copying. Copy it manually instead."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/my/messages.json b/apps/browser/src/_locales/my/messages.json
index 779ff917578..8f7673803cb 100644
--- a/apps/browser/src/_locales/my/messages.json
+++ b/apps/browser/src/_locales/my/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Rate the extension"
},
- "rateExtensionDesc": {
- "message": "Please consider helping us out with a good review!"
- },
"browserNotSupportClipboard": {
"message": "Your web browser does not support easy clipboard copying. Copy it manually instead."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/nb/messages.json b/apps/browser/src/_locales/nb/messages.json
index ef36839dd53..604597091ef 100644
--- a/apps/browser/src/_locales/nb/messages.json
+++ b/apps/browser/src/_locales/nb/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Gi denne utvidelsen en vurdering"
},
- "rateExtensionDesc": {
- "message": "Tenk gjerne på om du vil skrive en anmeldelse om oss!"
- },
"browserNotSupportClipboard": {
"message": "Nettleseren din støtter ikke kopiering til utklippstavlen på noe enkelt vis. Prøv å kopiere det manuelt i stedet."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "Systemforvalg"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/ne/messages.json b/apps/browser/src/_locales/ne/messages.json
index 779ff917578..8f7673803cb 100644
--- a/apps/browser/src/_locales/ne/messages.json
+++ b/apps/browser/src/_locales/ne/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Rate the extension"
},
- "rateExtensionDesc": {
- "message": "Please consider helping us out with a good review!"
- },
"browserNotSupportClipboard": {
"message": "Your web browser does not support easy clipboard copying. Copy it manually instead."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/nl/messages.json b/apps/browser/src/_locales/nl/messages.json
index 23fbcd3d265..170c682aa1c 100644
--- a/apps/browser/src/_locales/nl/messages.json
+++ b/apps/browser/src/_locales/nl/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Deze extensie beoordelen"
},
- "rateExtensionDesc": {
- "message": "Je kunt ons helpen door een goede recensie achter te laten!"
- },
"browserNotSupportClipboard": {
"message": "Je webbrowser ondersteunt kopiëren naar plakbord niet. Kopieer handmatig."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Aantal login-autofill-suggesties op het extensie-pictogram weergeven"
},
+ "showQuickCopyActions": {
+ "message": "Toon snelle kopieeracties in de kluis"
+ },
"systemDefault": {
"message": "Systeemstandaard"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Belangrijke mededeling"
+ },
+ "setupTwoStepLogin": {
+ "message": "Tweestapsaanmelding instellen"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Vanaf februari 2025 stuurt Bitwarden een code naar het e-mailadres van je account om inloggen op nieuwe apparaten te verifiëren."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "Je kunt tweestapsaanmelding instellen als een alternatieve manier om je account te beschermen of je e-mailadres te veranderen naar een waar je toegang toe hebt."
+ },
+ "remindMeLater": {
+ "message": "Herinner me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Heb je betrouwbare toegang tot je e-mail, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "Nee, dat heb ik niet"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Ja, ik heb betrouwbare toegang tot mijn e-mail"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Tweestapsaanmelding inschakelen"
+ },
+ "changeAcctEmail": {
+ "message": "E-mailadres van het account veranderen"
+ },
"extensionWidth": {
"message": "Extensiebreedte"
},
diff --git a/apps/browser/src/_locales/nn/messages.json b/apps/browser/src/_locales/nn/messages.json
index 779ff917578..8f7673803cb 100644
--- a/apps/browser/src/_locales/nn/messages.json
+++ b/apps/browser/src/_locales/nn/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Rate the extension"
},
- "rateExtensionDesc": {
- "message": "Please consider helping us out with a good review!"
- },
"browserNotSupportClipboard": {
"message": "Your web browser does not support easy clipboard copying. Copy it manually instead."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/or/messages.json b/apps/browser/src/_locales/or/messages.json
index 779ff917578..8f7673803cb 100644
--- a/apps/browser/src/_locales/or/messages.json
+++ b/apps/browser/src/_locales/or/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Rate the extension"
},
- "rateExtensionDesc": {
- "message": "Please consider helping us out with a good review!"
- },
"browserNotSupportClipboard": {
"message": "Your web browser does not support easy clipboard copying. Copy it manually instead."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json
index 0db4fc4dd8b..7025862cb72 100644
--- a/apps/browser/src/_locales/pl/messages.json
+++ b/apps/browser/src/_locales/pl/messages.json
@@ -23,19 +23,19 @@
"message": "New to Bitwarden?"
},
"logInWithPasskey": {
- "message": "Log in with passkey"
+ "message": "Zaloguj się używając passkey"
},
"useSingleSignOn": {
- "message": "Use single sign-on"
+ "message": "Użyj jednokrotnego logowania"
},
"welcomeBack": {
- "message": "Welcome back"
+ "message": "Witaj ponownie"
},
"setAStrongPassword": {
"message": "Ustaw silne hasło"
},
"finishCreatingYourAccountBySettingAPassword": {
- "message": "Ukończ tworzenie konta poprzez utworzenie hasła"
+ "message": "Ukończ tworzenie konta poprzez ustawienie hasła"
},
"enterpriseSingleSignOn": {
"message": "Logowanie jednokrotne"
@@ -120,7 +120,7 @@
"message": "Kopiuj hasło"
},
"copyPassphrase": {
- "message": "Copy passphrase"
+ "message": "Kopiuj frazę bezpieczeństwa"
},
"copyNote": {
"message": "Kopiuj notatkę"
@@ -153,13 +153,13 @@
"message": "Kopiuj numer licencji"
},
"copyPrivateKey": {
- "message": "Copy private key"
+ "message": "Skopiuj klucz prywatny"
},
"copyPublicKey": {
- "message": "Copy public key"
+ "message": "Skopiuj klucz publiczny"
},
"copyFingerprint": {
- "message": "Copy fingerprint"
+ "message": "Skopiuj odcisk palca"
},
"copyCustomField": {
"message": "Kopiuj $FIELD$",
@@ -193,10 +193,10 @@
"message": "Autouzupełnianie tożsamości"
},
"fillVerificationCode": {
- "message": "Fill verification code"
+ "message": "Wypełnij kod weryfikacyjny"
},
"fillVerificationCodeAria": {
- "message": "Fill Verification Code",
+ "message": "Wypełnij kod weryfikacyjny",
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
},
"generatePasswordCopied": {
@@ -443,7 +443,7 @@
"message": "Wygeneruj hasło"
},
"generatePassphrase": {
- "message": "Generate passphrase"
+ "message": "Wygenruj frazę zabezpieczającą"
},
"regeneratePassword": {
"message": "Wygeneruj ponownie hasło"
@@ -607,7 +607,7 @@
"message": "Otwórz stronę"
},
"launchWebsiteName": {
- "message": "Launch website $ITEMNAME$",
+ "message": "Otwórz stronę internetową $ITEMNAME$",
"placeholders": {
"itemname": {
"content": "$1",
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Oceń rozszerzenie"
},
- "rateExtensionDesc": {
- "message": "Wesprzyj nas pozytywną opinią!"
- },
"browserNotSupportClipboard": {
"message": "Przeglądarka nie obsługuje łatwego kopiowania schowka. Skopiuj element ręcznie."
},
@@ -862,7 +859,7 @@
"message": "Zaloguj się"
},
"logInToBitwarden": {
- "message": "Log in to Bitwarden"
+ "message": "Zaloguj się do Bitwarden"
},
"restartRegistration": {
"message": "Zrestartuj rejestrację"
@@ -1133,7 +1130,7 @@
"description": "WARNING (should stay in capitalized letters if the language permits)"
},
"warningCapitalized": {
- "message": "Warning",
+ "message": "Ostrzeżenie",
"description": "Warning (should maintain locale-relevant capitalization)"
},
"confirmVaultExport": {
@@ -1327,7 +1324,7 @@
"message": "Wpisz 6-cyfrowy kod weryfikacyjny z aplikacji uwierzytelniającej."
},
"authenticationTimeout": {
- "message": "Authentication timeout"
+ "message": "Limit czasu uwierzytelniania"
},
"authenticationSessionTimedOut": {
"message": "The authentication session timed out. Please restart the login process."
@@ -1450,7 +1447,7 @@
"message": "Adres URL serwera"
},
"selfHostBaseUrl": {
- "message": "Self-host server URL",
+ "message": "URL samodzielnie hostowanego serwera",
"description": "Label for field requesting a self-hosted integration service URL"
},
"apiUrl": {
@@ -2531,7 +2528,7 @@
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendPasswordDescV3": {
- "message": "Add an optional password for recipients to access this Send.",
+ "message": "Zabezpiecz tę wiadomość hasłem, które będzie wymagane, aby uzyskać do niej dostęp.",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendNotesDesc": {
@@ -2616,7 +2613,7 @@
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendFilePopoutDialogText": {
- "message": "Pop out extension?",
+ "message": "Otworzyć rozszerzenie w nowym oknie?",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendFilePopoutDialogDesc": {
@@ -2894,7 +2891,7 @@
"message": "Wygeneruj nazwę użytkownika"
},
"generateEmail": {
- "message": "Generate email"
+ "message": "Wygeneruj e-mail"
},
"spinboxBoundariesHint": {
"message": "Wartość musi być pomiędzy $MIN$ a $MAX$.",
@@ -2971,11 +2968,11 @@
"message": "Wygeneruj alias adresu e-mail z zewnętrznej usługi przekierowania."
},
"forwarderDomainName": {
- "message": "Email domain",
+ "message": "Domena adresu e-mail",
"description": "Labels the domain name email forwarder service option"
},
"forwarderDomainNameHint": {
- "message": "Choose a domain that is supported by the selected service",
+ "message": "Wybierz domenę, która jest obsługiwana przez wybraną usługę",
"description": "Guidance provided for email forwarding services that support multiple email domains."
},
"forwarderError": {
@@ -3178,16 +3175,16 @@
"message": "Wyślij ponownie powiadomienie"
},
"viewAllLogInOptions": {
- "message": "View all log in options"
+ "message": "Zobacz wszystkie sposoby logowania"
},
"viewAllLoginOptionsV1": {
- "message": "View all log in options"
+ "message": "Zobacz wszystkie sposoby logowania"
},
"notificationSentDevice": {
"message": "Powiadomienie zostało wysłane na urządzenie."
},
"aNotificationWasSentToYourDevice": {
- "message": "A notification was sent to your device"
+ "message": "Powiadomienie zostało wysłane na twoje urządzenie"
},
"makeSureYourAccountIsUnlockedAndTheFingerprintEtc": {
"message": "Make sure your account is unlocked and the fingerprint phrase matches on the other device"
@@ -3196,7 +3193,7 @@
"message": "You will be notified once the request is approved"
},
"needAnotherOptionV1": {
- "message": "Need another option?"
+ "message": "Potrzebujesz innego sposobu?"
},
"loginInitiated": {
"message": "Logowanie rozpoczęte"
@@ -3292,16 +3289,16 @@
"message": "Otwiera w nowym oknie"
},
"rememberThisDeviceToMakeFutureLoginsSeamless": {
- "message": "Remember this device to make future logins seamless"
+ "message": "Zapamiętaj to urządzenie, aby przyszłe logowania były bezproblemowe"
},
"deviceApprovalRequired": {
"message": "Wymagane zatwierdzenie urządzenia. Wybierz opcję zatwierdzenia poniżej:"
},
"deviceApprovalRequiredV2": {
- "message": "Device approval required"
+ "message": "Wymagane zatwierdzenie urządzenia"
},
"selectAnApprovalOptionBelow": {
- "message": "Select an approval option below"
+ "message": "Wybierz opcję zatwierdzenia poniżej"
},
"rememberThisDevice": {
"message": "Zapamiętaj to urządzenie"
@@ -3377,7 +3374,7 @@
"message": "Brak adresu e-mail użytkownika"
},
"activeUserEmailNotFoundLoggingYouOut": {
- "message": "Active user email not found. Logging you out."
+ "message": "Nie znaleziono aktywnego adresu e-mail. Trwa wylogowanie."
},
"deviceTrusted": {
"message": "Zaufano urządzeniu"
@@ -3592,7 +3589,7 @@
"description": "Aria label for the totp code displayed in the inline menu for autofill"
},
"totpSecondsSpanAria": {
- "message": "Time remaining before current TOTP expires",
+ "message": "Pozostały czas do wygaśnięcia bieżącego TOTP",
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
},
"fillCredentialsFor": {
@@ -3824,7 +3821,7 @@
"message": "Uzyskiwanie dostępu"
},
"loggedInExclamation": {
- "message": "Logged in!"
+ "message": "Zalogowano!"
},
"passkeyNotCopied": {
"message": "Passkey nie zostanie skopiowany"
@@ -4318,13 +4315,13 @@
"message": "Filtry"
},
"filterVault": {
- "message": "Filter vault"
+ "message": "Filtruj sejf"
},
"filterApplied": {
- "message": "One filter applied"
+ "message": "Zastosowano jeden filtr"
},
"filterAppliedPlural": {
- "message": "$COUNT$ filters applied",
+ "message": "$COUNT$ filtrów zastosowanych",
"placeholders": {
"count": {
"content": "$1",
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Pokaż liczbę sugestii autouzupełniania logowania na ikonie rozszerzenia"
},
+ "showQuickCopyActions": {
+ "message": "Pokaż akcje szybkiego kopiowania w Sejfie"
+ },
"systemDefault": {
"message": "Domyślny systemu"
},
@@ -4692,7 +4692,7 @@
"message": "Klucz publiczny"
},
"sshFingerprint": {
- "message": "Fingerprint"
+ "message": "Odcisk palca"
},
"sshKeyAlgorithm": {
"message": "Typ klucza"
@@ -4701,13 +4701,13 @@
"message": "ED25519"
},
"sshKeyAlgorithmRSA2048": {
- "message": "RSA 2048-Bitowy"
+ "message": "RSA 2048-bitowy"
},
"sshKeyAlgorithmRSA3072": {
- "message": "RSA 3072-Bitowy"
+ "message": "RSA 3072-bitowy"
},
"sshKeyAlgorithmRSA4096": {
- "message": "RSA 4096-Bitowy"
+ "message": "RSA 4096-bitowy"
},
"retry": {
"message": "Powtórz"
@@ -4756,19 +4756,19 @@
"description": "Heading for the password generator within the inline menu"
},
"passwordRegenerated": {
- "message": "Password regenerated",
+ "message": "Hasło zostało ponownie wygenerowane",
"description": "Notification message for when a password has been regenerated"
},
"saveLoginToBitwarden": {
- "message": "Save login to Bitwarden?",
+ "message": "Zapisać dane logowania w Bitwarden?",
"description": "Confirmation message for saving a login to Bitwarden"
},
"spaceCharacterDescriptor": {
- "message": "Space",
+ "message": "Spacja",
"description": "Represents the space key in screen reader content as a readable word"
},
"tildeCharacterDescriptor": {
- "message": "Tilde",
+ "message": "Tylda",
"description": "Represents the ~ key in screen reader content as a readable word"
},
"backtickCharacterDescriptor": {
@@ -4776,23 +4776,23 @@
"description": "Represents the ` key in screen reader content as a readable word"
},
"exclamationCharacterDescriptor": {
- "message": "Exclamation mark",
+ "message": "Wykrzyknik",
"description": "Represents the ! key in screen reader content as a readable word"
},
"atSignCharacterDescriptor": {
- "message": "At sign",
+ "message": "Małpa",
"description": "Represents the @ key in screen reader content as a readable word"
},
"hashSignCharacterDescriptor": {
- "message": "Hash sign",
+ "message": "Hashtag",
"description": "Represents the # key in screen reader content as a readable word"
},
"dollarSignCharacterDescriptor": {
- "message": "Dollar sign",
+ "message": "Znak dolara",
"description": "Represents the $ key in screen reader content as a readable word"
},
"percentSignCharacterDescriptor": {
- "message": "Percent sign",
+ "message": "Znak procenta",
"description": "Represents the % key in screen reader content as a readable word"
},
"caretCharacterDescriptor": {
@@ -4804,23 +4804,23 @@
"description": "Represents the & key in screen reader content as a readable word"
},
"asteriskCharacterDescriptor": {
- "message": "Asterisk",
+ "message": "Gwiazdka",
"description": "Represents the * key in screen reader content as a readable word"
},
"parenLeftCharacterDescriptor": {
- "message": "Left parenthesis",
+ "message": "Prawy nawias okrągły",
"description": "Represents the ( key in screen reader content as a readable word"
},
"parenRightCharacterDescriptor": {
- "message": "Right parenthesis",
+ "message": "Prawy nawias okrągły",
"description": "Represents the ) key in screen reader content as a readable word"
},
"hyphenCharacterDescriptor": {
- "message": "Underscore",
+ "message": "Znak podkreślenia",
"description": "Represents the _ key in screen reader content as a readable word"
},
"underscoreCharacterDescriptor": {
- "message": "Hyphen",
+ "message": "Myślnik",
"description": "Represents the - key in screen reader content as a readable word"
},
"plusCharacterDescriptor": {
@@ -4828,27 +4828,27 @@
"description": "Represents the + key in screen reader content as a readable word"
},
"equalsCharacterDescriptor": {
- "message": "Equals",
+ "message": "Znak równości",
"description": "Represents the = key in screen reader content as a readable word"
},
"braceLeftCharacterDescriptor": {
- "message": "Left brace",
+ "message": "Lewy nawias klamrowy",
"description": "Represents the { key in screen reader content as a readable word"
},
"braceRightCharacterDescriptor": {
- "message": "Right brace",
+ "message": "Prawy nawias klamrowy",
"description": "Represents the } key in screen reader content as a readable word"
},
"bracketLeftCharacterDescriptor": {
- "message": "Left bracket",
+ "message": "Lewy nawias kwadratowy",
"description": "Represents the [ key in screen reader content as a readable word"
},
"bracketRightCharacterDescriptor": {
- "message": "Right bracket",
+ "message": "Prawy nawias kwadratowy",
"description": "Represents the ] key in screen reader content as a readable word"
},
"pipeCharacterDescriptor": {
- "message": "Pipe",
+ "message": "Pionowa kreska",
"description": "Represents the | key in screen reader content as a readable word"
},
"backSlashCharacterDescriptor": {
@@ -4856,39 +4856,39 @@
"description": "Represents the back slash key in screen reader content as a readable word"
},
"colonCharacterDescriptor": {
- "message": "Colon",
+ "message": "Dwukropek",
"description": "Represents the : key in screen reader content as a readable word"
},
"semicolonCharacterDescriptor": {
- "message": "Semicolon",
+ "message": "Średnik",
"description": "Represents the ; key in screen reader content as a readable word"
},
"doubleQuoteCharacterDescriptor": {
- "message": "Double quote",
+ "message": "Cudzysłów",
"description": "Represents the double quote key in screen reader content as a readable word"
},
"singleQuoteCharacterDescriptor": {
- "message": "Single quote",
+ "message": "Apostrof",
"description": "Represents the ' key in screen reader content as a readable word"
},
"lessThanCharacterDescriptor": {
- "message": "Less than",
+ "message": "Mniejszy niż",
"description": "Represents the < key in screen reader content as a readable word"
},
"greaterThanCharacterDescriptor": {
- "message": "Greater than",
+ "message": "Większy niż",
"description": "Represents the > key in screen reader content as a readable word"
},
"commaCharacterDescriptor": {
- "message": "Comma",
+ "message": "Przecinek",
"description": "Represents the , key in screen reader content as a readable word"
},
"periodCharacterDescriptor": {
- "message": "Period",
+ "message": "Kropka",
"description": "Represents the . key in screen reader content as a readable word"
},
"questionCharacterDescriptor": {
- "message": "Question mark",
+ "message": "Znak zapytania",
"description": "Represents the ? key in screen reader content as a readable word"
},
"forwardSlashCharacterDescriptor": {
@@ -4896,13 +4896,13 @@
"description": "Represents the / key in screen reader content as a readable word"
},
"lowercaseAriaLabel": {
- "message": "Lowercase"
+ "message": "Małe litery"
},
"uppercaseAriaLabel": {
- "message": "Uppercase"
+ "message": "Wielkie litery"
},
"generatedPassword": {
- "message": "Generated password"
+ "message": "Wygenerowane hasło"
},
"compactMode": {
"message": "Tryb kompaktowy"
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Szerokość rozszerzenia"
},
diff --git a/apps/browser/src/_locales/pt_BR/messages.json b/apps/browser/src/_locales/pt_BR/messages.json
index b346b8927e3..d7a8ae6ea4d 100644
--- a/apps/browser/src/_locales/pt_BR/messages.json
+++ b/apps/browser/src/_locales/pt_BR/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Avaliar a Extensão"
},
- "rateExtensionDesc": {
- "message": "Por favor considere ajudar-nos com uma boa avaliação!"
- },
"browserNotSupportClipboard": {
"message": "O seu navegador web não suporta cópia para a área de transferência. Em alternativa, copie manualmente."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Mostrar o número de sugestões de preenchimento automático de login no ícone da extensão"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "Padrão do sistema"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/pt_PT/messages.json b/apps/browser/src/_locales/pt_PT/messages.json
index 9b657e66b65..9bac24872e2 100644
--- a/apps/browser/src/_locales/pt_PT/messages.json
+++ b/apps/browser/src/_locales/pt_PT/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Avaliar a extensão"
},
- "rateExtensionDesc": {
- "message": "Por favor, considere ajudar-nos com uma boa avaliação!"
- },
"browserNotSupportClipboard": {
"message": "O seu navegador Web não suporta a cópia fácil da área de transferência. Em vez disso, copie manualmente."
},
@@ -3821,7 +3818,7 @@
"message": "Chave de acesso"
},
"accessing": {
- "message": "A aceder"
+ "message": "A aceder a"
},
"loggedInExclamation": {
"message": "Sessão iniciada!"
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Mostrar o número de sugestões de preenchimento automático de credenciais no ícone da extensão"
},
+ "showQuickCopyActions": {
+ "message": "Mostrar ações de cópia rápida no cofre"
+ },
"systemDefault": {
"message": "Predefinição do sistema"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Aviso importante"
+ },
+ "setupTwoStepLogin": {
+ "message": "Definir a verificação de dois passos"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "O Bitwarden enviará um código para o e-mail da sua conta para verificar as credenciais de novos dispositivos a partir de fevereiro de 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "Pode configurar a verificação de dois passos como forma alternativa de proteger a sua conta ou alterar o seu e-mail para um a que possa aceder."
+ },
+ "remindMeLater": {
+ "message": "Lembrar-me mais tarde"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Tem um acesso fiável ao seu e-mail, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "Não, não tenho"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Sim, consigo aceder de forma fiável ao meu e-mail"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Ativar a verificação de dois passos"
+ },
+ "changeAcctEmail": {
+ "message": "Alterar o e-mail da conta"
+ },
"extensionWidth": {
"message": "Largura da extensão"
},
diff --git a/apps/browser/src/_locales/ro/messages.json b/apps/browser/src/_locales/ro/messages.json
index a3e3ca308ed..cde1f233488 100644
--- a/apps/browser/src/_locales/ro/messages.json
+++ b/apps/browser/src/_locales/ro/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Evaluare extensie"
},
- "rateExtensionDesc": {
- "message": "Vă rugăm să luați în considerare să ne ajutați cu o recenzie bună!"
- },
"browserNotSupportClipboard": {
"message": "Browserul dvs. nu acceptă copierea în clipboard. Transcrieți datele manual."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/ru/messages.json b/apps/browser/src/_locales/ru/messages.json
index 145cd5d2d7f..a0279460363 100644
--- a/apps/browser/src/_locales/ru/messages.json
+++ b/apps/browser/src/_locales/ru/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Оценить расширение"
},
- "rateExtensionDesc": {
- "message": "Пожалуйста, подумайте о том, чтобы помочь нам хорошим отзывом!"
- },
"browserNotSupportClipboard": {
"message": "Ваш браузер не поддерживает копирование данных в буфер обмена. Скопируйте вручную."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Показывать количество вариантов автозаполнения логина на значке расширения"
},
+ "showQuickCopyActions": {
+ "message": "Показать быстрые действия копирования в хранилище"
+ },
"systemDefault": {
"message": "Системный"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Важное уведомление"
+ },
+ "setupTwoStepLogin": {
+ "message": "Настроить двухэтапную аутентификацию"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Начиная с февраля 2025 года Bitwarden будет отправлять код на электронную почту вашего аккаунта для подтверждения авторизации с новых устройств."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "В качестве альтернативного способа защиты учетной записи вы можете настроить двухэтапную аутентификацию или сменить электронную почту на ту, к которой вы можете получить доступ."
+ },
+ "remindMeLater": {
+ "message": "Напомнить позже"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Есть ли у вас надежный доступ к электронной почте $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "Нет, не знаю"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Да, я имею надежный доступ к своей электронной почте"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Включить двухэтапную аутентификацию"
+ },
+ "changeAcctEmail": {
+ "message": "Изменить email аккаунта"
+ },
"extensionWidth": {
"message": "Ширина расширения"
},
diff --git a/apps/browser/src/_locales/si/messages.json b/apps/browser/src/_locales/si/messages.json
index 81ece16334b..624e6f6f56e 100644
--- a/apps/browser/src/_locales/si/messages.json
+++ b/apps/browser/src/_locales/si/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "දිගුව අනුපාතය"
},
- "rateExtensionDesc": {
- "message": "කරුණාකර හොඳ සමාලෝචනයකින් අපට උදව් කිරීම ගැන සලකා බලන්න!"
- },
"browserNotSupportClipboard": {
"message": "ඔබේ වෙබ් බ්රව්සරය පහසු පසුරු පුවරුවක් පිටපත් කිරීමට සහාය නොදක්වයි. ඒ වෙනුවට එය අතින් පිටපත් කරන්න."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/sk/messages.json b/apps/browser/src/_locales/sk/messages.json
index 4bb0a99cca0..48c5007b54b 100644
--- a/apps/browser/src/_locales/sk/messages.json
+++ b/apps/browser/src/_locales/sk/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Ohodnotiť rozšírenie"
},
- "rateExtensionDesc": {
- "message": "Prosíme, zvážte napísanie pozitívnej recenzie!"
- },
"browserNotSupportClipboard": {
"message": "Váš webový prehliadač nepodporuje automatické kopírovanie do schránky. Kopírujte manuálne."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Zobraziť počet odporúčaných prihlasovacích údajov na ikone rozšírenia"
},
+ "showQuickCopyActions": {
+ "message": "Zobraziť akcie rýchleho kopírovania v trezore"
+ },
"systemDefault": {
"message": "Predvolené systémom"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Dôležité upozornenie"
+ },
+ "setupTwoStepLogin": {
+ "message": "Nastavenie dvojstupňového prihlásenia"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden vám od februára 2025 pošle na e-mail vášho účtu kód na overenie prihlásenia z nových zariadení."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "Ako alternatívny spôsob ochrany svojho účtu môžete nastaviť dvojstupňové prihlásenie alebo zmeniť e-mail na taký, ku ktorému máte prístup."
+ },
+ "remindMeLater": {
+ "message": "Pripomenúť neskôr"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Máte spoľahlivý prístup k svojmu e-mailu, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "Nie, nemám"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Áno, mám spoľahlivý prístup k svojmu e-mailu"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Zapnúť dvojstupňové prihlásenie"
+ },
+ "changeAcctEmail": {
+ "message": "Zmeniť e-mail účtu"
+ },
"extensionWidth": {
"message": "Šírka rozšírenia"
},
diff --git a/apps/browser/src/_locales/sl/messages.json b/apps/browser/src/_locales/sl/messages.json
index 597155b775e..823b2ae0f18 100644
--- a/apps/browser/src/_locales/sl/messages.json
+++ b/apps/browser/src/_locales/sl/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Ocenite to razširitev"
},
- "rateExtensionDesc": {
- "message": "Premislite, ali bi nam želeli pomagati z dobro oceno!"
- },
"browserNotSupportClipboard": {
"message": "Vaš brskalnik ne podpira enostavnega kopiranja na odložišče. Prosimo, kopirajte ročno."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/sr/messages.json b/apps/browser/src/_locales/sr/messages.json
index df83b41a625..e940c908d6f 100644
--- a/apps/browser/src/_locales/sr/messages.json
+++ b/apps/browser/src/_locales/sr/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Оцени овај додатак"
},
- "rateExtensionDesc": {
- "message": "Молимо вас да размотрите да нам помогнете уз добру оцену!"
- },
"browserNotSupportClipboard": {
"message": "Ваш прегледач не подржава једноставно копирање у клипборду. Уместо тога копирајте га ручно."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Прикажи број предлога за ауто-попуњавање пријаве на икони додатка"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "Системски подразумевано"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Бета"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Ширина додатка"
},
diff --git a/apps/browser/src/_locales/sv/messages.json b/apps/browser/src/_locales/sv/messages.json
index efdf8c10018..3cfb2feb37d 100644
--- a/apps/browser/src/_locales/sv/messages.json
+++ b/apps/browser/src/_locales/sv/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Betygsätt tillägget"
},
- "rateExtensionDesc": {
- "message": "Överväg gärna att skriva en recension om oss!"
- },
"browserNotSupportClipboard": {
"message": "Din webbläsare har inte stöd för att enkelt kopiera till urklipp. Kopiera till urklipp manuellt istället."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "Systemstandard"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/te/messages.json b/apps/browser/src/_locales/te/messages.json
index 779ff917578..8f7673803cb 100644
--- a/apps/browser/src/_locales/te/messages.json
+++ b/apps/browser/src/_locales/te/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Rate the extension"
},
- "rateExtensionDesc": {
- "message": "Please consider helping us out with a good review!"
- },
"browserNotSupportClipboard": {
"message": "Your web browser does not support easy clipboard copying. Copy it manually instead."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/th/messages.json b/apps/browser/src/_locales/th/messages.json
index b660dc785ba..2d65bb40f1a 100644
--- a/apps/browser/src/_locales/th/messages.json
+++ b/apps/browser/src/_locales/th/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Rate the Extension"
},
- "rateExtensionDesc": {
- "message": "โปรดพิจารณา ช่วยเราด้วยการตรวจสอบที่ดี!"
- },
"browserNotSupportClipboard": {
"message": "เว็บเบราว์เซอร์ของคุณไม่รองรับการคัดลอกคลิปบอร์ดอย่างง่าย คัดลอกด้วยตนเองแทน"
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/tr/messages.json b/apps/browser/src/_locales/tr/messages.json
index 8c8ffb0ffa7..4c87d5189fe 100644
--- a/apps/browser/src/_locales/tr/messages.json
+++ b/apps/browser/src/_locales/tr/messages.json
@@ -421,10 +421,10 @@
"message": "Son eşitleme:"
},
"passGen": {
- "message": "Parola üretici"
+ "message": "Parola üreteci"
},
"generator": {
- "message": "Oluşturucu",
+ "message": "Üreteç",
"description": "Short for 'credential generator'."
},
"passGenInfo": {
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Uzantıyı değerlendirin"
},
- "rateExtensionDesc": {
- "message": "İyi bir yorum yazarak bizi destekleyebilirsiniz."
- },
"browserNotSupportClipboard": {
"message": "Web tarayıcınız panoya kopyalamayı desteklemiyor. Parolayı elle kopyalayın."
},
@@ -844,7 +841,7 @@
"message": "Bitwarden can store and fill 2-step verification codes. Select the camera icon to take a screenshot of this website's authenticator QR code, or copy and paste the key into this field."
},
"learnMoreAboutAuthenticators": {
- "message": "Learn more about authenticators"
+ "message": "Kimlik doğrulayıcılar hakkında bilgi alın"
},
"copyTOTP": {
"message": "Kimlik doğrulama anahtarını kopyala (TOTP)"
@@ -1327,10 +1324,10 @@
"message": "Kimlik doğrulama uygulamanızdaki 6 haneli doğrulama kodunu girin."
},
"authenticationTimeout": {
- "message": "Authentication timeout"
+ "message": "Kimlik doğrulama zaman aşımı"
},
"authenticationSessionTimedOut": {
- "message": "The authentication session timed out. Please restart the login process."
+ "message": "Kimlik doğrulama oturumu zaman aşımına uğradı. Lütfen giriş sürecini yeniden başlatın."
},
"enterVerificationCodeEmail": {
"message": "$EMAIL$ adresine e-postayla gönderdiğimiz 6 haneli doğrulama kodunu girin.",
@@ -1435,7 +1432,7 @@
"message": "Specify the base URL of your on-premises hosted Bitwarden installation. Example: https://bitwarden.company.com"
},
"selfHostedCustomEnvHeader": {
- "message": "For advanced configuration, you can specify the base URL of each service independently."
+ "message": "İleri düzey yapılandırma için her hizmetin taban URL'sini bağımsız olarak belirleyebilirsiniz."
},
"selfHostedEnvFormInvalid": {
"message": "You must add either the base Server URL or at least one custom environment."
@@ -3181,7 +3178,7 @@
"message": "Tüm giriş seçeneklerini gör"
},
"viewAllLoginOptionsV1": {
- "message": "View all log in options"
+ "message": "Tüm giriş seçeneklerini gör"
},
"notificationSentDevice": {
"message": "Cihazınıza bir bildirim gönderildi."
@@ -4318,13 +4315,13 @@
"message": "Filtreler"
},
"filterVault": {
- "message": "Filter vault"
+ "message": "Kasayı filtrele"
},
"filterApplied": {
- "message": "One filter applied"
+ "message": "1 filtre uygulandı"
},
"filterAppliedPlural": {
- "message": "$COUNT$ filters applied",
+ "message": "$COUNT$ filtre uygulandı",
"placeholders": {
"count": {
"content": "$1",
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Otomatik öneri sayısını uzantı simgesinde göster"
},
+ "showQuickCopyActions": {
+ "message": "Kasada hızlı kopyalama komutlarını göster"
+ },
"systemDefault": {
"message": "Sistem varsayılanı"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Önemli uyarı"
+ },
+ "setupTwoStepLogin": {
+ "message": "İki adımlı girişi ayarla"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Şubat 2025 itibarıyla Bitwarden, yeni cihazlardan yeni girişleri doğrulamanız için e-posta adresinize bir kod gönderecektir."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "Hesabınızı korumanın alternatif bir yolu olarak iki adımlı girişi etkinleştirebilirsiniz. Aksi halde e-posta adresinizin doğru olduğundan emin olmalısınız."
+ },
+ "remindMeLater": {
+ "message": "Daha sonra hatırlat"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "$EMAIL$ adresinize sağlıklı bir şekilde erişebiliyor musunuz?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "Hayır, erişemiyorum"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Evet, e-postalarıma sağlıklı bir şekilde erişebiliyorum"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "İki adımlı girişi etkinleştir"
+ },
+ "changeAcctEmail": {
+ "message": "Hesap e-postasını değiştir"
+ },
"extensionWidth": {
"message": "Uzantı genişliği"
},
diff --git a/apps/browser/src/_locales/uk/messages.json b/apps/browser/src/_locales/uk/messages.json
index dc569fe0818..af8f6668111 100644
--- a/apps/browser/src/_locales/uk/messages.json
+++ b/apps/browser/src/_locales/uk/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Оцінити розширення"
},
- "rateExtensionDesc": {
- "message": "Розкажіть іншим про свої враження, залишивши хороший відгук!"
- },
"browserNotSupportClipboard": {
"message": "Ваш браузер не підтримує копіювання даних в буфер обміну. Скопіюйте вручну."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Показувати кількість пропозицій автозаповнення на піктограмі розширення"
},
+ "showQuickCopyActions": {
+ "message": "Показати дії швидкого копіювання у сховищі"
+ },
"systemDefault": {
"message": "Типово (система)"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Бета"
},
+ "importantNotice": {
+ "message": "Важлива інформація"
+ },
+ "setupTwoStepLogin": {
+ "message": "Налаштувати двоетапну перевірку"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden надсилатиме код підтвердження на електронну пошту вашого облікового запису під час входу з нових пристроїв, починаючи з лютого 2025 року."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "Ви можете налаштувати двоетапну перевірку як альтернативний спосіб захисту свого облікового запису, або змінити електронну пошту на таку, до якої ви маєте доступ."
+ },
+ "remindMeLater": {
+ "message": "Нагадати пізніше"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Ви маєте постійний доступ до своєї електронної пошти $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "Ні, не маю"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Так, я маю постійний доступ до своєї електронної пошти"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Увімкнути двоетапну перевірку"
+ },
+ "changeAcctEmail": {
+ "message": "Змінити адресу е-пошти"
+ },
"extensionWidth": {
"message": "Ширина вікна розширення"
},
diff --git a/apps/browser/src/_locales/vi/messages.json b/apps/browser/src/_locales/vi/messages.json
index 591cb013968..db877e318ef 100644
--- a/apps/browser/src/_locales/vi/messages.json
+++ b/apps/browser/src/_locales/vi/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "Đánh giá tiện ích mở rộng"
},
- "rateExtensionDesc": {
- "message": "Xin hãy nhìn nhận và đánh giá tốt cho chúng tôi!"
- },
"browserNotSupportClipboard": {
"message": "Trình duyệt web của bạn không hỗ trợ dễ dàng sao chép bộ nhớ tạm. Bạn có thể sao chép nó theo cách thủ công để thay thế."
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json
index bdc4902b27d..a738ea4bb70 100644
--- a/apps/browser/src/_locales/zh_CN/messages.json
+++ b/apps/browser/src/_locales/zh_CN/messages.json
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "为本扩展打分"
},
- "rateExtensionDesc": {
- "message": "请给我们好评!"
- },
"browserNotSupportClipboard": {
"message": "您的浏览器不支持剪贴板简单复制,请手动复制。"
},
@@ -2371,7 +2368,7 @@
"message": "限制查看"
},
"limitSendViewsHint": {
- "message": "在达到限额后,任何人无法查看此 Send。",
+ "message": "达到限额后,任何人无法查看此 Send。",
"description": "Displayed under the limit views field on Send"
},
"limitSendViewsCount": {
@@ -3557,7 +3554,7 @@
"message": "切换侧边导航"
},
"skipToContent": {
- "message": "跳转到正文"
+ "message": "跳转到内容"
},
"bitwardenOverlayButton": {
"message": "Bitwarden 自动填充菜单按钮",
@@ -4501,7 +4498,7 @@
"message": "对于如密码之类的敏感数据,请使用隐藏型字段"
},
"checkBoxHelpText": {
- "message": "如果您想自动勾选表单复选框(例如记住电子邮件地址),请使用复选框"
+ "message": "如果您想自动勾选表单复选框(例如记住电子邮件地址),请使用复选框型"
},
"linkedHelpText": {
"message": "当您处理特定网站的自动填充问题时,请使用链接型字段。"
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "在扩展图标上显示自动填充建议的登录的数量"
},
+ "showQuickCopyActions": {
+ "message": "在密码库上显示快速复制操作"
+ },
"systemDefault": {
"message": "跟随系统"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta 版"
},
+ "importantNotice": {
+ "message": "重要通知"
+ },
+ "setupTwoStepLogin": {
+ "message": "设置两步登录"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "从 2025 年 02 月开始,Bitwarden 将向您的账户电子邮件地址发送一个代码,以验证从新设备上的登录。"
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "您可以设置两步登录作为保护账户的替代方法,或将您的电子邮件地址更改为您可以访问的电子邮件地址。"
+ },
+ "remindMeLater": {
+ "message": "稍后提醒我"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "您可以可靠地访问您的电子邮件地址 $EMAIL$ 吗?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "不,我不能"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "是的,我可以可靠地访问我的电子邮件地址"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "开启两步登录"
+ },
+ "changeAcctEmail": {
+ "message": "更改账户电子邮件"
+ },
"extensionWidth": {
"message": "扩展宽度"
},
diff --git a/apps/browser/src/_locales/zh_TW/messages.json b/apps/browser/src/_locales/zh_TW/messages.json
index cd0c1888034..ae903678521 100644
--- a/apps/browser/src/_locales/zh_TW/messages.json
+++ b/apps/browser/src/_locales/zh_TW/messages.json
@@ -248,7 +248,7 @@
"message": "請求密碼提示"
},
"enterYourAccountEmailAddressAndYourPasswordHintWillBeSentToYou": {
- "message": "輸入您帳戶的電子郵件,您的密碼提示會傳送給您"
+ "message": "輸入您帳號的電子郵件,您的密碼提示會傳送給您"
},
"passwordHint": {
"message": "密碼提示"
@@ -648,9 +648,6 @@
"rateExtension": {
"message": "為本套件評分"
},
- "rateExtensionDesc": {
- "message": "請給予我們好評!"
- },
"browserNotSupportClipboard": {
"message": "您的瀏覽器不支援剪貼簿簡單複製,請手動複製。"
},
@@ -4679,6 +4676,9 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "showQuickCopyActions": {
+ "message": "Show quick copy actions on Vault"
+ },
"systemDefault": {
"message": "System default"
},
@@ -4910,6 +4910,42 @@
"beta": {
"message": "Beta"
},
+ "importantNotice": {
+ "message": "Important notice"
+ },
+ "setupTwoStepLogin": {
+ "message": "Set up two-step login"
+ },
+ "newDeviceVerificationNoticeContentPage1": {
+ "message": "Bitwarden will send a code to your account email to verify logins from new devices starting in February 2025."
+ },
+ "newDeviceVerificationNoticeContentPage2": {
+ "message": "You can set up two-step login as an alternative way to protect your account or change your email to one you can access."
+ },
+ "remindMeLater": {
+ "message": "Remind me later"
+ },
+ "newDeviceVerificationNoticePageOneFormContent": {
+ "message": "Do you have reliable access to your email, $EMAIL$?",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "your_name@email.com"
+ }
+ }
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessNo": {
+ "message": "No, I do not"
+ },
+ "newDeviceVerificationNoticePageOneEmailAccessYes": {
+ "message": "Yes, I can reliably access my email"
+ },
+ "turnOnTwoStepLogin": {
+ "message": "Turn on two-step login"
+ },
+ "changeAcctEmail": {
+ "message": "Change account email"
+ },
"extensionWidth": {
"message": "Extension width"
},
diff --git a/apps/browser/src/auth/popup/lock.component.html b/apps/browser/src/auth/popup/lock.component.html
deleted file mode 100644
index fb1b09de49c..00000000000
--- a/apps/browser/src/auth/popup/lock.component.html
+++ /dev/null
@@ -1,100 +0,0 @@
-
diff --git a/apps/browser/src/auth/popup/lock.component.ts b/apps/browser/src/auth/popup/lock.component.ts
deleted file mode 100644
index 66de3fb89d2..00000000000
--- a/apps/browser/src/auth/popup/lock.component.ts
+++ /dev/null
@@ -1,185 +0,0 @@
-// FIXME: Update this file to be type safe and remove this and next line
-// @ts-strict-ignore
-import { Component, NgZone, OnInit } from "@angular/core";
-import { Router } from "@angular/router";
-import { firstValueFrom } from "rxjs";
-
-import { LockComponent as BaseLockComponent } from "@bitwarden/angular/auth/components/lock.component";
-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";
-import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction";
-import { InternalPolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction";
-import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
-import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service";
-import { DeviceTrustServiceAbstraction } from "@bitwarden/common/auth/abstractions/device-trust.service.abstraction";
-import { InternalMasterPasswordServiceAbstraction } from "@bitwarden/common/auth/abstractions/master-password.service.abstraction";
-import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction";
-import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status";
-import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
-import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
-import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
-import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service";
-import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
-import { StateService } from "@bitwarden/common/platform/abstractions/state.service";
-import { PasswordStrengthServiceAbstraction } from "@bitwarden/common/tools/password-strength";
-import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction";
-import { DialogService, ToastService } from "@bitwarden/components";
-import {
- KdfConfigService,
- KeyService,
- BiometricsService,
- BiometricStateService,
-} from "@bitwarden/key-management";
-
-import { BiometricErrors, BiometricErrorTypes } from "../../models/biometricErrors";
-import { BrowserRouterService } from "../../platform/popup/services/browser-router.service";
-import { fido2PopoutSessionData$ } from "../../vault/popup/utils/fido2-popout-session-data";
-
-@Component({
- selector: "app-lock",
- templateUrl: "lock.component.html",
-})
-export class LockComponent extends BaseLockComponent implements OnInit {
- private isInitialLockScreen: boolean;
-
- biometricError: string;
- pendingBiometric = false;
- fido2PopoutSessionData$ = fido2PopoutSessionData$();
-
- constructor(
- masterPasswordService: InternalMasterPasswordServiceAbstraction,
- router: Router,
- i18nService: I18nService,
- platformUtilsService: PlatformUtilsService,
- messagingService: MessagingService,
- keyService: KeyService,
- vaultTimeoutService: VaultTimeoutService,
- vaultTimeoutSettingsService: VaultTimeoutSettingsService,
- environmentService: EnvironmentService,
- stateService: StateService,
- apiService: ApiService,
- logService: LogService,
- ngZone: NgZone,
- policyApiService: PolicyApiServiceAbstraction,
- policyService: InternalPolicyService,
- passwordStrengthService: PasswordStrengthServiceAbstraction,
- authService: AuthService,
- dialogService: DialogService,
- deviceTrustService: DeviceTrustServiceAbstraction,
- userVerificationService: UserVerificationService,
- pinService: PinServiceAbstraction,
- private routerService: BrowserRouterService,
- biometricStateService: BiometricStateService,
- biometricsService: BiometricsService,
- accountService: AccountService,
- kdfConfigService: KdfConfigService,
- syncService: SyncService,
- toastService: ToastService,
- ) {
- super(
- masterPasswordService,
- router,
- i18nService,
- platformUtilsService,
- messagingService,
- keyService,
- vaultTimeoutService,
- vaultTimeoutSettingsService,
- environmentService,
- stateService,
- apiService,
- logService,
- ngZone,
- policyApiService,
- policyService,
- passwordStrengthService,
- dialogService,
- deviceTrustService,
- userVerificationService,
- pinService,
- biometricStateService,
- biometricsService,
- accountService,
- authService,
- kdfConfigService,
- syncService,
- toastService,
- );
- this.successRoute = "/tabs/current";
- this.isInitialLockScreen = (window as any).previousPopupUrl == null;
-
- this.onSuccessfulSubmit = async () => {
- const previousUrl = this.routerService.getPreviousUrl();
- if (previousUrl) {
- // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling.
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
- this.router.navigateByUrl(previousUrl);
- } else {
- // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling.
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
- this.router.navigate([this.successRoute]);
- }
- };
- }
-
- async ngOnInit() {
- await super.ngOnInit();
- const autoBiometricsPrompt = await firstValueFrom(
- this.biometricStateService.promptAutomatically$,
- );
-
- window.setTimeout(async () => {
- document.getElementById(this.pinEnabled ? "pin" : "masterPassword")?.focus();
- if (
- this.biometricLock &&
- autoBiometricsPrompt &&
- this.isInitialLockScreen &&
- (await this.authService.getAuthStatus()) === AuthenticationStatus.Locked
- ) {
- await this.unlockBiometric(true);
- }
- }, 100);
- }
-
- override async unlockBiometric(automaticPrompt: boolean = false): Promise {
- if (!this.biometricLock) {
- return;
- }
-
- this.biometricError = null;
-
- let success;
- try {
- const available = await super.isBiometricUnlockAvailable();
- if (!available) {
- if (!automaticPrompt) {
- await this.dialogService.openSimpleDialog({
- type: "warning",
- title: { key: "biometricsNotAvailableTitle" },
- content: { key: "biometricsNotAvailableDesc" },
- acceptButtonText: { key: "ok" },
- cancelButtonText: null,
- });
- }
- } else {
- this.pendingBiometric = true;
- success = await super.unlockBiometric();
- }
- } catch (e) {
- 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;
- }
-
- return success;
- }
-}
diff --git a/apps/browser/src/autofill/fido2/background/fido2.background.spec.ts b/apps/browser/src/autofill/fido2/background/fido2.background.spec.ts
index 99ed4619954..144af0c0a35 100644
--- a/apps/browser/src/autofill/fido2/background/fido2.background.spec.ts
+++ b/apps/browser/src/autofill/fido2/background/fido2.background.spec.ts
@@ -25,6 +25,7 @@ import { BrowserScriptInjectorService } from "../../../platform/services/browser
import { AbortManager } from "../../../vault/background/abort-manager";
import { Fido2ContentScript, Fido2ContentScriptId } from "../enums/fido2-content-script.enum";
import { Fido2PortName } from "../enums/fido2-port-name.enum";
+import { BrowserFido2ParentWindowReference } from "../services/browser-fido2-user-interface.service";
import { Fido2ExtensionMessage } from "./abstractions/fido2.background";
import { Fido2Background } from "./fido2.background";
@@ -56,7 +57,7 @@ describe("Fido2Background", () => {
let senderMock!: MockProxy;
let logService!: MockProxy;
let fido2ActiveRequestManager: MockProxy;
- let fido2ClientService!: MockProxy;
+ let fido2ClientService!: MockProxy>;
let vaultSettingsService!: MockProxy;
let scriptInjectorServiceMock!: MockProxy;
let configServiceMock!: MockProxy;
@@ -73,7 +74,7 @@ describe("Fido2Background", () => {
});
senderMock = mock({ id: "1", tab: tabMock });
logService = mock();
- fido2ClientService = mock();
+ fido2ClientService = mock>();
vaultSettingsService = mock();
abortManagerMock = mock();
abortController = mock();
diff --git a/apps/browser/src/autofill/fido2/background/fido2.background.ts b/apps/browser/src/autofill/fido2/background/fido2.background.ts
index f84b7d29a66..e20a0584d20 100644
--- a/apps/browser/src/autofill/fido2/background/fido2.background.ts
+++ b/apps/browser/src/autofill/fido2/background/fido2.background.ts
@@ -23,10 +23,11 @@ import { ScriptInjectorService } from "../../../platform/services/abstractions/s
import { AbortManager } from "../../../vault/background/abort-manager";
import { Fido2ContentScript, Fido2ContentScriptId } from "../enums/fido2-content-script.enum";
import { Fido2PortName } from "../enums/fido2-port-name.enum";
+import { BrowserFido2ParentWindowReference } from "../services/browser-fido2-user-interface.service";
import {
- Fido2Background as Fido2BackgroundInterface,
Fido2BackgroundExtensionMessageHandlers,
+ Fido2Background as Fido2BackgroundInterface,
Fido2ExtensionMessage,
SharedFido2ScriptInjectionDetails,
SharedFido2ScriptRegistrationOptions,
@@ -56,7 +57,7 @@ export class Fido2Background implements Fido2BackgroundInterface {
constructor(
private logService: LogService,
private fido2ActiveRequestManager: Fido2ActiveRequestManager,
- private fido2ClientService: Fido2ClientService,
+ private fido2ClientService: Fido2ClientService,
private vaultSettingsService: VaultSettingsService,
private scriptInjectorService: ScriptInjectorService,
private configService: ConfigService,
diff --git a/apps/browser/src/autofill/fido2/services/browser-fido2-user-interface.service.ts b/apps/browser/src/autofill/fido2/services/browser-fido2-user-interface.service.ts
index 872bb1bb52a..04b09a7df32 100644
--- a/apps/browser/src/autofill/fido2/services/browser-fido2-user-interface.service.ts
+++ b/apps/browser/src/autofill/fido2/services/browser-fido2-user-interface.service.ts
@@ -111,11 +111,15 @@ export type BrowserFido2Message = { sessionId: string } & (
}
);
+export type BrowserFido2ParentWindowReference = chrome.tabs.Tab;
+
/**
* Browser implementation of the {@link Fido2UserInterfaceService}.
* The user interface is implemented as a popout and the service uses the browser's messaging API to communicate with it.
*/
-export class BrowserFido2UserInterfaceService implements Fido2UserInterfaceServiceAbstraction {
+export class BrowserFido2UserInterfaceService
+ implements Fido2UserInterfaceServiceAbstraction
+{
constructor(private authService: AuthService) {}
async newSession(
diff --git a/apps/browser/src/autofill/overlay/inline-menu/pages/list/__snapshots__/autofill-inline-menu-list.spec.ts.snap b/apps/browser/src/autofill/overlay/inline-menu/pages/list/__snapshots__/autofill-inline-menu-list.spec.ts.snap
index 785cadb5510..acd06fb8c65 100644
--- a/apps/browser/src/autofill/overlay/inline-menu/pages/list/__snapshots__/autofill-inline-menu-list.spec.ts.snap
+++ b/apps/browser/src/autofill/overlay/inline-menu/pages/list/__snapshots__/autofill-inline-menu-list.spec.ts.snap
@@ -681,6 +681,7 @@ exports[`AutofillInlineMenuList initAutofillInlineMenuList the list of ciphers f
class="cipher-container"
>
-
-
-
- NaN
-
-
-
-
+
-
- 123 456
+ website login 5
-
+
+ username5
+
+
`;
+exports[`AutofillInlineMenuList initAutofillInlineMenuList the list of ciphers for an authenticated user renders correctly when there are multiple TOTP elements with username displayed 1`] = `
+
+
+
+
+
+
+
+
+
+ NaN
+
+
+
+
+
+
+ user1
+
+
+ 123 456
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NaN
+
+
+
+
+
+
+ user2
+
+
+ 654 321
+
+
+
+
+
+
+
+
+
+
+`;
+
exports[`AutofillInlineMenuList initAutofillInlineMenuList the locked inline menu for an unauthenticated user creates the views for the locked inline menu 1`] = `
{
expect(autofillInlineMenuList["inlineMenuListContainer"]).toMatchSnapshot();
});
- it("creates the view for a totp field", () => {
+ it("creates the view for a totp field", async () => {
postWindowMessage(
createInitAutofillInlineMenuListMessageMock({
inlineMenuFillType: CipherType.Login,
ciphers: [
- createAutofillOverlayCipherDataMock(5, {
+ createAutofillOverlayCipherDataMock(1, {
type: CipherType.Login,
login: {
totp: "123456",
@@ -156,6 +156,8 @@ describe("AutofillInlineMenuList", () => {
}),
);
+ await flushPromises();
+
const cipherSubtitleElement = autofillInlineMenuList[
"inlineMenuListContainer"
].querySelector('[data-testid="totp-code"]');
@@ -165,6 +167,47 @@ describe("AutofillInlineMenuList", () => {
expect(cipherSubtitleElement.textContent).toBe("123 456");
});
+ it("renders correctly when there are multiple TOTP elements with username displayed", async () => {
+ const totpCipher1 = createAutofillOverlayCipherDataMock(1, {
+ type: CipherType.Login,
+ login: {
+ totp: "123456",
+ totpField: true,
+ username: "user1",
+ },
+ });
+
+ const totpCipher2 = createAutofillOverlayCipherDataMock(2, {
+ type: CipherType.Login,
+ login: {
+ totp: "654321",
+ totpField: true,
+ username: "user2",
+ },
+ });
+
+ postWindowMessage(
+ createInitAutofillInlineMenuListMessageMock({
+ inlineMenuFillType: CipherType.Login,
+ ciphers: [totpCipher1, totpCipher2],
+ }),
+ );
+
+ await flushPromises();
+ const checkSubtitleElement = (username: string) => {
+ const subtitleElement = autofillInlineMenuList["inlineMenuListContainer"].querySelector(
+ `span.cipher-subtitle[title="${username}"]`,
+ );
+ expect(subtitleElement).not.toBeNull();
+ expect(subtitleElement.textContent).toBe(username);
+ };
+
+ checkSubtitleElement("user1");
+ checkSubtitleElement("user2");
+
+ expect(autofillInlineMenuList["inlineMenuListContainer"]).toMatchSnapshot();
+ });
+
it("creates the views for a list of card ciphers", () => {
postWindowMessage(
createInitAutofillInlineMenuListMessageMock({
diff --git a/apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts b/apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts
index 6cf390d0a29..acb01594cc6 100644
--- a/apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts
+++ b/apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts
@@ -5,7 +5,7 @@ import "lit/polyfill-support.js";
import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status";
import { EVENTS, UPDATE_PASSKEYS_HEADINGS_ON_SCROLL } from "@bitwarden/common/autofill/constants";
-import { CipherType } from "@bitwarden/common/vault/enums";
+import { CipherRepromptType, CipherType } from "@bitwarden/common/vault/enums";
import { InlineMenuCipherData } from "../../../../background/abstractions/overlay.background";
import { InlineMenuFillTypes } from "../../../../enums/autofill-overlay.enum";
@@ -412,6 +412,29 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
);
}
+ /**
+ * Filters the ciphers to include only TOTP-related ones if the field is a TOTP field.
+ * If the field is a TOTP field but no TOTP is present, it returns an empty array.
+ *
+ * @param ciphers - The list of ciphers to filter.
+ * @returns The filtered list of ciphers or an empty list if no valid TOTP ciphers are present.
+ */
+ private getFilteredCiphersForTotpField(ciphers: InlineMenuCipherData[]): InlineMenuCipherData[] {
+ if (!ciphers?.length) {
+ return [];
+ }
+
+ const isTotpField =
+ this.inlineMenuFillType === CipherType.Login &&
+ ciphers.some((cipher) => cipher.login?.totpField);
+
+ if (isTotpField) {
+ return ciphers.filter((cipher) => cipher.login?.totp);
+ }
+
+ return ciphers;
+ }
+
/**
* Updates the list items with the passed ciphers.
* If no ciphers are passed, the no results inline menu is built.
@@ -427,12 +450,12 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
return;
}
- this.ciphers = ciphers;
+ this.ciphers = this.getFilteredCiphersForTotpField(ciphers);
this.currentCipherIndex = 0;
this.showInlineMenuAccountCreation = showInlineMenuAccountCreation;
this.resetInlineMenuContainer();
- if (!ciphers?.length) {
+ if (!this.ciphers?.length) {
this.buildNoResultsInlineMenuList();
return;
}
@@ -1163,7 +1186,7 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
}
if (cipher.login?.totpField && cipher.login?.totp) {
- return this.buildTotpElement(cipher.login?.totp);
+ return this.buildTotpElement(cipher.login?.totp, cipher.login?.username, cipher.reprompt);
}
const subTitleText = this.getSubTitleText(cipher);
const cipherSubtitleElement = this.buildCipherSubtitleElement(subTitleText);
@@ -1174,13 +1197,28 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
return cipherDetailsElement;
}
+ /**
+ * Checks if there is more than one TOTP element being displayed.
+ *
+ * @returns {boolean} - Returns true if more than one TOTP element is displayed, otherwise false.
+ */
+ private multipleTotpElements(): boolean {
+ return (
+ this.ciphers.filter((cipher) => cipher.login?.totpField && cipher.login?.totp).length > 1
+ );
+ }
+
/**
* Builds a TOTP element for a given TOTP code.
*
* @param totp - The TOTP code to display.
*/
- private buildTotpElement(totpCode: string): HTMLDivElement | null {
+ private buildTotpElement(
+ totpCode: string,
+ username: string,
+ reprompt: CipherRepromptType,
+ ): HTMLDivElement | null {
if (!totpCode) {
return null;
}
@@ -1196,12 +1234,18 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
containerElement.appendChild(totpHeading);
- const subtitleElement = document.createElement("span");
- subtitleElement.classList.add("cipher-subtitle");
- subtitleElement.textContent = formattedTotpCode;
- subtitleElement.setAttribute("aria-label", this.getTranslation("totpCodeAria"));
- subtitleElement.setAttribute("data-testid", "totp-code");
- containerElement.appendChild(subtitleElement);
+ if (this.multipleTotpElements() && username) {
+ const usernameSubtitle = this.buildCipherSubtitleElement(username);
+ containerElement.appendChild(usernameSubtitle);
+ }
+
+ const totpCodeSpan = document.createElement("span");
+ totpCodeSpan.classList.toggle("cipher-subtitle");
+ totpCodeSpan.classList.toggle("masked-totp", !!reprompt);
+ totpCodeSpan.textContent = reprompt ? "●●●●●●" : formattedTotpCode;
+ totpCodeSpan.setAttribute("aria-label", this.getTranslation("totpCodeAria"));
+ totpCodeSpan.setAttribute("data-testid", "totp-code");
+ containerElement.appendChild(totpCodeSpan);
return containerElement;
}
diff --git a/apps/browser/src/autofill/overlay/inline-menu/pages/list/list.scss b/apps/browser/src/autofill/overlay/inline-menu/pages/list/list.scss
index 0d1bf3358cd..d0875cfe427 100644
--- a/apps/browser/src/autofill/overlay/inline-menu/pages/list/list.scss
+++ b/apps/browser/src/autofill/overlay/inline-menu/pages/list/list.scss
@@ -404,6 +404,11 @@ body * {
color: themed("mutedTextColor");
}
+ &.masked-totp {
+ font-size: 0.875rem;
+ letter-spacing: 0.2rem;
+ }
+
&--passkey {
display: flex;
align-content: center;
diff --git a/apps/browser/src/autofill/popup/settings/autofill.component.html b/apps/browser/src/autofill/popup/settings/autofill.component.html
index 18c6f515337..e8882cf7bbb 100644
--- a/apps/browser/src/autofill/popup/settings/autofill.component.html
+++ b/apps/browser/src/autofill/popup/settings/autofill.component.html
@@ -120,7 +120,7 @@
/>
{{ "showCardsInVaultView" | i18n }}
-
+
+
+
+
+ {{ "clickToAutofillOnVault" | i18n }}
+
+
diff --git a/apps/browser/src/autofill/popup/settings/autofill.component.ts b/apps/browser/src/autofill/popup/settings/autofill.component.ts
index 828b45e7b37..da997f550b3 100644
--- a/apps/browser/src/autofill/popup/settings/autofill.component.ts
+++ b/apps/browser/src/autofill/popup/settings/autofill.component.ts
@@ -110,6 +110,7 @@ export class AutofillComponent implements OnInit {
uriMatchOptions: { name: string; value: UriMatchStrategySetting }[];
showCardsCurrentTab: boolean = true;
showIdentitiesCurrentTab: boolean = true;
+ clickItemsVaultView: boolean = false;
autofillKeyboardHelperText: string;
accountSwitcherEnabled: boolean = false;
@@ -207,6 +208,10 @@ export class AutofillComponent implements OnInit {
this.showIdentitiesCurrentTab = await firstValueFrom(
this.vaultSettingsService.showIdentitiesCurrentTab$,
);
+
+ this.clickItemsVaultView = await firstValueFrom(
+ this.vaultSettingsService.clickItemsToAutofillVaultView$,
+ );
}
async updateInlineMenuVisibility() {
@@ -413,4 +418,8 @@ export class AutofillComponent implements OnInit {
async updateShowInlineMenuIdentities() {
await this.autofillSettingsService.setShowInlineMenuIdentities(this.showInlineMenuIdentities);
}
+
+ async updateClickItemsVaultView() {
+ await this.vaultSettingsService.setClickItemsToAutofillVaultView(this.clickItemsVaultView);
+ }
}
diff --git a/apps/browser/src/autofill/popup/settings/notifications.component.html b/apps/browser/src/autofill/popup/settings/notifications.component.html
index 86fe4923df8..c6446012d0c 100644
--- a/apps/browser/src/autofill/popup/settings/notifications.component.html
+++ b/apps/browser/src/autofill/popup/settings/notifications.component.html
@@ -50,7 +50,7 @@
{{ "excludedDomains" | i18n }}
-
+
diff --git a/apps/browser/src/autofill/services/inline-menu-field-qualification.service.spec.ts b/apps/browser/src/autofill/services/inline-menu-field-qualification.service.spec.ts
index 6e267e25c3f..dc59e05a18b 100644
--- a/apps/browser/src/autofill/services/inline-menu-field-qualification.service.spec.ts
+++ b/apps/browser/src/autofill/services/inline-menu-field-qualification.service.spec.ts
@@ -21,8 +21,9 @@ describe("InlineMenuFieldQualificationService", () => {
});
describe("isFieldForLoginForm", () => {
- it("does not disqualify totp fields with flag set to true", () => {
+ it("does not disqualify totp fields for premium users with flag set to true", () => {
inlineMenuFieldQualificationService["inlineMenuTotpFeatureFlag"] = true;
+ inlineMenuFieldQualificationService["premiumEnabled"] = true;
const field = mock({
type: "text",
autoCompleteType: "one-time-code",
@@ -36,8 +37,25 @@ describe("InlineMenuFieldQualificationService", () => {
);
});
- it("disqualify totp fields with flag set to false", () => {
+ it("disqualifies totp fields for premium users with flag set to false", () => {
inlineMenuFieldQualificationService["inlineMenuTotpFeatureFlag"] = false;
+ inlineMenuFieldQualificationService["inlineMenuTotpFeatureFlag"] = true;
+ const field = mock({
+ type: "text",
+ autoCompleteType: "one-time-code",
+ htmlName: "totp",
+ htmlID: "totp",
+ placeholder: "totp",
+ });
+
+ expect(inlineMenuFieldQualificationService.isFieldForLoginForm(field, pageDetails)).toBe(
+ false,
+ );
+ });
+
+ it("disqualifies totp fields for non-premium users with flag set to true", () => {
+ inlineMenuFieldQualificationService["inlineMenuTotpFeatureFlag"] = true;
+ inlineMenuFieldQualificationService["premiumEnabled"] = false;
const field = mock({
type: "text",
autoCompleteType: "one-time-code",
diff --git a/apps/browser/src/autofill/services/inline-menu-field-qualification.service.ts b/apps/browser/src/autofill/services/inline-menu-field-qualification.service.ts
index 32e55988a7a..43efd338c6e 100644
--- a/apps/browser/src/autofill/services/inline-menu-field-qualification.service.ts
+++ b/apps/browser/src/autofill/services/inline-menu-field-qualification.service.ts
@@ -151,14 +151,17 @@ export class InlineMenuFieldQualificationService
private totpFieldAutocompleteValue = "one-time-code";
private inlineMenuFieldQualificationFlagSet = false;
private inlineMenuTotpFeatureFlag = false;
+ private premiumEnabled = false;
constructor() {
void Promise.all([
sendExtensionMessage("getInlineMenuFieldQualificationFeatureFlag"),
sendExtensionMessage("getInlineMenuTotpFeatureFlag"),
- ]).then(([fieldQualificationFlag, totpFeatureFlag]) => {
+ sendExtensionMessage("getUserPremiumStatus"),
+ ]).then(([fieldQualificationFlag, totpFeatureFlag, premiumStatus]) => {
this.inlineMenuFieldQualificationFlagSet = !!fieldQualificationFlag?.result;
this.inlineMenuTotpFeatureFlag = !!totpFeatureFlag?.result;
+ this.premiumEnabled = !!premiumStatus?.result;
});
}
@@ -174,10 +177,11 @@ export class InlineMenuFieldQualificationService
}
/**
- * Autofill does not fill password type totp input fields
+ * Totp inline menu is available only for premium users.
*/
- if (this.inlineMenuTotpFeatureFlag) {
+ if (this.inlineMenuTotpFeatureFlag && this.premiumEnabled) {
const isTotpField = this.isTotpField(field);
+ // Autofill does not fill totp inputs with a "password" `type` attribute value
const passwordType = field.type === "password";
if (isTotpField && !passwordType) {
return true;
diff --git a/apps/browser/src/autofill/spec/autofill-mocks.ts b/apps/browser/src/autofill/spec/autofill-mocks.ts
index 3a78e7f2c59..6e175906d30 100644
--- a/apps/browser/src/autofill/spec/autofill-mocks.ts
+++ b/apps/browser/src/autofill/spec/autofill-mocks.ts
@@ -241,7 +241,7 @@ export function createInitAutofillInlineMenuListMessageMock(
createAutofillOverlayCipherDataMock(4, {
icon: { imageEnabled: false, image: "", fallbackImage: "", icon: "" },
}),
- createAutofillOverlayCipherDataMock(5, { login: { totp: "123456", totpField: true } }),
+ createAutofillOverlayCipherDataMock(5),
createAutofillOverlayCipherDataMock(6),
createAutofillOverlayCipherDataMock(7),
createAutofillOverlayCipherDataMock(8),
diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts
index 019be2923b6..555e3a13fa0 100644
--- a/apps/browser/src/background/main.background.ts
+++ b/apps/browser/src/background/main.background.ts
@@ -201,11 +201,11 @@ import {
ImportServiceAbstraction,
} from "@bitwarden/importer/core";
import {
- DefaultKdfConfigService,
- KdfConfigService,
BiometricStateService,
BiometricsService,
DefaultBiometricStateService,
+ DefaultKdfConfigService,
+ KdfConfigService,
KeyService as KeyServiceAbstraction,
} from "@bitwarden/key-management";
import {
@@ -232,7 +232,10 @@ import { MainContextMenuHandler } from "../autofill/browser/main-context-menu-ha
import LegacyOverlayBackground from "../autofill/deprecated/background/overlay.background.deprecated";
import { Fido2Background as Fido2BackgroundAbstraction } from "../autofill/fido2/background/abstractions/fido2.background";
import { Fido2Background } from "../autofill/fido2/background/fido2.background";
-import { BrowserFido2UserInterfaceService } from "../autofill/fido2/services/browser-fido2-user-interface.service";
+import {
+ BrowserFido2ParentWindowReference,
+ BrowserFido2UserInterfaceService,
+} from "../autofill/fido2/services/browser-fido2-user-interface.service";
import { AutofillService as AutofillServiceAbstraction } from "../autofill/services/abstractions/autofill.service";
import AutofillService from "../autofill/services/autofill.service";
import { InlineMenuFieldQualificationService } from "../autofill/services/inline-menu-field-qualification.service";
@@ -337,10 +340,10 @@ export default class MainBackground {
policyApiService: PolicyApiServiceAbstraction;
sendApiService: SendApiServiceAbstraction;
userVerificationApiService: UserVerificationApiServiceAbstraction;
- fido2UserInterfaceService: Fido2UserInterfaceServiceAbstraction;
- fido2AuthenticatorService: Fido2AuthenticatorServiceAbstraction;
+ fido2UserInterfaceService: Fido2UserInterfaceServiceAbstraction;
+ fido2AuthenticatorService: Fido2AuthenticatorServiceAbstraction;
fido2ActiveRequestManager: Fido2ActiveRequestManagerAbstraction;
- fido2ClientService: Fido2ClientServiceAbstraction;
+ fido2ClientService: Fido2ClientServiceAbstraction;
avatarService: AvatarServiceAbstraction;
mainContextMenuHandler: MainContextMenuHandler;
cipherContextMenuHandler: CipherContextMenuHandler;
@@ -736,7 +739,6 @@ export default class MainBackground {
this.accountService,
this.kdfConfigService,
this.keyService,
- this.apiService,
);
this.passwordStrengthService = new PasswordStrengthService();
@@ -1102,6 +1104,7 @@ export default class MainBackground {
messageListener,
this.accountService,
lockService,
+ this.billingAccountProfileStateService,
);
this.nativeMessagingBackground = new NativeMessagingBackground(
this.keyService,
@@ -1310,27 +1313,10 @@ export default class MainBackground {
await this.initOverlayAndTabsBackground();
- if (flagEnabled("sdk")) {
- // Warn if the SDK for some reason can't be initialized
- let supported = false;
- let error: Error;
- try {
- supported = await firstValueFrom(this.sdkService.supported$);
- } catch (e) {
- error = e;
- }
-
- if (!supported) {
- this.sdkService
- .failedToInitialize("background", error)
- .catch((e) => this.logService.error(e));
- }
- }
-
return new Promise((resolve) => {
setTimeout(async () => {
await this.refreshBadge();
- await this.fullSync(true);
+ await this.fullSync(false);
this.taskSchedulerService.setInterval(
ScheduledTaskNames.scheduleNextSyncInterval,
5 * 60 * 1000, // check every 5 minutes
diff --git a/apps/browser/src/background/runtime.background.ts b/apps/browser/src/background/runtime.background.ts
index f91b6983a08..56ad7909e61 100644
--- a/apps/browser/src/background/runtime.background.ts
+++ b/apps/browser/src/background/runtime.background.ts
@@ -7,6 +7,7 @@ import { NotificationsService } from "@bitwarden/common/abstractions/notificatio
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
import { AutofillOverlayVisibility, ExtensionCommand } from "@bitwarden/common/autofill/constants";
import { AutofillSettingsServiceAbstraction } from "@bitwarden/common/autofill/services/autofill-settings.service";
+import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions/account/billing-account-profile-state.service";
import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum";
import { ProcessReloadServiceAbstraction } from "@bitwarden/common/key-management/abstractions/process-reload.service";
import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service";
@@ -50,6 +51,7 @@ export default class RuntimeBackground {
private messageListener: MessageListener,
private accountService: AccountService,
private readonly lockService: LockService,
+ private billingAccountProfileStateService: BillingAccountProfileStateService,
) {
// onInstalled listener must be wired up before anything else, so we do it in the ctor
chrome.runtime.onInstalled.addListener((details: any) => {
@@ -74,6 +76,7 @@ export default class RuntimeBackground {
"getUseTreeWalkerApiForPageDetailsCollectionFeatureFlag",
"getInlineMenuFieldQualificationFeatureFlag",
"getInlineMenuTotpFeatureFlag",
+ "getUserPremiumStatus",
];
if (messagesWithResponse.includes(msg.command)) {
@@ -198,6 +201,12 @@ export default class RuntimeBackground {
case "getInlineMenuFieldQualificationFeatureFlag": {
return await this.configService.getFeatureFlag(FeatureFlag.InlineMenuFieldQualification);
}
+ case "getUserPremiumStatus": {
+ const result = await firstValueFrom(
+ this.billingAccountProfileStateService.hasPremiumFromAnySource$,
+ );
+ return result;
+ }
case "getInlineMenuTotpFeatureFlag": {
return await this.configService.getFeatureFlag(FeatureFlag.InlineMenuTotp);
}
diff --git a/apps/browser/src/manifest.json b/apps/browser/src/manifest.json
index ab14819e807..1e1cf23fba7 100644
--- a/apps/browser/src/manifest.json
+++ b/apps/browser/src/manifest.json
@@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "__MSG_extName__",
"short_name": "__MSG_appName__",
- "version": "2024.12.2",
+ "version": "2024.12.4",
"description": "__MSG_extDesc__",
"default_locale": "en",
"author": "Bitwarden Inc.",
diff --git a/apps/browser/src/manifest.v3.json b/apps/browser/src/manifest.v3.json
index 0a6687b4fb5..77f4b650f9f 100644
--- a/apps/browser/src/manifest.v3.json
+++ b/apps/browser/src/manifest.v3.json
@@ -3,7 +3,7 @@
"minimum_chrome_version": "102.0",
"name": "__MSG_extName__",
"short_name": "__MSG_appName__",
- "version": "2024.12.2",
+ "version": "2024.12.4",
"description": "__MSG_extDesc__",
"default_locale": "en",
"author": "Bitwarden Inc.",
diff --git a/apps/browser/src/models/browserSendComponentState.ts b/apps/browser/src/models/browserSendComponentState.ts
deleted file mode 100644
index 204595df272..00000000000
--- a/apps/browser/src/models/browserSendComponentState.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-// FIXME: Update this file to be type safe and remove this and next line
-// @ts-strict-ignore
-import { SendView } from "@bitwarden/common/tools/send/models/view/send.view";
-import { DeepJsonify } from "@bitwarden/common/types/deep-jsonify";
-
-import { BrowserComponentState } from "./browserComponentState";
-
-export class BrowserSendComponentState extends BrowserComponentState {
- sends: SendView[];
-
- static fromJSON(json: DeepJsonify) {
- if (json == null) {
- return null;
- }
-
- return Object.assign(new BrowserSendComponentState(), json, {
- sends: json.sends?.map((s) => SendView.fromJSON(s)),
- });
- }
-}
diff --git a/apps/browser/src/platform/browser/browser-api.ts b/apps/browser/src/platform/browser/browser-api.ts
index 05ea3c84e9e..dc71d50d4b1 100644
--- a/apps/browser/src/platform/browser/browser-api.ts
+++ b/apps/browser/src/platform/browser/browser-api.ts
@@ -165,6 +165,21 @@ export class BrowserApi {
});
}
+ /**
+ * Fetch the currently open browser tab
+ */
+ static async getCurrentTab(): Promise | null {
+ if (BrowserApi.isManifestVersion(3)) {
+ return await chrome.tabs.getCurrent();
+ }
+
+ return new Promise((resolve) =>
+ chrome.tabs.getCurrent((tab) => {
+ resolve(tab);
+ }),
+ );
+ }
+
static async tabsQuery(options: chrome.tabs.QueryInfo): Promise {
return new Promise((resolve) => {
chrome.tabs.query(options, (tabs) => {
diff --git a/apps/browser/src/platform/popup/browser-popup-utils.ts b/apps/browser/src/platform/popup/browser-popup-utils.ts
index 35fd2361014..33a1ff4016d 100644
--- a/apps/browser/src/platform/popup/browser-popup-utils.ts
+++ b/apps/browser/src/platform/popup/browser-popup-utils.ts
@@ -3,7 +3,7 @@
import { BrowserApi } from "../browser/browser-api";
import { ScrollOptions } from "./abstractions/browser-popup-utils.abstractions";
-import { PopupWidthOptions } from "./layout/popup-width.service";
+import { PopupWidthOptions } from "./layout/popup-size.service";
class BrowserPopupUtils {
/**
@@ -24,6 +24,22 @@ class BrowserPopupUtils {
return BrowserPopupUtils.urlContainsSearchParams(win, "uilocation", "popout");
}
+ /**
+ * Check if the current popup view is open inside of the current browser tab
+ * (it is possible in Chrome to open the extension in a tab)
+ */
+ static async isInTab() {
+ const tabId = (await BrowserApi.getCurrentTab())?.id;
+
+ if (tabId === undefined || tabId === null) {
+ return false;
+ }
+
+ const result = BrowserApi.getExtensionViews({ tabId, type: "tab" });
+
+ return result.length > 0;
+ }
+
/**
* Identifies if the popup is within the single action popout.
*
diff --git a/apps/browser/src/platform/popup/layout/popup-layout.mdx b/apps/browser/src/platform/popup/layout/popup-layout.mdx
index aa11b4099a9..5723bef44b1 100644
--- a/apps/browser/src/platform/popup/layout/popup-layout.mdx
+++ b/apps/browser/src/platform/popup/layout/popup-layout.mdx
@@ -44,6 +44,9 @@ page looks nice when the extension is popped out.
- `above-scroll-area`
- When the page content overflows, this content will be "stuck" to the top of the page upon
scrolling.
+- `full-width-notice`
+ - Similar to `above-scroll-area`, this content will display before `above-scroll-area` without
+ container margin or padding.
- default
- Whatever content you want in `main`.
@@ -108,6 +111,30 @@ Common interactive elements to insert into the `end` slot are:
- "Add" button: this can be accomplished with the Button component and any custom functionality for
that particular page
+### Notice
+
+
+
+Common interactive elements to insert into the `full-width-notice` slot are:
+
+- `bit-banner`: shows a full-width notice
+
+Usage example:
+
+```html
+
+
+
+ This is an important note about these ciphers
+
+
+
+
+
+```
+
## Popup footer
Popup footer should be used when the page displays action buttons. It functions similarly to the
diff --git a/apps/browser/src/platform/popup/layout/popup-layout.stories.ts b/apps/browser/src/platform/popup/layout/popup-layout.stories.ts
index 11f2d34df50..cd467cecbd2 100644
--- a/apps/browser/src/platform/popup/layout/popup-layout.stories.ts
+++ b/apps/browser/src/platform/popup/layout/popup-layout.stories.ts
@@ -11,6 +11,7 @@ import { SendService } from "@bitwarden/common/tools/send/services/send.service.
import {
AvatarModule,
BadgeModule,
+ BannerModule,
ButtonModule,
I18nMockService,
IconButtonModule,
@@ -125,6 +126,18 @@ class MockCurrentAccountComponent {}
})
class MockSearchComponent {}
+@Component({
+ selector: "mock-banner",
+ template: `
+
+ This is an important note about these ciphers
+
+ `,
+ standalone: true,
+ imports: [BannerModule],
+})
+class MockBannerComponent {}
+
@Component({
selector: "mock-vault-page",
template: `
@@ -298,6 +311,8 @@ export default {
CommonModule,
RouterModule,
ExtensionContainerComponent,
+ MockBannerComponent,
+ MockSearchComponent,
MockVaultSubpageComponent,
MockVaultPageComponent,
MockSendPageComponent,
@@ -517,6 +532,22 @@ export const TransparentHeader: Story = {
}),
};
+export const Notice: Story = {
+ render: (args) => ({
+ props: args,
+ template: /* HTML */ `
+
+
+
+
+
+
+
+
+ `,
+ }),
+};
+
export const WidthOptions: Story = {
render: (args) => ({
props: args,
diff --git a/apps/browser/src/platform/popup/layout/popup-page.component.html b/apps/browser/src/platform/popup/layout/popup-page.component.html
index 8eefc14ab55..ba9a108a504 100644
--- a/apps/browser/src/platform/popup/layout/popup-page.component.html
+++ b/apps/browser/src/platform/popup/layout/popup-page.component.html
@@ -1,5 +1,6 @@
+
(POPUP_STYLE_DISK
});
/**
- * Updates the extension popup width based on a user setting
+ * Handles sizing the popup based on available width/height, which can be affected by
+ * user default zoom level.
+ * Updates the extension popup width based on a user setting.
**/
@Injectable({ providedIn: "root" })
-export class PopupWidthService {
+export class PopupSizeService {
private static readonly LocalStorageKey = "bw-popup-width";
private readonly state = inject(GlobalStateProvider).get(POPUP_WIDTH_KEY_DEF);
@@ -41,15 +45,31 @@ export class PopupWidthService {
}
/** Begin listening for state changes */
- init() {
+ async init() {
this.width$.subscribe((width: PopupWidthOption) => {
- PopupWidthService.setStyle(width);
- localStorage.setItem(PopupWidthService.LocalStorageKey, width);
+ PopupSizeService.setStyle(width);
+ localStorage.setItem(PopupSizeService.LocalStorageKey, width);
});
+
+ const isInChromeTab = await BrowserPopupUtils.isInTab();
+
+ if (!BrowserPopupUtils.inPopup(window) || isInChromeTab) {
+ window.document.body.classList.add("body-full");
+ } else if (window.innerHeight < 400) {
+ window.document.body.classList.add("body-xxs");
+ } else if (window.innerHeight < 500) {
+ window.document.body.classList.add("body-xs");
+ } else if (window.innerHeight < 600) {
+ window.document.body.classList.add("body-sm");
+ }
}
private static setStyle(width: PopupWidthOption) {
+ if (!BrowserPopupUtils.inPopup(window)) {
+ return;
+ }
const pxWidth = PopupWidthOptions[width] ?? PopupWidthOptions.default;
+
document.body.style.minWidth = `${pxWidth}px`;
}
@@ -57,7 +77,7 @@ export class PopupWidthService {
* To keep the popup size from flickering on bootstrap, we store the width in `localStorage` so we can quickly & synchronously reference it.
**/
static initBodyWidthFromLocalStorage() {
- const storedValue = localStorage.getItem(PopupWidthService.LocalStorageKey);
+ const storedValue = localStorage.getItem(PopupSizeService.LocalStorageKey);
this.setStyle(storedValue as any);
}
}
diff --git a/apps/browser/src/platform/services/sdk/browser-sdk-client-factory.ts b/apps/browser/src/platform/services/sdk/browser-sdk-client-factory.ts
index c9d5d726a6a..a2f0c78cd52 100644
--- a/apps/browser/src/platform/services/sdk/browser-sdk-client-factory.ts
+++ b/apps/browser/src/platform/services/sdk/browser-sdk-client-factory.ts
@@ -2,7 +2,6 @@
// @ts-strict-ignore
import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
import { SdkClientFactory } from "@bitwarden/common/platform/abstractions/sdk/sdk-client-factory";
-import { RecoverableSDKError } from "@bitwarden/common/platform/services/sdk/default-sdk.service";
import type { BitwardenClient } from "@bitwarden/sdk-internal";
import { BrowserApi } from "../../browser/browser-api";
@@ -72,42 +71,14 @@ export class BrowserSdkClientFactory implements SdkClientFactory {
...args: ConstructorParameters
): Promise {
const startTime = performance.now();
- try {
- await loadWithTimeout();
- } catch (error) {
- throw new Error(`Failed to load: ${error.message}`);
- }
+ await load();
const endTime = performance.now();
- const elapsed = Math.round((endTime - startTime) / 1000);
const instance = (globalThis as any).init_sdk(...args);
this.logService.info("WASM SDK loaded in", Math.round(endTime - startTime), "ms");
- // If it takes 3 seconds or more to load, we want to capture it.
- if (elapsed >= 3) {
- throw new RecoverableSDKError(instance, elapsed);
- }
-
return instance;
}
}
-
-const loadWithTimeout = async () => {
- return new Promise((resolve, reject) => {
- const timer = setTimeout(() => {
- reject(new Error("Operation timed out after 10 second"));
- }, 10000);
-
- load()
- .then(() => {
- clearTimeout(timer);
- resolve();
- })
- .catch((error) => {
- clearTimeout(timer);
- reject(error);
- });
- });
-};
diff --git a/apps/browser/src/popup/app-routing.module.ts b/apps/browser/src/popup/app-routing.module.ts
index d70ec25e59a..39922464ee4 100644
--- a/apps/browser/src/popup/app-routing.module.ts
+++ b/apps/browser/src/popup/app-routing.module.ts
@@ -17,15 +17,15 @@ import {
unauthGuardFn,
} from "@bitwarden/angular/auth/guards";
import { canAccessFeature } from "@bitwarden/angular/platform/guard/feature-flag.guard";
-import { extensionRefreshRedirect } from "@bitwarden/angular/utils/extension-refresh-redirect";
import { extensionRefreshSwap } from "@bitwarden/angular/utils/extension-refresh-swap";
+import { NewDeviceVerificationNoticeGuard } from "@bitwarden/angular/vault/guards";
import {
AnonLayoutWrapperComponent,
AnonLayoutWrapperData,
LoginComponent,
LoginSecondaryContentComponent,
LockIcon,
- LockV2Component,
+ LockComponent,
LoginViaAuthRequestComponent,
PasswordHintComponent,
RegistrationFinishComponent,
@@ -43,6 +43,11 @@ import {
TwoFactorTimeoutIcon,
} from "@bitwarden/auth/angular";
import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum";
+import {
+ NewDeviceVerificationNoticePageOneComponent,
+ NewDeviceVerificationNoticePageTwoComponent,
+ VaultIcons,
+} from "@bitwarden/vault";
import { twofactorRefactorSwap } from "../../../../libs/angular/src/utils/two-factor-component-refactor-route-swap";
import { fido2AuthGuard } from "../auth/guards/fido2-auth.guard";
@@ -54,7 +59,6 @@ import {
} from "../auth/popup/extension-anon-layout-wrapper/extension-anon-layout-wrapper.component";
import { HintComponent } from "../auth/popup/hint.component";
import { HomeComponent } from "../auth/popup/home.component";
-import { LockComponent } from "../auth/popup/lock.component";
import { LoginDecryptionOptionsComponentV1 } from "../auth/popup/login-decryption-options/login-decryption-options-v1.component";
import { LoginComponentV1 } from "../auth/popup/login-v1.component";
import { LoginViaAuthRequestComponentV1 } from "../auth/popup/login-via-auth-request-v1.component";
@@ -82,11 +86,6 @@ import BrowserPopupUtils from "../platform/popup/browser-popup-utils";
import { popupRouterCacheGuard } from "../platform/popup/view-cache/popup-router-cache.service";
import { CredentialGeneratorHistoryComponent } from "../tools/popup/generator/credential-generator-history.component";
import { CredentialGeneratorComponent } from "../tools/popup/generator/credential-generator.component";
-import { GeneratorComponent } from "../tools/popup/generator/generator.component";
-import { PasswordGeneratorHistoryComponent } from "../tools/popup/generator/password-generator-history.component";
-import { SendAddEditComponent } from "../tools/popup/send/send-add-edit.component";
-import { SendGroupingsComponent } from "../tools/popup/send/send-groupings.component";
-import { SendTypeComponent } from "../tools/popup/send/send-type.component";
import { SendAddEditComponent as SendAddEditV2Component } from "../tools/popup/send-v2/add-edit/send-add-edit.component";
import { SendCreatedComponent } from "../tools/popup/send-v2/send-created/send-created.component";
import { SendV2Component } from "../tools/popup/send-v2/send-v2.component";
@@ -99,10 +98,8 @@ import { clearVaultStateGuard } from "../vault/guards/clear-vault-state.guard";
import { AddEditComponent } from "../vault/popup/components/vault/add-edit.component";
import { AttachmentsComponent } from "../vault/popup/components/vault/attachments.component";
import { CollectionsComponent } from "../vault/popup/components/vault/collections.component";
-import { CurrentTabComponent } from "../vault/popup/components/vault/current-tab.component";
import { PasswordHistoryComponent } from "../vault/popup/components/vault/password-history.component";
import { ShareComponent } from "../vault/popup/components/vault/share.component";
-import { VaultFilterComponent } from "../vault/popup/components/vault/vault-filter.component";
import { VaultItemsComponent } from "../vault/popup/components/vault/vault-items.component";
import { VaultV2Component } from "../vault/popup/components/vault/vault-v2.component";
import { ViewComponent } from "../vault/popup/components/vault/view.component";
@@ -124,7 +121,6 @@ import { VaultSettingsComponent } from "../vault/popup/settings/vault-settings.c
import { RouteElevation } from "./app-routing.animations";
import { debounceNavigationGuard } from "./services/debounce-navigation.service";
import { TabsV2Component } from "./tabs-v2.component";
-import { TabsComponent } from "./tabs.component";
/**
* Data properties acceptable for use in extension route objects
@@ -170,13 +166,6 @@ const routes: Routes = [
canActivate: [fido2AuthGuard],
data: { elevation: 1 } satisfies RouteDataProperties,
}),
- {
- path: "lock",
- component: LockComponent,
- canActivate: [lockGuard()],
- canMatch: [extensionRefreshRedirect("/lockV2")],
- data: { elevation: 1, doNotSaveUrl: true } satisfies RouteDataProperties,
- },
...twofactorRefactorSwap(
TwoFactorComponent,
AnonLayoutWrapperComponent,
@@ -336,15 +325,16 @@ const routes: Routes = [
}),
{
path: "generator",
- component: GeneratorComponent,
+ component: CredentialGeneratorComponent,
canActivate: [authGuard],
data: { elevation: 0 } satisfies RouteDataProperties,
},
- ...extensionRefreshSwap(PasswordGeneratorHistoryComponent, CredentialGeneratorHistoryComponent, {
+ {
path: "generator-history",
+ component: CredentialGeneratorHistoryComponent,
canActivate: [authGuard],
data: { elevation: 1 } satisfies RouteDataProperties,
- }),
+ },
{
path: "import",
component: ImportBrowserV2Component,
@@ -422,21 +412,17 @@ const routes: Routes = [
data: { elevation: 1 } satisfies RouteDataProperties,
}),
{
- path: "send-type",
- component: SendTypeComponent,
+ path: "add-send",
+ component: SendAddEditV2Component,
canActivate: [authGuard],
data: { elevation: 1 } satisfies RouteDataProperties,
},
- ...extensionRefreshSwap(SendAddEditComponent, SendAddEditV2Component, {
- path: "add-send",
- canActivate: [authGuard],
- data: { elevation: 1 } satisfies RouteDataProperties,
- }),
- ...extensionRefreshSwap(SendAddEditComponent, SendAddEditV2Component, {
+ {
path: "edit-send",
+ component: SendAddEditV2Component,
canActivate: [authGuard],
data: { elevation: 1 } satisfies RouteDataProperties,
- }),
+ },
{
path: "send-created",
component: SendCreatedComponent,
@@ -647,8 +633,8 @@ const routes: Routes = [
],
},
{
- path: "lockV2",
- canActivate: [canAccessFeature(FeatureFlag.ExtensionRefresh), lockGuard()],
+ path: "lock",
+ canActivate: [lockGuard()],
data: {
pageIcon: LockIcon,
pageTitle: {
@@ -659,15 +645,19 @@ const routes: Routes = [
elevation: 1,
/**
* This ensures that in a passkey flow the `/fido2?` URL does not get
- * overwritten in the `BrowserRouterService` by the `/lockV2` route. This way, after
+ * overwritten in the `BrowserRouterService` by the `/lock` route. This way, after
* unlocking, the user can be redirected back to the `/fido2?` URL.
+ *
+ * Also, this prevents a routing loop when using biometrics to unlock the vault in MV2 (Firefox),
+ * locking up the browser (https://bitwarden.atlassian.net/browse/PM-16116). This involves the
+ * `popup-router-cache.service` pushing the `lock` route to the history.
*/
doNotSaveUrl: true,
} satisfies ExtensionAnonLayoutWrapperData & RouteDataProperties,
children: [
{
path: "",
- component: LockV2Component,
+ component: LockComponent,
},
],
},
@@ -710,8 +700,36 @@ const routes: Routes = [
canActivate: [authGuard],
data: { elevation: 2 } satisfies RouteDataProperties,
},
- ...extensionRefreshSwap(TabsComponent, TabsV2Component, {
+ {
+ path: "new-device-notice",
+ component: ExtensionAnonLayoutWrapperComponent,
+ canActivate: [],
+ children: [
+ {
+ path: "",
+ component: NewDeviceVerificationNoticePageOneComponent,
+ data: {
+ pageIcon: VaultIcons.ExclamationTriangle,
+ pageTitle: {
+ key: "importantNotice",
+ },
+ },
+ },
+ {
+ path: "setup",
+ component: NewDeviceVerificationNoticePageTwoComponent,
+ data: {
+ pageIcon: VaultIcons.UserLock,
+ pageTitle: {
+ key: "setupTwoStepLogin",
+ },
+ },
+ },
+ ],
+ },
+ {
path: "tabs",
+ component: TabsV2Component,
data: { elevation: 0 } satisfies RouteDataProperties,
children: [
{
@@ -721,36 +739,35 @@ const routes: Routes = [
},
{
path: "current",
- component: CurrentTabComponent,
- canActivate: [authGuard],
- canMatch: [extensionRefreshRedirect("/tabs/vault")],
- data: { elevation: 0 } satisfies RouteDataProperties,
- runGuardsAndResolvers: "always",
+ redirectTo: "/tabs/vault",
},
- ...extensionRefreshSwap(VaultFilterComponent, VaultV2Component, {
+ {
path: "vault",
- canActivate: [authGuard],
+ component: VaultV2Component,
+ canActivate: [authGuard, NewDeviceVerificationNoticeGuard],
canDeactivate: [clearVaultStateGuard],
data: { elevation: 0 } satisfies RouteDataProperties,
- }),
- ...extensionRefreshSwap(GeneratorComponent, CredentialGeneratorComponent, {
+ },
+ {
path: "generator",
+ component: CredentialGeneratorComponent,
canActivate: [authGuard],
data: { elevation: 0 } satisfies RouteDataProperties,
- }),
+ },
{
path: "settings",
component: SettingsV2Component,
canActivate: [authGuard],
data: { elevation: 0 } satisfies RouteDataProperties,
},
- ...extensionRefreshSwap(SendGroupingsComponent, SendV2Component, {
+ {
path: "send",
+ component: SendV2Component,
canActivate: [authGuard],
data: { elevation: 0 } satisfies RouteDataProperties,
- }),
+ },
],
- }),
+ },
{
path: "account-switcher",
component: AccountSwitcherComponent,
diff --git a/apps/browser/src/popup/app.component.ts b/apps/browser/src/popup/app.component.ts
index cbdbed51db7..8e51152be2e 100644
--- a/apps/browser/src/popup/app.component.ts
+++ b/apps/browser/src/popup/app.component.ts
@@ -1,7 +1,6 @@
// FIXME: Update this file to be type safe and remove this and next line
// @ts-strict-ignore
import { ChangeDetectorRef, Component, NgZone, OnDestroy, OnInit, inject } from "@angular/core";
-import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
import { NavigationEnd, Router, RouterOutlet } from "@angular/router";
import { Subject, takeUntil, firstValueFrom, concatMap, filter, tap } from "rxjs";
@@ -11,9 +10,7 @@ import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service";
import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status";
import { AnimationControlService } from "@bitwarden/common/platform/abstractions/animation-control.service";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
-import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
-import { SdkService } from "@bitwarden/common/platform/abstractions/sdk/sdk.service";
import { StateService } from "@bitwarden/common/platform/abstractions/state.service";
import { MessageListener } from "@bitwarden/common/platform/messaging";
import { UserId } from "@bitwarden/common/types/guid";
@@ -25,12 +22,9 @@ import {
ToastService,
} from "@bitwarden/components";
-import { flagEnabled } from "../platform/flags";
import { PopupCompactModeService } from "../platform/popup/layout/popup-compact-mode.service";
-import { PopupWidthService } from "../platform/popup/layout/popup-width.service";
import { PopupViewCacheService } from "../platform/popup/view-cache/popup-view-cache.service";
import { initPopupClosedListener } from "../platform/services/popup-view-cache-background.service";
-import { BrowserSendStateService } from "../tools/popup/services/browser-send-state.service";
import { VaultBrowserStateService } from "../vault/services/vault-browser-state.service";
import { routerTransition } from "./app-routing.animations";
@@ -47,7 +41,6 @@ import { DesktopSyncVerificationDialogComponent } from "./components/desktop-syn
export class AppComponent implements OnInit, OnDestroy {
private viewCacheService = inject(PopupViewCacheService);
private compactModeService = inject(PopupCompactModeService);
- private widthService = inject(PopupWidthService);
private lastActivity: Date;
private activeUserId: UserId;
@@ -61,7 +54,6 @@ export class AppComponent implements OnInit, OnDestroy {
private i18nService: I18nService,
private router: Router,
private stateService: StateService,
- private browserSendStateService: BrowserSendStateService,
private vaultBrowserStateService: VaultBrowserStateService,
private cipherService: CipherService,
private changeDetectorRef: ChangeDetectorRef,
@@ -72,38 +64,13 @@ export class AppComponent implements OnInit, OnDestroy {
private toastService: ToastService,
private accountService: AccountService,
private animationControlService: AnimationControlService,
- private logService: LogService,
- private sdkService: SdkService,
- ) {
- if (flagEnabled("sdk")) {
- // Warn if the SDK for some reason can't be initialized
- this.sdkService.supported$.pipe(takeUntilDestroyed()).subscribe({
- next: (supported) => {
- if (!supported) {
- this.logService.debug("SDK is not supported");
- this.sdkService
- .failedToInitialize("popup", undefined)
- .catch((e) => this.logService.error(e));
- } else {
- this.logService.debug("SDK is supported");
- }
- },
- error: (e: unknown) => {
- this.sdkService
- .failedToInitialize("popup", e as Error)
- .catch((e) => this.logService.error(e));
- this.logService.error(e);
- },
- });
- }
- }
+ ) {}
async ngOnInit() {
initPopupClosedListener();
await this.viewCacheService.init();
this.compactModeService.init();
- this.widthService.init();
// Component states must not persist between closing and reopening the popup, otherwise they become dead objects
// Clear them aggressively to make sure this doesn't occur
@@ -271,8 +238,6 @@ export class AppComponent implements OnInit, OnDestroy {
await Promise.all([
this.vaultBrowserStateService.setBrowserGroupingsComponentState(null),
this.vaultBrowserStateService.setBrowserVaultItemsComponentState(null),
- this.browserSendStateService.setBrowserSendComponentState(null),
- this.browserSendStateService.setBrowserSendTypeComponentState(null),
]);
}
diff --git a/apps/browser/src/popup/app.module.ts b/apps/browser/src/popup/app.module.ts
index 76bd06565c7..b547078084b 100644
--- a/apps/browser/src/popup/app.module.ts
+++ b/apps/browser/src/popup/app.module.ts
@@ -23,7 +23,6 @@ import { EnvironmentComponent } from "../auth/popup/environment.component";
import { ExtensionAnonLayoutWrapperComponent } from "../auth/popup/extension-anon-layout-wrapper/extension-anon-layout-wrapper.component";
import { HintComponent } from "../auth/popup/hint.component";
import { HomeComponent } from "../auth/popup/home.component";
-import { LockComponent } from "../auth/popup/lock.component";
import { LoginDecryptionOptionsComponentV1 } from "../auth/popup/login-decryption-options/login-decryption-options-v1.component";
import { LoginComponentV1 } from "../auth/popup/login-v1.component";
import { LoginViaAuthRequestComponentV1 } from "../auth/popup/login-via-auth-request-v1.component";
@@ -57,12 +56,6 @@ import { PopupHeaderComponent } from "../platform/popup/layout/popup-header.comp
import { PopupPageComponent } from "../platform/popup/layout/popup-page.component";
import { PopupTabNavigationComponent } from "../platform/popup/layout/popup-tab-navigation.component";
import { FilePopoutCalloutComponent } from "../tools/popup/components/file-popout-callout.component";
-import { GeneratorComponent } from "../tools/popup/generator/generator.component";
-import { PasswordGeneratorHistoryComponent } from "../tools/popup/generator/password-generator-history.component";
-import { SendListComponent } from "../tools/popup/send/components/send-list.component";
-import { SendAddEditComponent } from "../tools/popup/send/send-add-edit.component";
-import { SendGroupingsComponent } from "../tools/popup/send/send-groupings.component";
-import { SendTypeComponent } from "../tools/popup/send/send-type.component";
import { ActionButtonsComponent } from "../vault/popup/components/action-buttons.component";
import { CipherRowComponent } from "../vault/popup/components/cipher-row.component";
import { AddEditCustomFieldsComponent } from "../vault/popup/components/vault/add-edit-custom-fields.component";
@@ -88,7 +81,6 @@ import { AppComponent } from "./app.component";
import { UserVerificationComponent } from "./components/user-verification.component";
import { ServicesModule } from "./services/services.module";
import { TabsV2Component } from "./tabs-v2.component";
-import { TabsComponent } from "./tabs.component";
// Register the locales for the application
import "../platform/popup/locales";
@@ -157,27 +149,19 @@ import "../platform/popup/locales";
VaultFilterComponent,
HintComponent,
HomeComponent,
- LockComponent,
LoginViaAuthRequestComponentV1,
LoginComponentV1,
LoginDecryptionOptionsComponentV1,
NotificationsSettingsV1Component,
AppearanceComponent,
- GeneratorComponent,
- PasswordGeneratorHistoryComponent,
PasswordHistoryComponent,
PremiumComponent,
RegisterComponent,
- SendAddEditComponent,
- SendGroupingsComponent,
- SendListComponent,
- SendTypeComponent,
SetPasswordComponent,
VaultSettingsComponent,
ShareComponent,
SsoComponentV1,
SyncComponent,
- TabsComponent,
TabsV2Component,
TwoFactorComponent,
TwoFactorOptionsComponent,
diff --git a/apps/browser/src/popup/main.ts b/apps/browser/src/popup/main.ts
index db634ea2e2c..8ffe0743bf6 100644
--- a/apps/browser/src/popup/main.ts
+++ b/apps/browser/src/popup/main.ts
@@ -1,7 +1,7 @@
import { enableProdMode } from "@angular/core";
import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
-import { PopupWidthService } from "../platform/popup/layout/popup-width.service";
+import { PopupSizeService } from "../platform/popup/layout/popup-size.service";
import { BrowserPlatformUtilsService } from "../platform/services/platform-utils/browser-platform-utils.service";
require("./scss/popup.scss");
@@ -10,7 +10,7 @@ require("./scss/tailwind.css");
import { AppModule } from "./app.module";
// We put these first to minimize the delay in window changing.
-PopupWidthService.initBodyWidthFromLocalStorage();
+PopupSizeService.initBodyWidthFromLocalStorage();
// Should be removed once we deprecate support for Safari 16.0 and older. See Jira ticket [PM-1861]
if (BrowserPlatformUtilsService.shouldApplySafariHeightFix(window)) {
document.documentElement.classList.add("safari_height_fix");
diff --git a/apps/browser/src/popup/scss/base.scss b/apps/browser/src/popup/scss/base.scss
index 49847dd7778..554396fa038 100644
--- a/apps/browser/src/popup/scss/base.scss
+++ b/apps/browser/src/popup/scss/base.scss
@@ -19,8 +19,8 @@ body {
}
body {
- min-width: 380px;
- height: 600px !important;
+ width: 380px;
+ height: 600px;
position: relative;
min-height: 100vh;
overflow: hidden;
@@ -33,18 +33,20 @@ body {
}
&.body-sm {
- width: 375px !important;
- height: 500px !important;
+ height: 500px;
}
&.body-xs {
- width: 375px !important;
- height: 300px !important;
+ height: 400px;
+ }
+
+ &.body-xxs {
+ height: 300px;
}
&.body-full {
- width: 100% !important;
- height: 100% !important;
+ width: 100%;
+ height: 100%;
}
}
diff --git a/apps/browser/src/popup/services/init.service.ts b/apps/browser/src/popup/services/init.service.ts
index 9e6471eaf28..24661438495 100644
--- a/apps/browser/src/popup/services/init.service.ts
+++ b/apps/browser/src/popup/services/init.service.ts
@@ -1,5 +1,5 @@
import { DOCUMENT } from "@angular/common";
-import { Inject, Injectable } from "@angular/core";
+import { inject, Inject, Injectable } from "@angular/core";
import { AbstractThemingService } from "@bitwarden/angular/platform/services/theming/theming.service.abstraction";
import { TwoFactorService } from "@bitwarden/common/auth/abstractions/two-factor.service";
@@ -10,8 +10,11 @@ import { StateService } from "@bitwarden/common/platform/abstractions/state.serv
import { BrowserApi } from "../../platform/browser/browser-api";
import BrowserPopupUtils from "../../platform/popup/browser-popup-utils";
+import { PopupSizeService } from "../../platform/popup/layout/popup-size.service";
@Injectable()
export class InitService {
+ private sizeService = inject(PopupSizeService);
+
constructor(
private platformUtilsService: PlatformUtilsService,
private i18nService: I18nService,
@@ -28,13 +31,7 @@ export class InitService {
await this.i18nService.init();
this.twoFactorService.init();
- if (!BrowserPopupUtils.inPopup(window)) {
- window.document.body.classList.add("body-full");
- } else if (window.screen.availHeight < 600) {
- window.document.body.classList.add("body-xs");
- } else if (window.screen.availHeight <= 800) {
- window.document.body.classList.add("body-sm");
- }
+ await this.sizeService.init();
const htmlEl = window.document.documentElement;
this.themingService.applyThemeChangesTo(this.document);
diff --git a/apps/browser/src/popup/services/services.module.ts b/apps/browser/src/popup/services/services.module.ts
index 7014d908ac3..5b27833636f 100644
--- a/apps/browser/src/popup/services/services.module.ts
+++ b/apps/browser/src/popup/services/services.module.ts
@@ -152,7 +152,6 @@ import { ForegroundSyncService } from "../../platform/sync/foreground-sync.servi
import { fromChromeRuntimeMessaging } from "../../platform/utils/from-chrome-runtime-messaging";
import { ExtensionLockComponentService } from "../../services/extension-lock-component.service";
import { ForegroundVaultTimeoutService } from "../../services/vault-timeout/foreground-vault-timeout.service";
-import { BrowserSendStateService } from "../../tools/popup/services/browser-send-state.service";
import { FilePopoutUtilsService } from "../../tools/popup/services/file-popout-utils.service";
import { Fido2UserVerificationService } from "../../vault/services/fido2-user-verification.service";
import { VaultBrowserStateService } from "../../vault/services/vault-browser-state.service";
@@ -473,11 +472,6 @@ const safeProviders: SafeProvider[] = [
useClass: UserNotificationSettingsService,
deps: [StateProvider],
}),
- safeProvider({
- provide: BrowserSendStateService,
- useClass: BrowserSendStateService,
- deps: [StateProvider],
- }),
safeProvider({
provide: MessageListener,
useFactory: (subject: Subject>>, ngZone: NgZone) =>
diff --git a/apps/browser/src/popup/tabs.component.html b/apps/browser/src/popup/tabs.component.html
deleted file mode 100644
index fd04967b914..00000000000
--- a/apps/browser/src/popup/tabs.component.html
+++ /dev/null
@@ -1,57 +0,0 @@
-