mirror of
https://github.com/bitwarden/browser.git
synced 2024-12-22 16:29:09 +01:00
Merge branch 'main' into PM-12985-Reports
This commit is contained in:
commit
03e6be2abc
2
.github/workflows/build-desktop.yml
vendored
2
.github/workflows/build-desktop.yml
vendored
@ -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
|
||||
|
28
.github/workflows/lint.yml
vendored
28
.github/workflows/lint.yml
vendored
@ -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"
|
||||
|
@ -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",
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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": "Ширина на разширението"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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í"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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."
|
||||
@ -2047,9 +2040,6 @@
|
||||
"clone": {
|
||||
"message": "Clone"
|
||||
},
|
||||
"passwordGeneratorPolicyInEffect": {
|
||||
"message": "One or more organization policies are affecting your generator settings."
|
||||
},
|
||||
"passwordGenerator": {
|
||||
"message": "Password generator"
|
||||
},
|
||||
@ -2884,9 +2874,6 @@
|
||||
"error": {
|
||||
"message": "Error"
|
||||
},
|
||||
"regenerateUsername": {
|
||||
"message": "Regenerate username"
|
||||
},
|
||||
"generateUsername": {
|
||||
"message": "Generate username"
|
||||
},
|
||||
@ -2927,9 +2914,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 +2936,6 @@
|
||||
"websiteName": {
|
||||
"message": "Website name"
|
||||
},
|
||||
"whatWouldYouLikeToGenerate": {
|
||||
"message": "What would you like to generate?"
|
||||
},
|
||||
"passwordType": {
|
||||
"message": "Password type"
|
||||
},
|
||||
"service": {
|
||||
"message": "Service"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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": "エクストラワイド"
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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": "확장 폭"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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": "Ширина расширения"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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": "Ширина додатка"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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": "Ширина вікна розширення"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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": "扩展宽度"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -1,100 +0,0 @@
|
||||
<form (ngSubmit)="submit()">
|
||||
<app-header>
|
||||
<div class="left"></div>
|
||||
<h1 class="center">
|
||||
<span class="title">{{ "verifyIdentity" | i18n }}</span>
|
||||
</h1>
|
||||
<div class="right">
|
||||
<button type="submit" *ngIf="pinEnabled || masterPasswordEnabled">
|
||||
{{ "unlock" | i18n }}
|
||||
</button>
|
||||
</div>
|
||||
</app-header>
|
||||
<main tabindex="-1">
|
||||
<ng-container *ngIf="fido2PopoutSessionData$ | async as fido2Data">
|
||||
<div class="box">
|
||||
<div class="box-content">
|
||||
<div
|
||||
class="box-content-row box-content-row-flex"
|
||||
appBoxRow
|
||||
*ngIf="pinEnabled || masterPasswordEnabled"
|
||||
>
|
||||
<div class="row-main" *ngIf="pinEnabled">
|
||||
<label for="pin">{{ "pin" | i18n }}</label>
|
||||
<input
|
||||
id="pin"
|
||||
type="{{ showPassword ? 'text' : 'password' }}"
|
||||
name="PIN"
|
||||
class="monospaced"
|
||||
[(ngModel)]="pin"
|
||||
required
|
||||
appInputVerbatim
|
||||
/>
|
||||
</div>
|
||||
<div class="row-main" *ngIf="masterPasswordEnabled && !pinEnabled">
|
||||
<label for="masterPassword">{{ "masterPass" | i18n }}</label>
|
||||
<input
|
||||
id="masterPassword"
|
||||
type="{{ showPassword ? 'text' : 'password' }}"
|
||||
name="MasterPassword"
|
||||
aria-describedby="masterPasswordHelp"
|
||||
class="monospaced"
|
||||
[(ngModel)]="masterPassword"
|
||||
required
|
||||
appInputVerbatim
|
||||
/>
|
||||
</div>
|
||||
<div class="action-buttons">
|
||||
<button
|
||||
type="button"
|
||||
class="row-btn"
|
||||
appStopClick
|
||||
appA11yTitle="{{ 'toggleVisibility' | i18n }}"
|
||||
(click)="togglePassword()"
|
||||
[attr.aria-pressed]="showPassword"
|
||||
>
|
||||
<i
|
||||
class="bwi bwi-lg"
|
||||
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
|
||||
aria-hidden="true"
|
||||
></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="masterPasswordHelp" class="box-footer">
|
||||
<p>
|
||||
{{
|
||||
fido2Data.isFido2Session
|
||||
? ("yourPasskeyIsLocked" | i18n)
|
||||
: ("yourVaultIsLocked" | i18n)
|
||||
}}
|
||||
</p>
|
||||
{{ "loggedInAsOn" | i18n: email : webVaultHostname }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="box" *ngIf="biometricLock">
|
||||
<div class="box-footer no-pad">
|
||||
<button
|
||||
type="button"
|
||||
class="btn primary block"
|
||||
(click)="unlockBiometric()"
|
||||
appStopClick
|
||||
[disabled]="pendingBiometric"
|
||||
>
|
||||
{{ "unlockWithBiometrics" | i18n }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-center" *ngIf="!fido2Data.isFido2Session">
|
||||
<button type="button" appStopClick (click)="logOut()">{{ "logOut" | i18n }}</button>
|
||||
</p>
|
||||
<app-callout *ngIf="biometricError" type="danger">{{ biometricError }}</app-callout>
|
||||
<p class="text-center text-muted" *ngIf="pendingBiometric">
|
||||
<i class="bwi bwi-spinner bwi-spin" aria-hidden="true"></i> {{ "awaitDesktop" | i18n }}
|
||||
</p>
|
||||
|
||||
<app-fido2-use-browser-link-v1></app-fido2-use-browser-link-v1>
|
||||
</ng-container>
|
||||
</main>
|
||||
</form>
|
@ -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<boolean> {
|
||||
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;
|
||||
}
|
||||
}
|
@ -2813,6 +2813,254 @@ exports[`AutofillInlineMenuList initAutofillInlineMenuList the list of ciphers f
|
||||
</div>
|
||||
`;
|
||||
|
||||
exports[`AutofillInlineMenuList initAutofillInlineMenuList the list of ciphers for an authenticated user renders correctly when there are multiple TOTP elements with username displayed 1`] = `
|
||||
<div
|
||||
class="inline-menu-list-container theme_light"
|
||||
>
|
||||
<ul
|
||||
class="inline-menu-list-actions"
|
||||
role="list"
|
||||
>
|
||||
<li
|
||||
class="inline-menu-list-actions-item"
|
||||
role="listitem"
|
||||
>
|
||||
<div
|
||||
class="cipher-container"
|
||||
>
|
||||
<button
|
||||
aria-description="username: user1"
|
||||
aria-label="fillCredentialsFor website login 1"
|
||||
class="fill-cipher-button inline-menu-list-action"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
aria-hidden="true"
|
||||
class="cipher-icon"
|
||||
>
|
||||
<div
|
||||
style="position: relative;"
|
||||
>
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
viewBox="0 0 29 29"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
|
||||
|
||||
<circle
|
||||
class="circle-color"
|
||||
cx="14.5"
|
||||
cy="14.5"
|
||||
fill="none"
|
||||
r="12.5"
|
||||
stroke-dasharray="78.5"
|
||||
stroke-dashoffset="78.5"
|
||||
stroke-width="3"
|
||||
style="stroke-dashoffset: NaN;"
|
||||
transform="rotate(-90 14.5 14.5)"
|
||||
/>
|
||||
|
||||
|
||||
<circle
|
||||
class="circle-color"
|
||||
cx="14.5"
|
||||
cy="14.5"
|
||||
fill="none"
|
||||
r="14"
|
||||
stroke-width="1"
|
||||
/>
|
||||
|
||||
|
||||
</svg>
|
||||
<span
|
||||
aria-label=""
|
||||
bittypography="helper"
|
||||
class="totp-sec-span"
|
||||
>
|
||||
NaN
|
||||
</span>
|
||||
</div>
|
||||
</span>
|
||||
<div
|
||||
class="cipher-details"
|
||||
>
|
||||
<span
|
||||
aria-label=""
|
||||
class="cipher-name"
|
||||
/>
|
||||
<span
|
||||
class="cipher-subtitle"
|
||||
title="user1"
|
||||
>
|
||||
user1
|
||||
</span>
|
||||
<span
|
||||
aria-label=""
|
||||
class="cipher-subtitle"
|
||||
data-testid="totp-code"
|
||||
>
|
||||
123 456
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
<button
|
||||
aria-label="view website login 1, opensInANewWindow"
|
||||
class="view-cipher-button"
|
||||
tabindex="-1"
|
||||
>
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
fill="none"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
width="20"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<g
|
||||
clip-path="url(#a)"
|
||||
>
|
||||
<path
|
||||
d="M16.587 7.932H5.9a.455.455 0 0 1-.31-.12.393.393 0 0 1-.127-.287c0-.108.046-.211.128-.288a.455.455 0 0 1 .309-.119h10.687c.117 0 .228.043.31.12.082.076.128.179.128.287a.393.393 0 0 1-.128.288.455.455 0 0 1-.31.119Zm0 2.474H5.9a.455.455 0 0 1-.31-.119.393.393 0 0 1-.127-.287c0-.108.046-.212.128-.288a.455.455 0 0 1 .309-.119h10.687c.117 0 .228.043.31.12.082.075.128.179.128.287a.393.393 0 0 1-.128.287.455.455 0 0 1-.31.12Zm0 2.468H5.9a.455.455 0 0 1-.31-.119.393.393 0 0 1-.127-.287c0-.108.046-.212.128-.288a.455.455 0 0 1 .309-.119h10.687c.117 0 .228.043.31.12.082.075.128.179.128.287a.393.393 0 0 1-.128.287.455.455 0 0 1-.31.12Zm2.163-8.103v10.457H1.25V4.771h17.5Zm0-1.162H1.25a1.3 1.3 0 0 0-.884.34A1.122 1.122 0 0 0 0 4.772v10.457c0 .308.132.604.366.822a1.3 1.3 0 0 0 .884.34h17.5a1.3 1.3 0 0 0 .884-.34c.234-.218.366-.514.366-.822V4.771c0-.308-.132-.603-.366-.821a1.3 1.3 0 0 0-.884-.34ZM3.213 8.01c.287 0 .52-.217.52-.484s-.234-.483-.52-.483c-.288 0-.52.216-.52.483s.233.483.52.483Zm0 4.903c.287 0 .52-.217.52-.484 0-.266-.234-.483-.52-.483-.287 0-.52.216-.52.483s.233.484.52.484Zm0-2.452c.287 0 .52-.216.52-.483 0-.268-.234-.484-.52-.484-.288 0-.52.216-.52.484 0 .267.233.483.52.483Z"
|
||||
fill="#175DDC"
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clippath
|
||||
id="a"
|
||||
>
|
||||
<path
|
||||
d="M0 .113h20v19.773H0z"
|
||||
fill="#fff"
|
||||
/>
|
||||
</clippath>
|
||||
</defs>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<li
|
||||
class="inline-menu-list-actions-item"
|
||||
role="listitem"
|
||||
>
|
||||
<div
|
||||
class="cipher-container"
|
||||
>
|
||||
<button
|
||||
aria-description="username: user2"
|
||||
aria-label="fillCredentialsFor website login 2"
|
||||
class="fill-cipher-button inline-menu-list-action"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
aria-hidden="true"
|
||||
class="cipher-icon"
|
||||
>
|
||||
<div
|
||||
style="position: relative;"
|
||||
>
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
viewBox="0 0 29 29"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
|
||||
|
||||
<circle
|
||||
class="circle-color"
|
||||
cx="14.5"
|
||||
cy="14.5"
|
||||
fill="none"
|
||||
r="12.5"
|
||||
stroke-dasharray="78.5"
|
||||
stroke-dashoffset="78.5"
|
||||
stroke-width="3"
|
||||
style="stroke-dashoffset: NaN;"
|
||||
transform="rotate(-90 14.5 14.5)"
|
||||
/>
|
||||
|
||||
|
||||
<circle
|
||||
class="circle-color"
|
||||
cx="14.5"
|
||||
cy="14.5"
|
||||
fill="none"
|
||||
r="14"
|
||||
stroke-width="1"
|
||||
/>
|
||||
|
||||
|
||||
</svg>
|
||||
<span
|
||||
aria-label=""
|
||||
bittypography="helper"
|
||||
class="totp-sec-span"
|
||||
>
|
||||
NaN
|
||||
</span>
|
||||
</div>
|
||||
</span>
|
||||
<div
|
||||
class="cipher-details"
|
||||
>
|
||||
<span
|
||||
aria-label=""
|
||||
class="cipher-name"
|
||||
/>
|
||||
<span
|
||||
class="cipher-subtitle"
|
||||
title="user2"
|
||||
>
|
||||
user2
|
||||
</span>
|
||||
<span
|
||||
aria-label=""
|
||||
class="cipher-subtitle"
|
||||
data-testid="totp-code"
|
||||
>
|
||||
654 321
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
<button
|
||||
aria-label="view website login 2, opensInANewWindow"
|
||||
class="view-cipher-button"
|
||||
tabindex="-1"
|
||||
>
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
fill="none"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
width="20"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<g
|
||||
clip-path="url(#a)"
|
||||
>
|
||||
<path
|
||||
d="M16.587 7.932H5.9a.455.455 0 0 1-.31-.12.393.393 0 0 1-.127-.287c0-.108.046-.211.128-.288a.455.455 0 0 1 .309-.119h10.687c.117 0 .228.043.31.12.082.076.128.179.128.287a.393.393 0 0 1-.128.288.455.455 0 0 1-.31.119Zm0 2.474H5.9a.455.455 0 0 1-.31-.119.393.393 0 0 1-.127-.287c0-.108.046-.212.128-.288a.455.455 0 0 1 .309-.119h10.687c.117 0 .228.043.31.12.082.075.128.179.128.287a.393.393 0 0 1-.128.287.455.455 0 0 1-.31.12Zm0 2.468H5.9a.455.455 0 0 1-.31-.119.393.393 0 0 1-.127-.287c0-.108.046-.212.128-.288a.455.455 0 0 1 .309-.119h10.687c.117 0 .228.043.31.12.082.075.128.179.128.287a.393.393 0 0 1-.128.287.455.455 0 0 1-.31.12Zm2.163-8.103v10.457H1.25V4.771h17.5Zm0-1.162H1.25a1.3 1.3 0 0 0-.884.34A1.122 1.122 0 0 0 0 4.772v10.457c0 .308.132.604.366.822a1.3 1.3 0 0 0 .884.34h17.5a1.3 1.3 0 0 0 .884-.34c.234-.218.366-.514.366-.822V4.771c0-.308-.132-.603-.366-.821a1.3 1.3 0 0 0-.884-.34ZM3.213 8.01c.287 0 .52-.217.52-.484s-.234-.483-.52-.483c-.288 0-.52.216-.52.483s.233.483.52.483Zm0 4.903c.287 0 .52-.217.52-.484 0-.266-.234-.483-.52-.483-.287 0-.52.216-.52.483s.233.484.52.484Zm0-2.452c.287 0 .52-.216.52-.483 0-.268-.234-.484-.52-.484-.288 0-.52.216-.52.484 0 .267.233.483.52.483Z"
|
||||
fill="#175DDC"
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clippath
|
||||
id="a"
|
||||
>
|
||||
<path
|
||||
d="M0 .113h20v19.773H0z"
|
||||
fill="#fff"
|
||||
/>
|
||||
</clippath>
|
||||
</defs>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
`;
|
||||
|
||||
exports[`AutofillInlineMenuList initAutofillInlineMenuList the locked inline menu for an unauthenticated user creates the views for the locked inline menu 1`] = `
|
||||
<div
|
||||
class="inline-menu-list-container theme_light"
|
||||
|
@ -140,6 +140,47 @@ describe("AutofillInlineMenuList", () => {
|
||||
expect(autofillInlineMenuList["inlineMenuListContainer"]).toMatchSnapshot();
|
||||
});
|
||||
|
||||
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 view for a totp field", () => {
|
||||
postWindowMessage(
|
||||
createInitAutofillInlineMenuListMessageMock({
|
||||
|
@ -1163,7 +1163,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);
|
||||
}
|
||||
const subTitleText = this.getSubTitleText(cipher);
|
||||
const cipherSubtitleElement = this.buildCipherSubtitleElement(subTitleText);
|
||||
@ -1174,13 +1174,24 @@ 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): HTMLDivElement | null {
|
||||
if (!totpCode) {
|
||||
return null;
|
||||
}
|
||||
@ -1196,12 +1207,17 @@ 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.add("cipher-subtitle");
|
||||
totpCodeSpan.textContent = formattedTotpCode;
|
||||
totpCodeSpan.setAttribute("aria-label", this.getTranslation("totpCodeAria"));
|
||||
totpCodeSpan.setAttribute("data-testid", "totp-code");
|
||||
containerElement.appendChild(totpCodeSpan);
|
||||
|
||||
return containerElement;
|
||||
}
|
||||
|
@ -739,7 +739,6 @@ export default class MainBackground {
|
||||
this.accountService,
|
||||
this.kdfConfigService,
|
||||
this.keyService,
|
||||
this.apiService,
|
||||
);
|
||||
|
||||
this.passwordStrengthService = new PasswordStrengthService();
|
||||
@ -1313,23 +1312,6 @@ 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<void>((resolve) => {
|
||||
setTimeout(async () => {
|
||||
await this.refreshBadge();
|
||||
|
@ -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
|
||||
|
||||
<Canvas>
|
||||
<Story of={stories.Notice} />
|
||||
</Canvas>
|
||||
|
||||
Common interactive elements to insert into the `full-width-notice` slot are:
|
||||
|
||||
- `bit-banner`: shows a full-width notice
|
||||
|
||||
Usage example:
|
||||
|
||||
```html
|
||||
<popup-page>
|
||||
<popup-header slot="header" [pageTitle]="'vault' | i18n"> </popup-header>
|
||||
<bit-banner slot="full-width-notice" bannerType="info" [showClose]="false">
|
||||
This is an important note about these ciphers
|
||||
</bit-banner>
|
||||
<ng-container slot="above-scroll-area">
|
||||
<app-vault-header-v2></app-vault-header-v2>
|
||||
</ng-container>
|
||||
</popup-page>
|
||||
```
|
||||
|
||||
## Popup footer
|
||||
|
||||
Popup footer should be used when the page displays action buttons. It functions similarly to the
|
||||
|
@ -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: `
|
||||
<bit-banner bannerType="info" [showClose]="false">
|
||||
This is an important note about these ciphers
|
||||
</bit-banner>
|
||||
`,
|
||||
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 */ `
|
||||
<extension-container>
|
||||
<popup-page>
|
||||
<popup-header slot="header" pageTitle="Page Header"></popup-header>
|
||||
<mock-banner slot="full-width-notice"></mock-banner>
|
||||
<mock-search slot="above-scroll-area"></mock-search>
|
||||
<vault-placeholder></vault-placeholder>
|
||||
</popup-page>
|
||||
</extension-container>
|
||||
`,
|
||||
}),
|
||||
};
|
||||
|
||||
export const WidthOptions: Story = {
|
||||
render: (args) => ({
|
||||
props: args,
|
||||
|
@ -1,5 +1,6 @@
|
||||
<ng-content select="[slot=header]"></ng-content>
|
||||
<main class="tw-flex-1 tw-overflow-hidden tw-flex tw-flex-col tw-relative tw-bg-background-alt">
|
||||
<ng-content select="[slot=full-width-notice]"></ng-content>
|
||||
<div
|
||||
#nonScrollable
|
||||
class="tw-transition-colors tw-duration-200 tw-border-0 tw-border-b tw-border-solid tw-p-3 bit-compact:tw-p-2"
|
||||
|
@ -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<typeof BitwardenClient>
|
||||
): Promise<BitwardenClient> {
|
||||
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<void>((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);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
@ -17,7 +17,6 @@ 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 {
|
||||
@ -26,7 +25,7 @@ import {
|
||||
LoginComponent,
|
||||
LoginSecondaryContentComponent,
|
||||
LockIcon,
|
||||
LockV2Component,
|
||||
LockComponent,
|
||||
LoginViaAuthRequestComponent,
|
||||
PasswordHintComponent,
|
||||
RegistrationFinishComponent,
|
||||
@ -60,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";
|
||||
@ -88,8 +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";
|
||||
@ -105,10 +101,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";
|
||||
@ -130,7 +124,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
|
||||
@ -176,13 +169,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,
|
||||
@ -342,15 +328,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,
|
||||
@ -653,8 +640,8 @@ const routes: Routes = [
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "lockV2",
|
||||
canActivate: [canAccessFeature(FeatureFlag.ExtensionRefresh), lockGuard()],
|
||||
path: "lock",
|
||||
canActivate: [lockGuard()],
|
||||
data: {
|
||||
pageIcon: LockIcon,
|
||||
pageTitle: {
|
||||
@ -665,19 +652,19 @@ const routes: Routes = [
|
||||
elevation: 1,
|
||||
/**
|
||||
* This ensures that in a passkey flow the `/fido2?<queryParams>` 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?<queryParams>` 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 `lockV2` route to the history.
|
||||
* `popup-router-cache.service` pushing the `lock` route to the history.
|
||||
*/
|
||||
doNotSaveUrl: true,
|
||||
} satisfies ExtensionAnonLayoutWrapperData & RouteDataProperties,
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: LockV2Component,
|
||||
component: LockComponent,
|
||||
},
|
||||
],
|
||||
},
|
||||
@ -748,8 +735,9 @@ const routes: Routes = [
|
||||
},
|
||||
],
|
||||
},
|
||||
...extensionRefreshSwap(TabsComponent, TabsV2Component, {
|
||||
{
|
||||
path: "tabs",
|
||||
component: TabsV2Component,
|
||||
data: { elevation: 0 } satisfies RouteDataProperties,
|
||||
children: [
|
||||
{
|
||||
@ -759,23 +747,21 @@ 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",
|
||||
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,
|
||||
@ -788,7 +774,7 @@ const routes: Routes = [
|
||||
data: { elevation: 0 } satisfies RouteDataProperties,
|
||||
}),
|
||||
],
|
||||
}),
|
||||
},
|
||||
{
|
||||
path: "account-switcher",
|
||||
component: AccountSwitcherComponent,
|
||||
|
@ -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,7 +22,6 @@ 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";
|
||||
@ -72,31 +68,7 @@ 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();
|
||||
|
@ -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,8 +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";
|
||||
@ -88,7 +85,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,14 +153,11 @@ import "../platform/popup/locales";
|
||||
VaultFilterComponent,
|
||||
HintComponent,
|
||||
HomeComponent,
|
||||
LockComponent,
|
||||
LoginViaAuthRequestComponentV1,
|
||||
LoginComponentV1,
|
||||
LoginDecryptionOptionsComponentV1,
|
||||
NotificationsSettingsV1Component,
|
||||
AppearanceComponent,
|
||||
GeneratorComponent,
|
||||
PasswordGeneratorHistoryComponent,
|
||||
PasswordHistoryComponent,
|
||||
PremiumComponent,
|
||||
RegisterComponent,
|
||||
@ -177,7 +170,6 @@ import "../platform/popup/locales";
|
||||
ShareComponent,
|
||||
SsoComponentV1,
|
||||
SyncComponent,
|
||||
TabsComponent,
|
||||
TabsV2Component,
|
||||
TwoFactorComponent,
|
||||
TwoFactorOptionsComponent,
|
||||
|
@ -1,57 +0,0 @@
|
||||
<div class="tab-page">
|
||||
<router-outlet></router-outlet>
|
||||
<nav class="tabs">
|
||||
<ul>
|
||||
<li routerLinkActive="active" #rlaCurrentTab="routerLinkActive" *ngIf="showCurrentTab">
|
||||
<button
|
||||
type="button"
|
||||
routerLink="current"
|
||||
appA11yTitle="{{ 'currentTab' | i18n }}"
|
||||
[attr.aria-pressed]="rlaCurrentTab.isActive"
|
||||
>
|
||||
<i class="bwi bwi-folder-closed-f bwi-2x" aria-hidden="true"></i>{{ "tab" | i18n }}
|
||||
</button>
|
||||
</li>
|
||||
<li routerLinkActive="active" #rlaMyVault="routerLinkActive">
|
||||
<button
|
||||
type="button"
|
||||
routerLink="vault"
|
||||
appA11yTitle="{{ 'myVault' | i18n }}"
|
||||
[attr.aria-pressed]="rlaMyVault.isActive"
|
||||
>
|
||||
<i class="bwi bwi-lock-f bwi-2x" aria-hidden="true"></i>{{ "vault" | i18n }}
|
||||
</button>
|
||||
</li>
|
||||
<li routerLinkActive="active" #rlaSend="routerLinkActive">
|
||||
<button
|
||||
type="button"
|
||||
routerLink="send"
|
||||
appA11yTitle="{{ 'send' | i18n }}"
|
||||
[attr.aria-pressed]="rlaSend.isActive"
|
||||
>
|
||||
<i class="bwi bwi-send-f bwi-2x" aria-hidden="true"></i>{{ "send" | i18n }}
|
||||
</button>
|
||||
</li>
|
||||
<li routerLinkActive="active" #rlaGenerator="routerLinkActive">
|
||||
<button
|
||||
type="button"
|
||||
routerLink="generator"
|
||||
appA11yTitle="{{ 'passGen' | i18n }}"
|
||||
[attr.aria-pressed]="rlaGenerator.isActive"
|
||||
>
|
||||
<i class="bwi bwi-generate-f bwi-2x" aria-hidden="true"></i>{{ "generator" | i18n }}
|
||||
</button>
|
||||
</li>
|
||||
<li routerLinkActive="active" #rlaSettings="routerLinkActive">
|
||||
<button
|
||||
type="button"
|
||||
routerLink="settings"
|
||||
appA11yTitle="{{ 'settings' | i18n }}"
|
||||
[attr.aria-pressed]="rlaSettings.isActive"
|
||||
>
|
||||
<i class="bwi bwi-cog-f bwi-2x" aria-hidden="true"></i>{{ "settings" | i18n }}
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
@ -1,15 +0,0 @@
|
||||
import { Component, OnInit } from "@angular/core";
|
||||
|
||||
import BrowserPopupUtils from "../platform/popup/browser-popup-utils";
|
||||
|
||||
@Component({
|
||||
selector: "app-tabs",
|
||||
templateUrl: "tabs.component.html",
|
||||
})
|
||||
export class TabsComponent implements OnInit {
|
||||
showCurrentTab = true;
|
||||
|
||||
ngOnInit() {
|
||||
this.showCurrentTab = !BrowserPopupUtils.inPopout(window);
|
||||
}
|
||||
}
|
@ -1,588 +0,0 @@
|
||||
<app-header [hideAccountSwitcher]="comingFromAddEdit">
|
||||
<div class="left">
|
||||
<app-pop-out [show]="!comingFromAddEdit"></app-pop-out>
|
||||
<button type="button" (click)="close()" *ngIf="comingFromAddEdit">
|
||||
{{ "cancel" | i18n }}
|
||||
</button>
|
||||
</div>
|
||||
<h1 class="center">
|
||||
<span class="title">{{ "generator" | i18n }}</span>
|
||||
</h1>
|
||||
<div class="right">
|
||||
<button type="button" (click)="select()" *ngIf="comingFromAddEdit">
|
||||
{{ "select" | i18n }}
|
||||
</button>
|
||||
</div>
|
||||
</app-header>
|
||||
<main tabindex="-1">
|
||||
<app-callout type="info" *ngIf="enforcedPasswordPolicyOptions?.inEffect() && type === 'password'">
|
||||
{{ "passwordGeneratorPolicyInEffect" | i18n }}
|
||||
</app-callout>
|
||||
<div class="generated-block" *ngIf="type === 'password'">
|
||||
<div
|
||||
class="generated-wrapper"
|
||||
[innerHTML]="password | colorPassword"
|
||||
[appCopyText]="password"
|
||||
></div>
|
||||
<div class="action-buttons">
|
||||
<button
|
||||
type="button"
|
||||
class="row-btn"
|
||||
appStopClick
|
||||
appA11yTitle="{{ 'copyPassword' | i18n }}"
|
||||
(click)="copy()"
|
||||
>
|
||||
<i class="bwi bwi-lg bwi-clone" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
appStopClick
|
||||
appA11yTitle="{{ 'regeneratePassword' | i18n }}"
|
||||
(click)="regenerate()"
|
||||
>
|
||||
<i class="bwi bwi-lg bwi-generate" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="generated-block" *ngIf="type === 'username'">
|
||||
<div
|
||||
class="generated-wrapper"
|
||||
[innerHTML]="username | colorPassword"
|
||||
[appCopyText]="username"
|
||||
></div>
|
||||
<div class="action-buttons" #form [appApiAction]="usernameGeneratingPromise">
|
||||
<button
|
||||
type="button"
|
||||
class="row-btn"
|
||||
appStopClick
|
||||
appA11yTitle="{{ 'copyUsername' | i18n }}"
|
||||
(click)="copy()"
|
||||
>
|
||||
<i class="bwi bwi-lg bwi-clone" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
appStopClick
|
||||
appA11yTitle="{{ 'regenerateUsername' | i18n }}"
|
||||
(click)="$any(form).loading ? false : regenerate()"
|
||||
[attr.aria-disabled]="$any(form).loading ? 'true' : null"
|
||||
>
|
||||
<i
|
||||
class="bwi bwi-lg bwi-generate"
|
||||
[ngClass]="$any(form).loading ? 'bwi-spin' : ''"
|
||||
aria-hidden="true"
|
||||
></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box" *ngIf="!comingFromAddEdit">
|
||||
<div class="box-content">
|
||||
<div class="box-content-row" role="radiogroup" aria-labelledby="typeHeading">
|
||||
<label id="typeHeading" class="radio-header">{{
|
||||
"whatWouldYouLikeToGenerate" | i18n
|
||||
}}</label>
|
||||
<div class="radio-group text-default" appBoxRow *ngFor="let o of typeOptions">
|
||||
<input
|
||||
type="radio"
|
||||
[(ngModel)]="type"
|
||||
name="Type"
|
||||
id="type_{{ o.value }}"
|
||||
[value]="o.value"
|
||||
(change)="typeChanged()"
|
||||
[checked]="type === o.value"
|
||||
/>
|
||||
<label for="type_{{ o.value }}">
|
||||
{{ o.name }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ng-container *ngIf="type === 'password'">
|
||||
<div class="box">
|
||||
<h2 class="box-header">
|
||||
{{ "options" | i18n }}
|
||||
</h2>
|
||||
<div class="box-content">
|
||||
<div class="box-content-row" role="radiogroup" aria-labelledby="passwordTypeHeading">
|
||||
<label id="passwordTypeHeading" class="radio-header">{{ "passwordType" | i18n }}</label>
|
||||
<div class="radio-group text-default" appBoxRow *ngFor="let o of passTypeOptions">
|
||||
<input
|
||||
type="radio"
|
||||
[(ngModel)]="passwordOptions.type"
|
||||
name="PasswordType"
|
||||
id="passwordtype_{{ o.value }}"
|
||||
[value]="o.value"
|
||||
(change)="savePasswordOptions()"
|
||||
[checked]="passwordOptions.type === o.value"
|
||||
/>
|
||||
<label for="passwordtype_{{ o.value }}">
|
||||
{{ o.name }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box" *ngIf="passwordOptions.type === 'passphrase'">
|
||||
<div class="box-content">
|
||||
<div class="box-content-row box-content-row-input" appBoxRow>
|
||||
<label for="num-words">{{ "numWords" | i18n }}</label>
|
||||
<input
|
||||
id="num-words"
|
||||
type="number"
|
||||
min="3"
|
||||
max="20"
|
||||
(change)="savePasswordOptions()"
|
||||
[(ngModel)]="passwordOptions.numWords"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row box-content-row-input" appBoxRow>
|
||||
<label for="word-separator">{{ "wordSeparator" | i18n }}</label>
|
||||
<input
|
||||
id="word-separator"
|
||||
type="text"
|
||||
maxlength="1"
|
||||
(input)="savePasswordOptions()"
|
||||
[(ngModel)]="passwordOptions.wordSeparator"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row box-content-row-checkbox" appBoxRow>
|
||||
<label for="capitalize">{{ "capitalize" | i18n }}</label>
|
||||
<input
|
||||
id="capitalize"
|
||||
type="checkbox"
|
||||
(change)="savePasswordOptions()"
|
||||
[(ngModel)]="passwordOptions.capitalize"
|
||||
[disabled]="enforcedPasswordPolicyOptions?.capitalize"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row box-content-row-checkbox" appBoxRow>
|
||||
<label for="include-number">{{ "includeNumber" | i18n }}</label>
|
||||
<input
|
||||
id="include-number"
|
||||
type="checkbox"
|
||||
(change)="savePasswordOptions()"
|
||||
[(ngModel)]="passwordOptions.includeNumber"
|
||||
[disabled]="enforcedPasswordPolicyOptions?.includeNumber"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ng-container *ngIf="passwordOptions.type === 'password'">
|
||||
<div class="box">
|
||||
<div class="box-content">
|
||||
<div class="box-content-row box-content-row-slider" appBoxRow>
|
||||
<label for="length">{{ "length" | i18n }}</label>
|
||||
<input
|
||||
id="length"
|
||||
type="number"
|
||||
[min]="passwordOptions.minLength"
|
||||
max="128"
|
||||
[(ngModel)]="passwordOptions.length"
|
||||
(change)="savePasswordOptions()"
|
||||
/>
|
||||
<input
|
||||
id="lengthRange"
|
||||
type="range"
|
||||
[min]="passwordOptions.minLength"
|
||||
max="128"
|
||||
step="1"
|
||||
[(ngModel)]="passwordOptions.length"
|
||||
(change)="sliderChanged()"
|
||||
(input)="sliderInput()"
|
||||
attr.aria-label="{{ 'length' | i18n }}"
|
||||
tabindex="-1"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row" appBoxRow>
|
||||
<span>{{ "passwordMinLength" | i18n }}</span>
|
||||
<span
|
||||
class="sr-only"
|
||||
attr.aria-label="{{ 'passwordMinLength' | i18n }}"
|
||||
role="status"
|
||||
aria-live="polite"
|
||||
>
|
||||
{{ passwordOptionsMinLengthForReader$ | async }}
|
||||
</span>
|
||||
<span class="txt-right">{{ passwordOptions.minLength }}</span>
|
||||
</div>
|
||||
<div class="box-content-row box-content-row-checkbox" appBoxRow>
|
||||
<label for="uppercase">A-Z</label>
|
||||
<input
|
||||
id="uppercase"
|
||||
type="checkbox"
|
||||
(change)="savePasswordOptions()"
|
||||
attr.aria-label="{{ 'uppercase' | i18n }}"
|
||||
[disabled]="enforcedPasswordPolicyOptions.useUppercase"
|
||||
[(ngModel)]="passwordOptions.uppercase"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row box-content-row-checkbox" appBoxRow>
|
||||
<label for="lowercase">a-z</label>
|
||||
<input
|
||||
id="lowercase"
|
||||
type="checkbox"
|
||||
(change)="savePasswordOptions()"
|
||||
attr.aria-label="{{ 'lowercase' | i18n }}"
|
||||
[disabled]="enforcedPasswordPolicyOptions.useLowercase"
|
||||
[(ngModel)]="passwordOptions.lowercase"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row box-content-row-checkbox" appBoxRow>
|
||||
<label for="numbers">0-9</label>
|
||||
<input
|
||||
id="numbers"
|
||||
type="checkbox"
|
||||
attr.aria-label="{{ 'numbers' | i18n }}"
|
||||
[disabled]="enforcedPasswordPolicyOptions.useNumbers"
|
||||
[ngModel]="passwordOptions.number"
|
||||
(ngModelChange)="setPasswordOptionsNumber($event)"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row box-content-row-checkbox" appBoxRow>
|
||||
<label for="special">!@#$%^&*</label>
|
||||
<input
|
||||
id="special"
|
||||
type="checkbox"
|
||||
attr.aria-label="{{ 'specialCharacters' | i18n }}"
|
||||
[disabled]="enforcedPasswordPolicyOptions.useSpecial"
|
||||
[ngModel]="passwordOptions.special"
|
||||
(ngModelChange)="setPasswordOptionsSpecial($event)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="box-content">
|
||||
<div class="box-content-row box-content-row-input" appBoxRow>
|
||||
<label for="min-number">{{ "minNumbers" | i18n }}</label>
|
||||
<input
|
||||
id="min-number"
|
||||
type="number"
|
||||
min="0"
|
||||
max="9"
|
||||
[(ngModel)]="passwordOptions.minNumber"
|
||||
(input)="onPasswordOptionsMinNumberInput($event)"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row box-content-row-input" appBoxRow>
|
||||
<label for="min-special">{{ "minSpecial" | i18n }}</label>
|
||||
<input
|
||||
id="min-special"
|
||||
type="number"
|
||||
min="0"
|
||||
max="9"
|
||||
[(ngModel)]="passwordOptions.minSpecial"
|
||||
(input)="onPasswordOptionsMinSpecialInput($event)"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row box-content-row-checkbox" appBoxRow>
|
||||
<label for="ambiguous">{{ "avoidAmbChar" | i18n }}</label>
|
||||
<input
|
||||
id="ambiguous"
|
||||
type="checkbox"
|
||||
(change)="savePasswordOptions()"
|
||||
[(ngModel)]="avoidAmbiguous"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
<div class="box list">
|
||||
<div class="box-content single-line">
|
||||
<a class="box-content-row box-content-row-flex" routerLink="/generator-history">
|
||||
<div class="row-main">{{ "passwordHistory" | i18n }}</div>
|
||||
<i class="bwi bwi-angle-right bwi-lg row-sub-icon" aria-hidden="true"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container *ngIf="type === 'username'">
|
||||
<div class="box">
|
||||
<h2 class="box-header">
|
||||
{{ "options" | i18n }}
|
||||
</h2>
|
||||
<div class="box-content">
|
||||
<div class="box-content-row" role="radiogroup" aria-labelledby="usernameTypeHeading">
|
||||
<label id="usernameTypeHeading" class="radio-header">
|
||||
{{ "usernameType" | i18n }}
|
||||
<a
|
||||
href="https://bitwarden.com/help/generator/#username-types"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||
>
|
||||
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||
</a>
|
||||
</label>
|
||||
<div
|
||||
class="radio-group align-start text-default"
|
||||
appBoxRow
|
||||
*ngFor="let o of usernameTypeOptions"
|
||||
>
|
||||
<input
|
||||
type="radio"
|
||||
[(ngModel)]="usernameOptions.type"
|
||||
name="UsernameType"
|
||||
id="type_{{ o.value }}"
|
||||
[value]="o.value"
|
||||
(change)="saveUsernameOptions()"
|
||||
[checked]="usernameOptions.type === o.value"
|
||||
/>
|
||||
<label for="type_{{ o.value }}">
|
||||
{{ o.name }}
|
||||
<div class="small text-muted" *ngIf="o.desc">
|
||||
{{ o.desc }}
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box" *ngIf="usernameOptions.type === 'forwarded'">
|
||||
<div class="box-content">
|
||||
<div class="box-content-row" role="listbox" aria-labelledby="forwardTypeHeading">
|
||||
<label id="forwardTypeHeading">{{ "service" | i18n }}</label>
|
||||
<select
|
||||
id="ForwardTypeDropdown"
|
||||
name="ForwardType"
|
||||
[(ngModel)]="usernameOptions.forwardedService"
|
||||
(change)="saveUsernameOptions()"
|
||||
>
|
||||
<option *ngFor="let o of forwardOptions" [ngValue]="o.value" role="option">
|
||||
{{ o.name }}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<ng-container *ngIf="usernameOptions.forwardedService === 'simplelogin'">
|
||||
<div class="box-content-row" appBoxRow>
|
||||
<label for="simplelogin-apikey">{{ "apiKey" | i18n }}</label>
|
||||
<input
|
||||
id="simplelogin-apikey"
|
||||
type="password"
|
||||
name="SimpleLoginApiKey"
|
||||
[(ngModel)]="usernameOptions.forwardedSimpleLoginApiKey"
|
||||
(blur)="saveUsernameOptions()"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row" appBoxRow>
|
||||
<label for="simplelogin-baseUrl">{{ "baseUrl" | i18n }}</label>
|
||||
<input
|
||||
id="simplelogin-baseUrl"
|
||||
type="text"
|
||||
name="SimpleLoginDomain"
|
||||
[(ngModel)]="usernameOptions.forwardedSimpleLoginBaseUrl"
|
||||
(blur)="saveUsernameOptions()"
|
||||
/>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container *ngIf="usernameOptions.forwardedService === 'duckduckgo'">
|
||||
<div class="box-content-row" appBoxRow>
|
||||
<label for="duckduckgo-apikey">{{ "apiKey" | i18n }}</label>
|
||||
<input
|
||||
id="duckduckgo-apikey"
|
||||
type="password"
|
||||
name="DuckDuckGoApiKey"
|
||||
[(ngModel)]="usernameOptions.forwardedDuckDuckGoToken"
|
||||
(blur)="saveUsernameOptions()"
|
||||
/>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container *ngIf="usernameOptions.forwardedService === 'anonaddy'">
|
||||
<div class="box-content-row" appBoxRow>
|
||||
<label for="anonaddy-accessToken">{{ "apiAccessToken" | i18n }}</label>
|
||||
<input
|
||||
id="anonaddy-accessToken"
|
||||
type="password"
|
||||
name="AnonAddyAccessToken"
|
||||
[(ngModel)]="usernameOptions.forwardedAnonAddyApiToken"
|
||||
(blur)="saveUsernameOptions()"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row" appBoxRow>
|
||||
<label for="anonaddy-domain">{{ "aliasDomain" | i18n }}</label>
|
||||
<input
|
||||
id="anonaddy-domain"
|
||||
type="text"
|
||||
name="AnonAddyDomain"
|
||||
[(ngModel)]="usernameOptions.forwardedAnonAddyDomain"
|
||||
(blur)="saveUsernameOptions()"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row" appBoxRow>
|
||||
<label for="anonaddy-baseUrl">{{ "baseUrl" | i18n }}</label>
|
||||
<input
|
||||
id="anonaddy-baseUrl"
|
||||
type="text"
|
||||
name="AnonAddyDomain"
|
||||
[(ngModel)]="usernameOptions.forwardedAnonAddyBaseUrl"
|
||||
(blur)="saveUsernameOptions()"
|
||||
/>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container *ngIf="usernameOptions.forwardedService === 'firefoxrelay'">
|
||||
<div class="box-content-row" appBoxRow>
|
||||
<label for="firefox-apikey">{{ "apiAccessToken" | i18n }}</label>
|
||||
<input
|
||||
id="firefox-apikey"
|
||||
type="password"
|
||||
name="FirefoxApiKey"
|
||||
[(ngModel)]="usernameOptions.forwardedFirefoxApiToken"
|
||||
(blur)="saveUsernameOptions()"
|
||||
/>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container *ngIf="usernameOptions.forwardedService === 'fastmail'">
|
||||
<div class="box-content-row" appBoxRow>
|
||||
<label for="fastmail-apiToken">{{ "apiAccessToken" | i18n }}</label>
|
||||
<input
|
||||
id="fastmail-apiToken"
|
||||
type="password"
|
||||
name="FastmailApiToken"
|
||||
[(ngModel)]="usernameOptions.forwardedFastmailApiToken"
|
||||
(blur)="saveUsernameOptions()"
|
||||
/>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container *ngIf="usernameOptions.forwardedService === 'forwardemail'">
|
||||
<div class="box-content-row" appBoxRow>
|
||||
<label for="forwardemail-accessToken">{{ "apiAccessToken" | i18n }}</label>
|
||||
<input
|
||||
id="forwardemail-accessToken"
|
||||
type="password"
|
||||
name="ForwardEmailAccessToken"
|
||||
[(ngModel)]="usernameOptions.forwardedForwardEmailApiToken"
|
||||
(blur)="saveUsernameOptions()"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row" appBoxRow>
|
||||
<label for="forwardemail-domain">{{ "aliasDomain" | i18n }}</label>
|
||||
<input
|
||||
id="forwardemail-domain"
|
||||
type="text"
|
||||
name="ForwardEmailDomain"
|
||||
[(ngModel)]="usernameOptions.forwardedForwardEmailDomain"
|
||||
(blur)="saveUsernameOptions()"
|
||||
/>
|
||||
</div>
|
||||
</ng-container>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box" *ngIf="usernameOptions.type === 'subaddress'">
|
||||
<div class="box-content">
|
||||
<div class="box-content-row" appBoxRow>
|
||||
<label for="subaddress-email">{{ "emailAddress" | i18n }}</label>
|
||||
<input
|
||||
id="subaddress-email"
|
||||
type="text"
|
||||
name="SubaddressEmail"
|
||||
[(ngModel)]="usernameOptions.subaddressEmail"
|
||||
(blur)="saveUsernameOptions()"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
class="box-content-row"
|
||||
role="radiogroup"
|
||||
aria-labelledby="subaddressTypeHeading"
|
||||
*ngIf="subaddressOptions.length > 1"
|
||||
>
|
||||
<label id="subaddressTypeHeading" class="radio-header">{{ "type" | i18n }}</label>
|
||||
<div class="radio-group text-default" appBoxRow *ngFor="let o of subaddressOptions">
|
||||
<input
|
||||
type="radio"
|
||||
[(ngModel)]="usernameOptions.subaddressType"
|
||||
name="SubaddressType"
|
||||
id="subaddresstype_{{ o.value }}"
|
||||
[value]="o.value"
|
||||
(change)="saveUsernameOptions()"
|
||||
[checked]="usernameOptions.subaddressType === o.value"
|
||||
/>
|
||||
<label for="subaddresstype_{{ o.value }}">
|
||||
{{ o.name }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-content-row" appBoxRow *ngIf="usernameWebsite">
|
||||
<label for="subaddress-website">{{ "website" | i18n }}</label>
|
||||
<input
|
||||
id="subaddress-website"
|
||||
type="text"
|
||||
name="SubaddressWebsite"
|
||||
[value]="usernameOptions.website"
|
||||
disabled
|
||||
readonly
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box" *ngIf="usernameOptions.type === 'catchall'">
|
||||
<div class="box-content">
|
||||
<div class="box-content-row" appBoxRow>
|
||||
<label for="catchall-domain">{{ "domainName" | i18n }}</label>
|
||||
<input
|
||||
id="catchall-domain"
|
||||
type="text"
|
||||
name="CatchallDomain"
|
||||
[(ngModel)]="usernameOptions.catchallDomain"
|
||||
(blur)="saveUsernameOptions()"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
class="box-content-row"
|
||||
role="radiogroup"
|
||||
aria-labelledby="catchallTypeHeading"
|
||||
*ngIf="catchallOptions.length > 1"
|
||||
>
|
||||
<label id="catchallTypeHeading" class="radio-header">{{ "type" | i18n }}</label>
|
||||
<div class="radio-group text-default" appBoxRow *ngFor="let o of catchallOptions">
|
||||
<input
|
||||
type="radio"
|
||||
[(ngModel)]="usernameOptions.catchallType"
|
||||
name="CatchallType"
|
||||
id="catchalltype_{{ o.value }}"
|
||||
[value]="o.value"
|
||||
(change)="saveUsernameOptions()"
|
||||
[checked]="usernameOptions.catchallType === o.value"
|
||||
/>
|
||||
<label for="catchalltype_{{ o.value }}">
|
||||
{{ o.name }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-content-row" appBoxRow *ngIf="usernameWebsite">
|
||||
<label for="catchall-website">{{ "website" | i18n }}</label>
|
||||
<input
|
||||
id="catchall-website"
|
||||
type="text"
|
||||
name="CatchallWebsite"
|
||||
[value]="usernameOptions.website"
|
||||
disabled
|
||||
readonly
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box" *ngIf="usernameOptions.type === 'word'">
|
||||
<div class="box-content">
|
||||
<div class="box-content-row box-content-row-checkbox" appBoxRow>
|
||||
<label for="capitalize">{{ "capitalize" | i18n }}</label>
|
||||
<input
|
||||
id="capitalize"
|
||||
type="checkbox"
|
||||
(change)="saveUsernameOptions()"
|
||||
[(ngModel)]="usernameOptions.wordCapitalize"
|
||||
/>
|
||||
</div>
|
||||
<div class="box-content-row box-content-row-checkbox" appBoxRow>
|
||||
<label for="include-number">{{ "includeNumber" | i18n }}</label>
|
||||
<input
|
||||
id="include-number"
|
||||
type="checkbox"
|
||||
(change)="saveUsernameOptions()"
|
||||
[(ngModel)]="usernameOptions.wordIncludeNumber"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
</main>
|
@ -1,88 +0,0 @@
|
||||
// FIXME: Update this file to be type safe and remove this and next line
|
||||
// @ts-strict-ignore
|
||||
import { Location } from "@angular/common";
|
||||
import { Component, NgZone, OnInit } from "@angular/core";
|
||||
import { ActivatedRoute } from "@angular/router";
|
||||
import { firstValueFrom } from "rxjs";
|
||||
|
||||
import { GeneratorComponent as BaseGeneratorComponent } from "@bitwarden/angular/tools/generator/components/generator.component";
|
||||
import { AccountService } from "@bitwarden/common/auth/abstractions/account.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 { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service";
|
||||
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
|
||||
import { AddEditCipherInfo } from "@bitwarden/common/vault/types/add-edit-cipher-info";
|
||||
import { ToastService } from "@bitwarden/components";
|
||||
import {
|
||||
PasswordGenerationServiceAbstraction,
|
||||
UsernameGenerationServiceAbstraction,
|
||||
} from "@bitwarden/generator-legacy";
|
||||
|
||||
@Component({
|
||||
selector: "app-generator",
|
||||
templateUrl: "generator.component.html",
|
||||
})
|
||||
export class GeneratorComponent extends BaseGeneratorComponent implements OnInit {
|
||||
private addEditCipherInfo: AddEditCipherInfo;
|
||||
private cipherState: CipherView;
|
||||
private cipherService: CipherService;
|
||||
|
||||
constructor(
|
||||
passwordGenerationService: PasswordGenerationServiceAbstraction,
|
||||
usernameGenerationService: UsernameGenerationServiceAbstraction,
|
||||
platformUtilsService: PlatformUtilsService,
|
||||
i18nService: I18nService,
|
||||
accountService: AccountService,
|
||||
cipherService: CipherService,
|
||||
route: ActivatedRoute,
|
||||
logService: LogService,
|
||||
ngZone: NgZone,
|
||||
private location: Location,
|
||||
toastService: ToastService,
|
||||
) {
|
||||
super(
|
||||
passwordGenerationService,
|
||||
usernameGenerationService,
|
||||
platformUtilsService,
|
||||
accountService,
|
||||
i18nService,
|
||||
logService,
|
||||
route,
|
||||
ngZone,
|
||||
window,
|
||||
toastService,
|
||||
);
|
||||
this.cipherService = cipherService;
|
||||
}
|
||||
|
||||
async ngOnInit() {
|
||||
this.addEditCipherInfo = await firstValueFrom(this.cipherService.addEditCipherInfo$);
|
||||
if (this.addEditCipherInfo != null) {
|
||||
this.cipherState = this.addEditCipherInfo.cipher;
|
||||
}
|
||||
this.comingFromAddEdit = this.cipherState != null;
|
||||
if (this.cipherState?.login?.hasUris) {
|
||||
this.usernameWebsite = this.cipherState.login.uris[0].hostname;
|
||||
}
|
||||
await super.ngOnInit();
|
||||
}
|
||||
|
||||
select() {
|
||||
super.select();
|
||||
if (this.type === "password") {
|
||||
this.cipherState.login.password = this.password;
|
||||
} else if (this.type === "username") {
|
||||
this.cipherState.login.username = this.username;
|
||||
}
|
||||
this.addEditCipherInfo.cipher = this.cipherState;
|
||||
// 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.cipherService.setAddEditCipherInfo(this.addEditCipherInfo);
|
||||
this.close();
|
||||
}
|
||||
|
||||
close() {
|
||||
this.location.back();
|
||||
}
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
<header>
|
||||
<div class="left">
|
||||
<button type="button" type="button" (click)="close()">
|
||||
<span class="header-icon" aria-hidden="true"><i class="bwi bwi-angle-left"></i></span>
|
||||
<span>{{ "back" | i18n }}</span>
|
||||
</button>
|
||||
</div>
|
||||
<h1 class="center">
|
||||
<span class="title">{{ "passwordHistory" | i18n }}</span>
|
||||
</h1>
|
||||
<div class="right">
|
||||
<button type="button" type="button" (click)="clear()">
|
||||
{{ "clear" | i18n }}
|
||||
</button>
|
||||
</div>
|
||||
</header>
|
||||
<main tabindex="-1">
|
||||
<div class="box list full-list" *ngIf="history && history.length">
|
||||
<div class="box-content">
|
||||
<div class="box-content-row box-content-row-flex" *ngFor="let h of history">
|
||||
<div class="row-main">
|
||||
<div class="row-main-content">
|
||||
<div
|
||||
class="monospaced password-wrapper"
|
||||
[appCopyText]="h.password"
|
||||
[innerHTML]="h.password | colorPassword"
|
||||
></div>
|
||||
<span class="detail">{{ h.date | date: "medium" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="action-buttons">
|
||||
<button
|
||||
type="button"
|
||||
class="row-btn"
|
||||
appStopClick
|
||||
appA11yTitle="{{ 'copyPassword' | i18n }}"
|
||||
(click)="copy(h.password)"
|
||||
>
|
||||
<i class="bwi bwi-lg bwi-clone" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="no-items" *ngIf="!history || !history.length">
|
||||
<p>{{ "noPasswordsInList" | i18n }}</p>
|
||||
</div>
|
||||
</main>
|
@ -1,28 +0,0 @@
|
||||
import { Location } from "@angular/common";
|
||||
import { Component } from "@angular/core";
|
||||
|
||||
import { PasswordGeneratorHistoryComponent as BasePasswordGeneratorHistoryComponent } from "@bitwarden/angular/tools/generator/components/password-generator-history.component";
|
||||
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
||||
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
|
||||
import { ToastService } from "@bitwarden/components";
|
||||
import { PasswordGenerationServiceAbstraction } from "@bitwarden/generator-legacy";
|
||||
|
||||
@Component({
|
||||
selector: "app-password-generator-history",
|
||||
templateUrl: "password-generator-history.component.html",
|
||||
})
|
||||
export class PasswordGeneratorHistoryComponent extends BasePasswordGeneratorHistoryComponent {
|
||||
constructor(
|
||||
passwordGenerationService: PasswordGenerationServiceAbstraction,
|
||||
platformUtilsService: PlatformUtilsService,
|
||||
i18nService: I18nService,
|
||||
private location: Location,
|
||||
toastService: ToastService,
|
||||
) {
|
||||
super(passwordGenerationService, platformUtilsService, i18nService, window, toastService);
|
||||
}
|
||||
|
||||
close() {
|
||||
this.location.back();
|
||||
}
|
||||
}
|
@ -262,13 +262,6 @@ describe("VaultPopupItemsService", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("should sort by last used then by name", (done) => {
|
||||
service.favoriteCiphers$.subscribe((ciphers) => {
|
||||
expect(cipherServiceMock.sortCiphersByLastUsedThenName).toHaveBeenCalled();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it("should filter favoriteCiphers$ down to search term", (done) => {
|
||||
const cipherList = Object.values(allCiphers);
|
||||
const searchText = "Card 2";
|
||||
|
@ -164,16 +164,13 @@ export class VaultPopupItemsService {
|
||||
|
||||
/**
|
||||
* List of favorite ciphers that are not currently suggested for autofill.
|
||||
* Ciphers are sorted by last used date, then by name.
|
||||
* Ciphers are sorted by name.
|
||||
*/
|
||||
favoriteCiphers$: Observable<PopupCipherView[]> = this.autoFillCiphers$.pipe(
|
||||
withLatestFrom(this._filteredCipherList$),
|
||||
map(([autoFillCiphers, ciphers]) =>
|
||||
ciphers.filter((cipher) => cipher.favorite && !autoFillCiphers.includes(cipher)),
|
||||
),
|
||||
map((ciphers) =>
|
||||
ciphers.sort((a, b) => this.cipherService.sortCiphersByLastUsedThenName(a, b)),
|
||||
),
|
||||
shareReplay({ refCount: false, bufferSize: 1 }),
|
||||
);
|
||||
|
||||
|
@ -18,14 +18,14 @@
|
||||
"license": "SEE LICENSE IN LICENSE.txt",
|
||||
"scripts": {
|
||||
"clean": "rimraf dist",
|
||||
"build:oss": "webpack",
|
||||
"build:oss": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" webpack",
|
||||
"build:oss:debug": "npm run build:oss && node --inspect ./build/bw.js",
|
||||
"build:oss:watch": "webpack --watch",
|
||||
"build:oss:prod": "cross-env NODE_ENV=production webpack",
|
||||
"build:oss:prod:watch": "cross-env NODE_ENV=production webpack --watch",
|
||||
"debug": "node --inspect ./build/bw.js",
|
||||
"publish:npm": "npm run build:oss:prod && npm publish --access public",
|
||||
"build:bit": "webpack -c ../../bitwarden_license/bit-cli/webpack.config.js",
|
||||
"build:bit": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" webpack -c ../../bitwarden_license/bit-cli/webpack.config.js",
|
||||
"build:bit:debug": "npm run build:bit && node --inspect ./build/bw.js",
|
||||
"build:bit:watch": "webpack --watch -c ../../bitwarden_license/bit-cli/webpack.config.js",
|
||||
"build:bit:prod": "cross-env NODE_ENV=production npm run build:bit",
|
||||
|
@ -550,7 +550,6 @@ export class ServiceContainer {
|
||||
this.accountService,
|
||||
this.kdfConfigService,
|
||||
this.keyService,
|
||||
this.apiService,
|
||||
customUserAgent,
|
||||
);
|
||||
|
||||
@ -864,19 +863,5 @@ export class ServiceContainer {
|
||||
}
|
||||
|
||||
this.inited = true;
|
||||
|
||||
if (flagEnabled("sdk")) {
|
||||
// Warn if the SDK for some reason can't be initialized
|
||||
let supported = false;
|
||||
try {
|
||||
supported = await firstValueFrom(this.sdkService.supported$);
|
||||
} catch (e) {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
if (!supported) {
|
||||
this.sdkService.failedToInitialize("cli").catch((e) => this.logService.error(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
#[allow(clippy::module_inception)]
|
||||
#[cfg_attr(target_os = "linux", path = "unix.rs")]
|
||||
#[cfg_attr(target_os = "windows", path = "windows.rs")]
|
||||
#[cfg_attr(target_os = "macos", path = "macos.rs")]
|
||||
|
@ -1,5 +1,5 @@
|
||||
use anyhow::Result;
|
||||
|
||||
pub async fn run_command(value: String) -> Result<String> {
|
||||
pub async fn run_command(_value: String) -> Result<String> {
|
||||
todo!("Unix does not support autofill");
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
use anyhow::Result;
|
||||
|
||||
pub async fn run_command(value: String) -> Result<String> {
|
||||
pub async fn run_command(_value: String) -> Result<String> {
|
||||
todo!("Windows does not support autofill");
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
use aes::cipher::generic_array::GenericArray;
|
||||
use anyhow::{anyhow, Result};
|
||||
|
||||
#[allow(clippy::module_inception)]
|
||||
#[cfg_attr(target_os = "linux", path = "unix.rs")]
|
||||
#[cfg_attr(target_os = "windows", path = "windows.rs")]
|
||||
#[cfg_attr(target_os = "macos", path = "macos.rs")]
|
||||
@ -41,6 +42,7 @@ pub trait BiometricTrait {
|
||||
) -> Result<String>;
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
fn encrypt(secret: &str, key_material: &KeyMaterial, iv_b64: &str) -> Result<String> {
|
||||
let iv = base64_engine
|
||||
.decode(iv_b64)?
|
||||
@ -52,9 +54,10 @@ fn encrypt(secret: &str, key_material: &KeyMaterial, iv_b64: &str) -> Result<Str
|
||||
Ok(encrypted.to_string())
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
fn decrypt(secret: &CipherString, key_material: &KeyMaterial) -> Result<String> {
|
||||
if let CipherString::AesCbc256_B64 { iv, data } = secret {
|
||||
let decrypted = crypto::decrypt_aes256(&iv, &data, key_material.derive_key()?)?;
|
||||
let decrypted = crypto::decrypt_aes256(iv, data, key_material.derive_key()?)?;
|
||||
|
||||
Ok(String::from_utf8(decrypted)?)
|
||||
} else {
|
||||
|
@ -33,12 +33,10 @@ impl super::BiometricTrait for Biometric {
|
||||
.await;
|
||||
|
||||
match result {
|
||||
Ok(result) => {
|
||||
return Ok(result.is_authorized);
|
||||
}
|
||||
Ok(result) => Ok(result.is_authorized),
|
||||
Err(e) => {
|
||||
println!("polkit biometric error: {:?}", e);
|
||||
return Ok(false);
|
||||
Ok(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -52,7 +50,7 @@ impl super::BiometricTrait for Biometric {
|
||||
return Ok(true);
|
||||
}
|
||||
}
|
||||
return Ok(false);
|
||||
Ok(false)
|
||||
}
|
||||
|
||||
fn derive_key_material(challenge_str: Option<&str>) -> Result<OsDerivedKey> {
|
||||
@ -68,8 +66,8 @@ impl super::BiometricTrait for Biometric {
|
||||
// so we use a a key derived from the iv. this key is not intended to add any security
|
||||
// but only a place-holder
|
||||
let key = Sha256::digest(challenge);
|
||||
let key_b64 = base64_engine.encode(&key);
|
||||
let iv_b64 = base64_engine.encode(&challenge);
|
||||
let key_b64 = base64_engine.encode(key);
|
||||
let iv_b64 = base64_engine.encode(challenge);
|
||||
Ok(OsDerivedKey { key_b64, iv_b64 })
|
||||
}
|
||||
|
||||
@ -100,7 +98,7 @@ impl super::BiometricTrait for Biometric {
|
||||
|
||||
let encrypted_secret = crate::password::get_password(service, account).await?;
|
||||
let secret = CipherString::from_str(&encrypted_secret)?;
|
||||
return Ok(decrypt(&secret, &key_material)?);
|
||||
decrypt(&secret, &key_material)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -88,14 +88,14 @@ impl super::BiometricTrait for Biometric {
|
||||
let bitwarden = h!("Bitwarden");
|
||||
|
||||
let result = KeyCredentialManager::RequestCreateAsync(
|
||||
&bitwarden,
|
||||
bitwarden,
|
||||
KeyCredentialCreationOption::FailIfExists,
|
||||
)?
|
||||
.get()?;
|
||||
|
||||
let result = match result.Status()? {
|
||||
KeyCredentialStatus::CredentialAlreadyExists => {
|
||||
KeyCredentialManager::OpenAsync(&bitwarden)?.get()?
|
||||
KeyCredentialManager::OpenAsync(bitwarden)?.get()?
|
||||
}
|
||||
KeyCredentialStatus::Success => result,
|
||||
_ => return Err(anyhow!("Failed to create key credential")),
|
||||
@ -116,8 +116,8 @@ impl super::BiometricTrait for Biometric {
|
||||
CryptographicBuffer::CopyToByteArray(&signature_buffer, &mut signature_value)?;
|
||||
|
||||
let key = Sha256::digest(&*signature_value);
|
||||
let key_b64 = base64_engine.encode(&key);
|
||||
let iv_b64 = base64_engine.encode(&challenge);
|
||||
let key_b64 = base64_engine.encode(key);
|
||||
let iv_b64 = base64_engine.encode(challenge);
|
||||
Ok(OsDerivedKey { key_b64, iv_b64 })
|
||||
}
|
||||
|
||||
@ -151,12 +151,12 @@ impl super::BiometricTrait for Biometric {
|
||||
Ok(secret) => {
|
||||
// If the secret is a CipherString, it is encrypted and we need to decrypt it.
|
||||
let secret = decrypt(&secret, &key_material)?;
|
||||
return Ok(secret);
|
||||
Ok(secret)
|
||||
}
|
||||
Err(_) => {
|
||||
// If the secret is not a CipherString, it is not encrypted and we can return it
|
||||
// directly.
|
||||
return Ok(encrypted_secret);
|
||||
Ok(encrypted_secret)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -206,8 +206,8 @@ fn set_focus(window: HWND) {
|
||||
pressed = true;
|
||||
keybd_event(VK_MENU.0 as u8, 0, KEYEVENTF_EXTENDEDKEY, 0);
|
||||
}
|
||||
SetForegroundWindow(window);
|
||||
SetFocus(window);
|
||||
let _ = SetForegroundWindow(window);
|
||||
let _ = SetFocus(window);
|
||||
if pressed {
|
||||
keybd_event(
|
||||
VK_MENU.0 as u8,
|
||||
@ -245,20 +245,21 @@ mod tests {
|
||||
assert_eq!(iv.len(), 16);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[tokio::test]
|
||||
#[cfg(feature = "manual_test")]
|
||||
fn test_prompt() {
|
||||
async fn test_prompt() {
|
||||
<Biometric as BiometricTrait>::prompt(
|
||||
vec![0, 0, 0, 0, 0, 0, 0, 0],
|
||||
String::from("Hello from Rust"),
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[tokio::test]
|
||||
#[cfg(feature = "manual_test")]
|
||||
fn test_available() {
|
||||
assert!(<Biometric as BiometricTrait>::available().unwrap())
|
||||
async fn test_available() {
|
||||
assert!(<Biometric as BiometricTrait>::available().await.unwrap())
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -275,7 +276,7 @@ mod tests {
|
||||
|
||||
match secret {
|
||||
CipherString::AesCbc256_B64 { iv, data: _ } => {
|
||||
assert_eq!(iv_b64, base64_engine.encode(&iv));
|
||||
assert_eq!(iv_b64, base64_engine.encode(iv));
|
||||
}
|
||||
_ => panic!("Invalid cipher string"),
|
||||
}
|
||||
|
@ -9,13 +9,9 @@ use crate::error::{CryptoError, KdfParamError, Result};
|
||||
|
||||
use super::CipherString;
|
||||
|
||||
pub fn decrypt_aes256(
|
||||
iv: &[u8; 16],
|
||||
data: &Vec<u8>,
|
||||
key: GenericArray<u8, U32>,
|
||||
) -> Result<Vec<u8>> {
|
||||
pub fn decrypt_aes256(iv: &[u8; 16], data: &[u8], key: GenericArray<u8, U32>) -> Result<Vec<u8>> {
|
||||
let iv = GenericArray::from_slice(iv);
|
||||
let mut data = data.clone();
|
||||
let mut data = data.to_vec();
|
||||
let decrypted_key_slice = cbc::Decryptor::<aes::Aes256>::new(&key, iv)
|
||||
.decrypt_padded_mut::<Pkcs7>(&mut data)
|
||||
.map_err(|_| CryptoError::KeyDecrypt)?;
|
||||
@ -54,7 +50,7 @@ pub fn argon2(
|
||||
|
||||
let mut hash = [0u8; 32];
|
||||
argon
|
||||
.hash_password_into(secret, &salt, &mut hash)
|
||||
.hash_password_into(secret, salt, &mut hash)
|
||||
.map_err(|e| KdfParamError::InvalidParams(format!("Argon2 hashing failed: {e}",)))?;
|
||||
|
||||
// Argon2 is using some stack memory that is not zeroed. Eventually some function will
|
||||
|
@ -2,4 +2,5 @@ pub use cipher_string::*;
|
||||
pub use crypto::*;
|
||||
|
||||
mod cipher_string;
|
||||
#[allow(clippy::module_inception)]
|
||||
mod crypto;
|
||||
|
@ -4,18 +4,18 @@ use security_framework::passwords::{
|
||||
};
|
||||
|
||||
pub async fn get_password(service: &str, account: &str) -> Result<String> {
|
||||
let result = String::from_utf8(get_generic_password(&service, &account)?)?;
|
||||
let result = String::from_utf8(get_generic_password(service, account)?)?;
|
||||
Ok(result)
|
||||
}
|
||||
|
||||
pub async fn set_password(service: &str, account: &str, password: &str) -> Result<()> {
|
||||
let result = set_generic_password(&service, &account, password.as_bytes())?;
|
||||
Ok(result)
|
||||
set_generic_password(service, account, password.as_bytes())?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn delete_password(service: &str, account: &str) -> Result<()> {
|
||||
let result = delete_generic_password(&service, &account)?;
|
||||
Ok(result)
|
||||
delete_generic_password(service, account)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn is_available() -> Result<bool> {
|
||||
|
@ -1,3 +1,4 @@
|
||||
#[allow(clippy::module_inception)]
|
||||
#[cfg_attr(target_os = "linux", path = "unix.rs")]
|
||||
#[cfg_attr(target_os = "windows", path = "windows.rs")]
|
||||
#[cfg_attr(target_os = "macos", path = "macos.rs")]
|
||||
|
@ -13,7 +13,7 @@ async fn get_password_new(service: &str, account: &str) -> Result<String> {
|
||||
let keyring = oo7::Keyring::new().await?;
|
||||
let attributes = HashMap::from([("service", service), ("account", account)]);
|
||||
let results = keyring.search_items(&attributes).await?;
|
||||
let res = results.get(0);
|
||||
let res = results.first();
|
||||
match res {
|
||||
Some(res) => {
|
||||
let secret = res.secret().await?;
|
||||
@ -31,7 +31,7 @@ async fn get_password_legacy(service: &str, account: &str) -> Result<String> {
|
||||
let keyring = oo7::Keyring::DBus(collection);
|
||||
let attributes = HashMap::from([("service", service), ("account", account)]);
|
||||
let results = keyring.search_items(&attributes).await?;
|
||||
let res = results.get(0);
|
||||
let res = results.first();
|
||||
match res {
|
||||
Some(res) => {
|
||||
let secret = res.secret().await?;
|
||||
|
@ -42,7 +42,7 @@ pub async fn get_password<'a>(service: &str, account: &str) -> Result<String> {
|
||||
.to_string_lossy()
|
||||
};
|
||||
|
||||
Ok(String::from(password))
|
||||
Ok(password)
|
||||
}
|
||||
|
||||
pub async fn set_password(service: &str, account: &str, password: &str) -> Result<()> {
|
||||
|
@ -1,3 +1,4 @@
|
||||
#[allow(clippy::module_inception)]
|
||||
#[cfg_attr(target_os = "linux", path = "linux.rs")]
|
||||
#[cfg_attr(target_os = "windows", path = "unimplemented.rs")]
|
||||
#[cfg_attr(target_os = "macos", path = "unimplemented.rs")]
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user