mirror of
https://github.com/bitwarden/browser.git
synced 2025-02-14 01:01:31 +01:00
Merge remote-tracking branch 'origin/main' into auth/pm-8113/2fa-comps-ui-refresh + merge conflict fixes
This commit is contained in:
commit
5c49f6edb3
21
.github/CODEOWNERS
vendored
21
.github/CODEOWNERS
vendored
@ -83,6 +83,19 @@ apps/web/src/utils/ @bitwarden/team-platform-dev
|
||||
apps/web/src/app/core @bitwarden/team-platform-dev
|
||||
apps/web/src/app/shared @bitwarden/team-platform-dev
|
||||
apps/web/src/translation-constants.ts @bitwarden/team-platform-dev
|
||||
# Workflows
|
||||
.github/workflows/brew-bump-desktop.yml @bitwarden/team-platform-dev
|
||||
.github/workflows/build-browser.yml @bitwarden/team-platform-dev
|
||||
.github/workflows/build-cli.yml @bitwarden/team-platform-dev
|
||||
.github/workflows/build-desktop.yml @bitwarden/team-platform-dev
|
||||
.github/workflows/build-web.yml @bitwarden/team-platform-dev
|
||||
.github/workflows/chromatic.yml @bitwarden/team-platform-dev
|
||||
.github/workflows/lint.yml @bitwarden/team-platform-dev
|
||||
.github/workflows/locales-lint.yml @bitwarden/team-platform-dev
|
||||
.github/workflows/repository-management.yml @bitwarden/team-platform-dev
|
||||
.github/workflows/scan.yml @bitwarden/team-platform-dev
|
||||
.github/workflows/test.yml @bitwarden/team-platform-dev
|
||||
.github/workflows/version-auto-bump.yml @bitwarden/team-platform-dev
|
||||
|
||||
## Autofill team files ##
|
||||
apps/browser/src/autofill @bitwarden/team-autofill-dev
|
||||
@ -92,7 +105,8 @@ apps/desktop/macos/autofill-extension @bitwarden/team-autofill-dev
|
||||
# DuckDuckGo integration
|
||||
apps/desktop/native-messaging-test-runner @bitwarden/team-autofill-dev
|
||||
apps/desktop/src/services/duckduckgo-message-handler.service.ts @bitwarden/team-autofill-dev
|
||||
|
||||
# SSH Agent
|
||||
apps/desktop/desktop_native/core/src/ssh_agent @bitwarden/team-autofill-dev @bitwarden/wg-ssh-keys
|
||||
|
||||
## Component Library ##
|
||||
.storybook @bitwarden/team-design-system
|
||||
@ -125,9 +139,6 @@ apps/cli/src/locales/en/messages.json
|
||||
apps/desktop/src/locales/en/messages.json
|
||||
apps/web/src/locales/en/messages.json
|
||||
|
||||
## Ssh agent temporary co-codeowner
|
||||
apps/desktop/desktop_native/core/src/ssh_agent @bitwarden/team-platform-dev @bitwarden/wg-ssh-keys
|
||||
|
||||
## BRE team owns these workflows ##
|
||||
.github/workflows/brew-bump-desktop.yml @bitwarden/dept-bre
|
||||
.github/workflows/deploy-web.yml @bitwarden/dept-bre
|
||||
@ -143,8 +154,6 @@ apps/desktop/desktop_native/core/src/ssh_agent @bitwarden/team-platform-dev @bit
|
||||
.github/workflows/release-desktop-beta.yml
|
||||
.github/workflows/release-desktop.yml
|
||||
.github/workflows/release-web.yml
|
||||
.github/workflows/version-auto-bump.yml
|
||||
.github/workflows/version-bump.yml
|
||||
|
||||
## Docker files have shared ownership ##
|
||||
**/Dockerfile
|
||||
|
35
.github/workflows/build-web.yml
vendored
35
.github/workflows/build-web.yml
vendored
@ -174,6 +174,9 @@ jobs:
|
||||
build-containers:
|
||||
name: Build Docker images
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
security-events: write
|
||||
id-token: write
|
||||
needs:
|
||||
- setup
|
||||
- build-artifacts
|
||||
@ -270,6 +273,7 @@ jobs:
|
||||
run: echo "name=$_AZ_REGISTRY/${PROJECT_NAME}:${IMAGE_TAG}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Build Docker image
|
||||
id: build-docker
|
||||
uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0
|
||||
with:
|
||||
context: apps/web
|
||||
@ -279,11 +283,40 @@ jobs:
|
||||
tags: ${{ steps.image-name.outputs.name }}
|
||||
secrets: |
|
||||
"GH_PAT=${{ steps.retrieve-secret-pat.outputs.github-pat-bitwarden-devops-bot-repo-scope }}"
|
||||
|
||||
- name: Install Cosign
|
||||
if: github.event_name != 'pull_request_target' && github.ref == 'refs/heads/main'
|
||||
uses: sigstore/cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da # v3.7.0
|
||||
|
||||
- name: Sign image with Cosign
|
||||
if: github.event_name != 'pull_request_target' && github.ref == 'refs/heads/main'
|
||||
env:
|
||||
DIGEST: ${{ steps.build-docker.outputs.digest }}
|
||||
TAGS: ${{ steps.image-name.outputs.name }}
|
||||
run: |
|
||||
IFS="," read -a tags <<< "${TAGS}"
|
||||
images=""
|
||||
for tag in "${tags[@]}"; do
|
||||
images+="${tag}@${DIGEST} "
|
||||
done
|
||||
cosign sign --yes ${images}
|
||||
|
||||
- name: Scan Docker image
|
||||
id: container-scan
|
||||
uses: anchore/scan-action@5ed195cc06065322983cae4bb31e2a751feb86fd # v5.2.0
|
||||
with:
|
||||
image: ${{ steps.image-name.outputs.name }}
|
||||
fail-build: false
|
||||
output-format: sarif
|
||||
|
||||
- name: Upload Grype results to GitHub
|
||||
uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0
|
||||
with:
|
||||
sarif_file: ${{ steps.container-scan.outputs.sarif }}
|
||||
|
||||
- name: Log out of Docker
|
||||
run: docker logout
|
||||
|
||||
|
||||
crowdin-push:
|
||||
name: Crowdin Push
|
||||
if: github.event_name != 'pull_request_target' && github.ref == 'refs/heads/main'
|
||||
|
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"
|
||||
|
2
.github/workflows/scan.yml
vendored
2
.github/workflows/scan.yml
vendored
@ -66,7 +66,7 @@ jobs:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
|
||||
- name: Scan with SonarCloud
|
||||
uses: sonarsource/sonarcloud-github-action@383f7e52eae3ab0510c3cb0e7d9d150bbaeab838 # v3.1.0
|
||||
uses: sonarsource/sonarcloud-github-action@02ef91109b2d589e757aefcfb2854c2783fd7b19 # v4.0.0
|
||||
env:
|
||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@bitwarden/browser",
|
||||
"version": "2024.12.0",
|
||||
"version": "2024.12.3",
|
||||
"scripts": {
|
||||
"build": "npm run build:chrome",
|
||||
"build:chrome": "cross-env BROWSER=chrome MANIFEST_VERSION=3 webpack",
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "هوية التعبئة التلقائية"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "إنشاء كلمة مرور (تم النسخ)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "أدخل رمز التحقق من 6 أرقام من تطبيق المصادقة الخاص بك."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "أدخل رمز التحقق المكون من 6 أرقام الذي تم إرساله إلى $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "عرض جميع خيارات تسجيل الدخول"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "تم إرسال إشعار إلى جهازك."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "ملء بيانات الاعتماد لـ",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -26,7 +26,7 @@
|
||||
"message": "Keçid açarı ilə giriş et"
|
||||
},
|
||||
"useSingleSignOn": {
|
||||
"message": "Tək daxil olma üsulunu istifadə et"
|
||||
"message": "Vahid daxil olma üsulunu istifadə et"
|
||||
},
|
||||
"welcomeBack": {
|
||||
"message": "Yenidən xoş gəlmisiniz"
|
||||
@ -38,7 +38,7 @@
|
||||
"message": "Bir parol təyin edərək hesabınızı yaratmağı başa çatdırın"
|
||||
},
|
||||
"enterpriseSingleSignOn": {
|
||||
"message": "Müəssisə üçün tək daxil olma"
|
||||
"message": "Müəssisə üçün vahid daxil olma"
|
||||
},
|
||||
"cancel": {
|
||||
"message": "İmtina"
|
||||
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Kimliyi avto-doldur"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Parol yarat (kopyalandı)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Kimlik doğrulayıcı tətbiqindən 6 rəqəmli doğrulama kodunu daxil edin."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Kimlik doğrulama vaxtı bitdi"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "Kimlik doğrulama seansının vaxtı bitdi. Lütfən giriş prosesini yenidən başladın."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "$EMAIL$ ünvanına göndərilən e-poçtdakı 6 rəqəmli doğrulama kodunu daxil edin.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Bütün giriş seçimlərinə bax"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "Bütün giriş seçimlərinə bax"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Hesabınızın kilidini açın, yeni bir pəncərədə açılır",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Kimlik məlumatlarını doldur",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Аўтазапаўненне асабістых даных"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Генерыраваць пароль (з капіяваннем)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Увядзіце 6 лічбаў праверачнага кода з вашай праграмы аўтэнтыфікацыі."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Увядзіце 6 лічбаў праверачнага кода, які быў адпраўлены на $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Паглядзець усе варыянты ўваходу"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "Апавяшчэнне было адпраўлена на вашу прыладу."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Самопопълваща се самоличност"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Попълване на кода за потвърждаване"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Попълване на кода за потвърждаване",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Генериране на парола (копирана)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Въведете шестцифрения код за потвърждение от приложението за удостоверяване."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Време на давност за удостоверяването"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "Сесията за удостоверяване е изтекла. Моля, започнете отначало процеса по вписване."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Въведете шестцифрения код за потвърждение, който е бил изпратен на $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Вижте всички възможности за вписване"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "Вижте всички възможности за вписване"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Отклюване на регистрацията, отваря се в нов прозорец",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Код за потвърждение на еднократната времево-ограничена парола",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Оставащо време преди изтичането на текущия код",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Попълване на данните за",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
@ -4884,10 +4905,10 @@
|
||||
"message": "Генерирана парола"
|
||||
},
|
||||
"compactMode": {
|
||||
"message": "Compact mode"
|
||||
"message": "Компактен режим"
|
||||
},
|
||||
"beta": {
|
||||
"message": "Beta"
|
||||
"message": "Бета"
|
||||
},
|
||||
"extensionWidth": {
|
||||
"message": "Ширина на разширението"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "পাসওয়ার্ড তৈরি করুন (অনুলিপিকৃত)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "আপনার প্রমাণীকরণকারী অ্যাপ থেকে ৬ সংখ্যার যাচাইকরণ কোডটি প্রবেশ করুন।"
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "$EMAIL$ এ ইমেইল করা ৬ সংখ্যার যাচাই কোডটি প্রবেশ করুন।",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate password (copied)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Emplena automàticament l'identitat"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Genera contrasenya (copiada)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Introduïu el codi de verificació de 6 dígits de l'aplicació autenticadora."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Introduïu el codi de verificació de 6 dígits que s'ha enviat per correu electrònic a $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Veure totes les opcions d'inici de sessió"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "S'ha enviat una notificació al vostre dispositiu."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Ompliu les credencials per a",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Automaticky vyplnit identitu"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Vyplnit ověřovací kód"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Vyplnit ověřovací kód",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Vygenerovat heslo a zkopírovat do schránky"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Zadejte 6místný kód z ověřovací aplikace."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Časový limit ověření"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "Vypršel časový limit relace ověřování. Restartujte proces přihlášení."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Zadejte 6místný kód z e-mailu, který byl zaslán na $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Zobrazit všechny volby přihlášení"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "Zobrazit všechny volby přihlášení"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Odemknout účet, otevře se v novém okně",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Ověřovací kód TOTP",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Zbývající čas před vypršením aktuálního TOTP",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Vyplnit přihlašovací údaje pro",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Llenwi hunaniaeth"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Cynhyrchu cyfrinair (wedi'i gopïo)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Gweld pob dewis mewngofnodi"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "A notification has been sent to your device."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autoudfyld identitet"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Udfyld bekræftelseskode"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Udfyld bekræftelseskode",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generér adgangskode (kopieret)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Indtast den 6-cifrede verifikationskode fra din autentificerings-app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Godkendelsestimeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "Godkendelsessessionen fik timeout. Genstart loginprocessen."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Indtast den 6-cifrede verifikationskode, der blev sendt til $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Vis alle indlogningsmuligheder"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "Vis alle indlogningsmuligheder"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Oplås kontoen, åbnes i et nyt vindue",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Tidsbaseret engangs adgangskodebekræftelseskode",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Resterende tid før udløb af aktuel TOTP",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Angiv legitimationsoplysninger for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Identität automatisch ausfüllen"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Verifizierungscode eingeben"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Verifizierungscode eingeben",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Passwort generieren (kopiert)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Gib den 6-stelligen Verifizierungscode aus deiner Authenticator App ein."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentifizierungs-Timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "Die Authentifizierungssitzung ist abgelaufen. Bitte starte den Anmeldeprozess neu."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Gib den 6-stelligen Bestätigungscode ein, der an $EMAIL$ gesendet wurde.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Alle Anmeldeoptionen anzeigen"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "Alle Anmeldeoptionen anzeigen"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Dein Konto entsperren, öffnet sich in einem neuen Fenster",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Zeitbasierter einmaliger Passwort-Verifizierungscode",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Verbleibende Zeit bis zum Ablauf des aktuellen TOTP",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Zugangsdaten ausfüllen für",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Αυτόματη συμπλήρωση ταυτότητας"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Δημιουργία κωδικού πρόσβασης (αντιγράφηκε)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Εισάγετε τον 6ψήφιο κωδικό από την εφαρμογή επαλήθευσης."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Εισάγετε τον 6ψήφιο κωδικό επαλήθευσης τον οποίο λάβατε στο $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Δείτε όλες τις επιλογές σύνδεσης"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "Μια ειδοποίηση έχει σταλεί στη συσκευή σας."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Ξεκλείδωμα του λογαριασμού σας, ανοίγει σε νέο παράθυρο",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Συμπλήρωση στοιχείων για",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate password (copied)"
|
||||
},
|
||||
@ -641,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."
|
||||
},
|
||||
@ -3173,7 +3177,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3580,6 +3584,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
@ -4664,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"
|
||||
},
|
||||
@ -4895,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"
|
||||
},
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Auto-fill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate password (copied)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Auto-fill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate password (copied)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -20,7 +20,7 @@
|
||||
"message": "Crear cuenta"
|
||||
},
|
||||
"newToBitwarden": {
|
||||
"message": "New to Bitwarden?"
|
||||
"message": "¿Nuevo en Bitwarden?"
|
||||
},
|
||||
"logInWithPasskey": {
|
||||
"message": "Log in with passkey"
|
||||
@ -29,7 +29,7 @@
|
||||
"message": "Use single sign-on"
|
||||
},
|
||||
"welcomeBack": {
|
||||
"message": "Welcome back"
|
||||
"message": "Bienvenido de nuevo"
|
||||
},
|
||||
"setAStrongPassword": {
|
||||
"message": "Establece una contraseña fuerte"
|
||||
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autocompletar identidad"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generar contraseña (copiada)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Introduce el código de verificación de 6 dígitos de tu aplicación autenticadora."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Introduce el código de verificación de 6 dígitos que te ha sido enviado por correo electrónico",
|
||||
"placeholders": {
|
||||
@ -1472,7 +1485,7 @@
|
||||
"message": "Display identities as suggestions"
|
||||
},
|
||||
"showInlineMenuCardsLabel": {
|
||||
"message": "Display cards as suggestions"
|
||||
"message": "Mostrar tarjetas como sugerencias"
|
||||
},
|
||||
"showInlineMenuOnIconSelectionLabel": {
|
||||
"message": "Display suggestions when icon is selected"
|
||||
@ -1511,7 +1524,7 @@
|
||||
"message": "Los sitios web vulnerados o no confiables pueden explotar el autorelleno al cargar la página."
|
||||
},
|
||||
"learnMoreAboutAutofillOnPageLoadLinkText": {
|
||||
"message": "Learn more about risks"
|
||||
"message": "Más información sobre riesgos"
|
||||
},
|
||||
"learnMoreAboutAutofill": {
|
||||
"message": "Más información sobre el relleno automático"
|
||||
@ -1580,7 +1593,7 @@
|
||||
"message": "Booleano"
|
||||
},
|
||||
"cfTypeCheckbox": {
|
||||
"message": "Checkbox"
|
||||
"message": "Casilla de verificación"
|
||||
},
|
||||
"cfTypeLinked": {
|
||||
"message": "Vinculado",
|
||||
@ -2391,7 +2404,7 @@
|
||||
"message": "Texto"
|
||||
},
|
||||
"sendTypeTextToShare": {
|
||||
"message": "Text to share"
|
||||
"message": "Texto a compartir"
|
||||
},
|
||||
"sendTypeFile": {
|
||||
"message": "Archivo"
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Ver todas las opciones de acceso"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "Se ha enviado una notificación a tu dispositivo."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Rellenar credenciales para",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Täida identiteet"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Genereeri parool (kopeeritakse)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Sisesta autentimise rakendusest 6 kohaline number."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Sisesta 6 kohaline number, mis saadeti e-posti aadressile $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Vaata kõiki valikuid"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "Sinu seadmesse saadeti teavitus."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Auto-bete nortasuna"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Sortu pasahitza (kopiatuta)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Sartu zure autentifikazio aplikazioaren 6 digituko egiaztatze kodea."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Sartu $EMAIL$-era bidalitako 6 digituko egiaztatze-kodea.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Ikusi erregistro guztiak ezarpenetan"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "A notification has been sent to your device."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "پر کردن خودکار هویت"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "ساخت کلمه عبور (کپی شد)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "کد ۶ رقمی تأیید را از برنامه احراز هویت وارد کنید."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "کد ۶ رقمی تأیید را که به $EMAIL$ ایمیل شده را وارد کنید.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "مشاهده همه گزینههای ورود به سیستم"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "یک اعلان به دستگاه شما ارسال شده است."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Automaattitäytä henkilöllisyys"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Luo salasana (leikepöydälle)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Syötä todennussovelluksesi näyttämä kuusinumeroinen todennuskoodi."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Todennuksen aikakatkaisu"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "Todennusistunto aikakatkaistiin. Ole hyvä ja aloita kirjautumisprosessi uudelleen."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Syötä osoitteeseen $EMAIL$ lähetetty kuusinumeroinen todennuskoodi.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Näytä kaikki kirjautumisvaihtoehdot"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "Näytä kaikki kirjautumisvaihtoehdot"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Avaa tilisi lukitus. Avautuu uudessa ikkunassa.",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Täytä kirjautumistiedot kohteesta",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
@ -4890,12 +4911,12 @@
|
||||
"message": "Beta"
|
||||
},
|
||||
"extensionWidth": {
|
||||
"message": "Extension width"
|
||||
"message": "Laajennuksen leveys"
|
||||
},
|
||||
"wide": {
|
||||
"message": "Wide"
|
||||
"message": "Leveä"
|
||||
},
|
||||
"extraWide": {
|
||||
"message": "Extra wide"
|
||||
"message": "Erittäin leveä"
|
||||
}
|
||||
}
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Awtomatikong punan ang pagkakakilanlan"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Maglagay ng Password"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Ipasok ang 6 na digit na code ng pagpapatunay mula sa iyong authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Ipasok ang 6 na digit na code na na-email sa $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Tingnan ang lahat ng mga pagpipilian sa pag log in"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "Naipadala na ang notification sa iyong device."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Saisie automatique de l'identité"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Remplir le code de vérification"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Remplir le code de vérification",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Générer un mot de passe (copié)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Saisissez le code de vérification à 6 chiffres depuis votre application d'authentification."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Délai d'authentification dépassé"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "La session d'authentification a expiré. Veuillez redémarrer le processus de connexion."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Saisissez le code de vérification à 6 chiffres qui a été envoyé par courriel à $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Afficher toutes les options de connexion"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "Afficher toutes les options de connexion"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Déverrouiller votre compte, s'ouvre dans une nouvelle fenêtre",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Code de vérification de mot de passe unique basé sur le temps",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Temps restant avant l'expiration du TOTP actuel",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Remplir les identifiants pour",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Encher automaticamente identidade"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Xerar contrasinal (copiado)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "מילוי פרטי זיהוי אוטומטית"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "צור סיסמה (העתק)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "הכנס את קוד האימות בן 6 הספרות מאפליקציית האימות שלך."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "הכנס את קוד האימות בן 6 הספרות שנשלח ל-$EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "स्वचालित पहचान विवरण"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate Password (copied)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "अपने ऑथेंटिकेटर ऐप से 6 डिजिट वेरिफिकेशन कोड डालें।"
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Auto-ispuna identiteta"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generiraj lozinku (i kopiraj)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Unesi 6-znamenkasti kontrolni kôd iz autentifikatorske aplikacije."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Unesi 6-znamenkasti kontrolni kôd poslan e-poštom na $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Pogledaj sve mogućnosti prijave"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "Obavijest je poslana na tvoj uređaj."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Otključaj račun; otvara se u novom prozoru",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Unesi vjerodajnice za",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Automatikus kitöltés személyazonosság"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Ellenőrző kód kitöltése"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Ellenőrző Kód kitöltése",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Jelszó generálás (másolt)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Add meg a 6 számjegyű ellenőrző kódot a hitelesítő alkalmazásodból."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Hitelesítési időkifutás"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "A hitelesítési munkamenet időkifutással lejárt. Indítsuk újra a bejelentkezési folyamatot."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "$EMAIL$ email címre elküldött 6 számjegyű ellenőrző kód megadása.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Összes bejelentkezési opció megtekintése"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "Összes bejelentkezési opció megtekintése"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Oldjuk fel a fiók zárolását, új ablakban nyílik meg.",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Időalapú, egyszeri jelszó ellenőrző kód",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "A jelenlegi TOTP lejártáig hátralévő idő",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Töltse kia hitelesítő adatokat",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Riempi automaticamente identità"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Genera password e copiala"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Inserisci il codice di verifica a 6 cifre dalla tua app di autenticazione."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Inserisci il codice di verifica a 6 cifre inviato a $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Visualizza tutte le opzioni di accesso"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "Una notifica è stata inviata al tuo dispositivo."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Sblocca il tuo account, apri in una nuova finestra",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Riempi le credenziali per",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "自動入力 ID"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "パスワードを生成 (コピー)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "認証アプリに表示された6桁の認証コードを入力してください。"
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "$EMAIL$に送信された6桁の認証コードを入力してください。",
|
||||
"placeholders": {
|
||||
@ -1469,10 +1482,10 @@
|
||||
"message": "フォームフィールドに自動入力の候補を表示する"
|
||||
},
|
||||
"showInlineMenuIdentitiesLabel": {
|
||||
"message": "Display identities as suggestions"
|
||||
"message": "ID を候補として表示する"
|
||||
},
|
||||
"showInlineMenuCardsLabel": {
|
||||
"message": "Display cards as suggestions"
|
||||
"message": "カードを候補として表示する"
|
||||
},
|
||||
"showInlineMenuOnIconSelectionLabel": {
|
||||
"message": "アイコンが選択されているときに候補を表示する"
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "すべてのログインオプションを表示"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "デバイスに通知を送信しました。"
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "アカウントのロックを解除し、新しいウィンドウで開く",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "資格情報を入力:",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate password (copied)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate password (copied)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "ಪಾಸ್ವರ್ಡ್ ರಚಿಸಿ (ನಕಲಿಸಲಾಗಿದೆ)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "ನಿಮ್ಮ ದೃಢೀಕರಣ ಅಪ್ಲಿಕೇಶನ್ನಿಂದ 6 ಅಂಕಿಯ ಪರಿಶೀಲನಾ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "$EMAIL$ಗೆ ಇಮೇಲ್ ಮಾಡಲಾದ 6 ಅಂಕಿಯ ಪರಿಶೀಲನಾ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Tapatybės automatinis užpildymas"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Sukurti slaptažodį (nukopijuotas)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Įvesk 6 skaitmenų patvirtinimo kodą iš tavo autentifikavimo aplikacijos."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Įvesk 6 skaitmenų prisijungimo kodą, kuris buvo išsiųstas $EMAIL$ el. paštu.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Atrakinti savo paskyrą, atidaromas naujame lange",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Užpildykite prisijungimo duomenis",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Automātiski aizpildīt identitāti"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Aizpildīt apliecinājuma kodu"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Aizpildīt apliecinājuma kodu",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Izveidot paroli (tiks ievietota starpliktuvē)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Jāievada 6 ciparu apstiprinājuma kods no autentificētāja lietotnes."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Autentificēšanās noildze"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "Iestājās autentificēšanās sesijas noildze. Lūgums sākt pieteikšanos no jauna."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Jāievada 6 ciparu apstiprinājuma kods, kas tika nosūtīts uz $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Skatīt visas pieteikšanās iespējas"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "Skatīt visas pieteikšanās iespējas"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Atslēgt savu kontu, tiks atvērts jaunā logā",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Laikā balstīts vienreizējas izmantošanas paroles apliecināšanas kods",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Atlikušais laiks, pirms beigsies pašreizējā TOTP derīgums",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Aizpildīt pieteikšanās datus",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "പാസ്വേഡ് സൃഷ്ടിക്കുക (പകർത്തുക )"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "നിങ്ങളുടെ ഓതന്റിക്കേറ്റർ അപ്ലിക്കേഷനിൽ നിന്ന് 6 അക്ക സ്ഥിരീകരണ കോഡ് നൽകുക."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "$EMAIL$ൽ ഇമെയിൽ ചെയ്ത 6 അക്ക സ്ഥിരീകരണ കോഡ് നൽകുക",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate password (copied)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate password (copied)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Auto-utfyll identitet"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generer et passord (kopiert)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Skriv inn den 6-sifrede verifiseringskoden som står på din autentiseringsapp."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Skriv inn den 6-sifrede verifiseringskoden som ble sendt til",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Vis alle innloggingsalternativer"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "Et varsel er sendt til enheten din."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate password (copied)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Identiteit automatisch invullen"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Verificatiecode invullen"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Verificatiecode invullen",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Wachtwoord genereren (op klembord)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Voer de 6-cijferige verificatiecode uit je authenticatie-app in."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authenticatie-timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "De verificatiesessie is verlopen. Start het inlogproces opnieuw op."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Voer de 6-cijferige verificatiecode in die via e-mail is verstuurd naar $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Alle inlogopties bekijken"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Alle loginopties bekijken"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "Er is een melding naar je apparaat verzonden."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Je account ontgrendelen, opent in een nieuw venster",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-gebaseerde eenmalige wachtwoord verificatiecode",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Resterende tijd voordat de huidige TOTP vervalt",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Inloggegevens invullen voor",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate password (copied)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate password (copied)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -177,7 +177,7 @@
|
||||
"message": "Kopiuj notatki"
|
||||
},
|
||||
"fill": {
|
||||
"message": "Fill",
|
||||
"message": "Wypełnij",
|
||||
"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": {
|
||||
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autouzupełnianie tożsamości"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Wygeneruj hasło (do schowka)"
|
||||
},
|
||||
@ -999,7 +1006,7 @@
|
||||
"message": "Pokaż elementy karty na stronie głównej, aby ułatwić autouzupełnianie."
|
||||
},
|
||||
"showIdentitiesInVaultView": {
|
||||
"message": "Pokaż tożsamośći jako sugestie autouzupełniania w widoku sejfu"
|
||||
"message": "Pokaż tożsamości jako sugestie autouzupełniania w widoku sejfu"
|
||||
},
|
||||
"showIdentitiesCurrentTab": {
|
||||
"message": "Pokaż tożsamości na stronie głównej"
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Wpisz 6-cyfrowy kod weryfikacyjny z aplikacji uwierzytelniającej."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Wpisz 6-cyfrowy kod weryfikacyjny, który został przesłany na adres $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -1765,7 +1778,7 @@
|
||||
"message": "Tożsamość"
|
||||
},
|
||||
"typeSshKey": {
|
||||
"message": "SSH key"
|
||||
"message": "Klucz SSH"
|
||||
},
|
||||
"newItemHeader": {
|
||||
"message": "Nowy $TYPE$",
|
||||
@ -1798,13 +1811,13 @@
|
||||
"message": "Historia hasła"
|
||||
},
|
||||
"generatorHistory": {
|
||||
"message": "Generator history"
|
||||
"message": "Historia generatora"
|
||||
},
|
||||
"clearGeneratorHistoryTitle": {
|
||||
"message": "Clear generator history"
|
||||
"message": "Wyczyść historię generatora"
|
||||
},
|
||||
"cleargGeneratorHistoryDescription": {
|
||||
"message": "If you continue, all entries will be permanently deleted from generator's history. Are you sure you want to continue?"
|
||||
"message": "Jeśli zatwierdzisz, wszystkie wygenerowane hasła zostaną usunięte z historii generatora. Czy chcesz kontynuować mimo to?"
|
||||
},
|
||||
"back": {
|
||||
"message": "Powrót"
|
||||
@ -1843,7 +1856,7 @@
|
||||
"message": "Bezpieczne notatki"
|
||||
},
|
||||
"sshKeys": {
|
||||
"message": "SSH Keys"
|
||||
"message": "Klucze SSH"
|
||||
},
|
||||
"clear": {
|
||||
"message": "Wyczyść",
|
||||
@ -1926,10 +1939,10 @@
|
||||
"message": "Wyczyść historię"
|
||||
},
|
||||
"nothingToShow": {
|
||||
"message": "Nothing to show"
|
||||
"message": "Brak zawartości do pokazania"
|
||||
},
|
||||
"nothingGeneratedRecently": {
|
||||
"message": "You haven't generated anything recently"
|
||||
"message": "Nic nie zostało wygenerowane przez ciebie w ostatnim czasie"
|
||||
},
|
||||
"remove": {
|
||||
"message": "Usuń"
|
||||
@ -2884,7 +2897,7 @@
|
||||
"message": "Generate email"
|
||||
},
|
||||
"spinboxBoundariesHint": {
|
||||
"message": "Value must be between $MIN$ and $MAX$.",
|
||||
"message": "Wartość musi być pomiędzy $MIN$ a $MAX$.",
|
||||
"description": "Explains spin box minimum and maximum values to the user",
|
||||
"placeholders": {
|
||||
"min": {
|
||||
@ -2898,7 +2911,7 @@
|
||||
}
|
||||
},
|
||||
"passwordLengthRecommendationHint": {
|
||||
"message": " Use $RECOMMENDED$ characters or more to generate a strong password.",
|
||||
"message": " Użyj $RECOMMENDED$ znaków lub więcej, aby wygenerować silne hasło.",
|
||||
"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": {
|
||||
@ -2908,7 +2921,7 @@
|
||||
}
|
||||
},
|
||||
"passphraseNumWordsRecommendationHint": {
|
||||
"message": " Use $RECOMMENDED$ words or more to generate a strong passphrase.",
|
||||
"message": " Użyj $RECOMMENDED$ słów lub więcej, aby wygenerować silne hasło.",
|
||||
"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": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Zobacz wszystkie sposoby logowania"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "Powiadomienie zostało wysłane na urządzenie."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Odblokuj swoje konto, otwiera się w nowym oknie",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Wypełnij dane logowania dla",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
@ -4665,28 +4686,28 @@
|
||||
"message": "Do tego ustalenia zastosowano wymogi polityki przedsiębiorstw"
|
||||
},
|
||||
"sshPrivateKey": {
|
||||
"message": "Private key"
|
||||
"message": "Klucz prywatny"
|
||||
},
|
||||
"sshPublicKey": {
|
||||
"message": "Public key"
|
||||
"message": "Klucz publiczny"
|
||||
},
|
||||
"sshFingerprint": {
|
||||
"message": "Fingerprint"
|
||||
},
|
||||
"sshKeyAlgorithm": {
|
||||
"message": "Key type"
|
||||
"message": "Typ klucza"
|
||||
},
|
||||
"sshKeyAlgorithmED25519": {
|
||||
"message": "ED25519"
|
||||
},
|
||||
"sshKeyAlgorithmRSA2048": {
|
||||
"message": "RSA 2048-Bit"
|
||||
"message": "RSA 2048-Bitowy"
|
||||
},
|
||||
"sshKeyAlgorithmRSA3072": {
|
||||
"message": "RSA 3072-Bit"
|
||||
"message": "RSA 3072-Bitowy"
|
||||
},
|
||||
"sshKeyAlgorithmRSA4096": {
|
||||
"message": "RSA 4096-Bit"
|
||||
"message": "RSA 4096-Bitowy"
|
||||
},
|
||||
"retry": {
|
||||
"message": "Powtórz"
|
||||
@ -4731,7 +4752,7 @@
|
||||
"message": "Uwierzytelnianie"
|
||||
},
|
||||
"fillGeneratedPassword": {
|
||||
"message": "Fill generated password",
|
||||
"message": "Uzupełnij wygenerowanym hasłem",
|
||||
"description": "Heading for the password generator within the inline menu"
|
||||
},
|
||||
"passwordRegenerated": {
|
||||
@ -4884,18 +4905,18 @@
|
||||
"message": "Generated password"
|
||||
},
|
||||
"compactMode": {
|
||||
"message": "Compact mode"
|
||||
"message": "Tryb kompaktowy"
|
||||
},
|
||||
"beta": {
|
||||
"message": "Beta"
|
||||
},
|
||||
"extensionWidth": {
|
||||
"message": "Extension width"
|
||||
"message": "Szerokość rozszerzenia"
|
||||
},
|
||||
"wide": {
|
||||
"message": "Wide"
|
||||
"message": "Szerokie"
|
||||
},
|
||||
"extraWide": {
|
||||
"message": "Extra wide"
|
||||
"message": "Bardzo szerokie"
|
||||
}
|
||||
}
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Preenchimento automático identidade"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Gerar Senha (copiada)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Insira o código de verificação de 6 dígitos do seu aplicativo de autenticação."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Insira o código de verificação de 6 dígitos que foi enviado por e-mail para $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Ver todas as opções de login"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "Uma notificação foi enviada para seu dispositivo."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Desbloqueie sua conta, abra em uma nova janela",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Preencha as credenciais para",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Preencher automaticamente identidade"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Preencher código de verificação"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Preencher código de verificação",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Gerar palavra-passe (copiada)"
|
||||
},
|
||||
@ -1269,7 +1276,7 @@
|
||||
"message": "Pode adquirir uma subscrição Premium no cofre web em bitwarden.com. Pretende visitar o site agora?"
|
||||
},
|
||||
"premiumPurchaseAlertV2": {
|
||||
"message": "Pode adquirir o Premium a partir das definições da sua conta na aplicação Web do Bitwarden."
|
||||
"message": "Pode adquirir o Premium a partir das definições da sua conta na aplicação Web Bitwarden."
|
||||
},
|
||||
"premiumCurrentMember": {
|
||||
"message": "É um membro Premium!"
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Introduza o código de verificação de 6 dígitos da sua aplicação de autenticação."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Tempo limite de autenticação"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "A sessão de autenticação expirou. Por favor, reinicie o processo de início de sessão."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Introduza o código de verificação de 6 dígitos que foi enviado por e-mail para $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Ver todas as opções de início de sessão"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "Ver todas as opções de início de sessão"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Desbloqueie a sua conta, abre numa nova janela",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Código de verificação de palavra-passe única com base no tempo",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Tempo restante antes da TOTP atual expirar",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Preencher as credenciais para",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autocompletare identitate"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generare parolă (s-a copiat)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Introducere cod de verificare din 6 cifre din aplicația de autentificare."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Introducere cod de verificare din 6 cifre care a fost trimis prin e-mail la $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Afișați toate opțiunile de conectare"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "O notificare a fost trimisă pe dispozitivul dvs."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Автозаполнение личности"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Заполнить код подтверждения"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Заполнить код подтверждения",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Сгенерировать пароль (с копированием)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Введите 6-значный код подтверждения из вашего приложения-аутентификатора."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Таймаут аутентификации"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "Сеанс аутентификации завершился по времени. Пожалуйста, попробуйте войти еще раз."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Введите 6-значный код подтверждения, который был отправлен на $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Посмотреть все варианты авторизации"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "Посмотреть все варианты авторизации"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Разблокируйте ваш аккаунт, откроется в новом окне",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Код подтверждения, основанный на времени",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Время, оставшееся до истечения срока действия текущего TOTP",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Заполнить учетные данные",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "මුරපදය ජනනය (පිටපත්)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "ඔබගේ සත්යාපන යෙදුමෙන් 6 ඉලක්කම් සත්යාපන කේතය ඇතුළත් කරන්න."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "$EMAIL$වෙත ඊමේල් කරන ලද 6 ඉලක්කම් සත්යාපන කේතය ඇතුළත් කරන්න.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Automatické vyplnenie identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Vyplniť overovací kód"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Vyplniť overovací kód",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Vygenerovať heslo (skopírované)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Zadajte 6-miestny verifikačný kód z vašej overovacej aplikácie."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Časový limit overenia"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "Relácia overovania skončila. Znovu spustite proces prihlásenia."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Zadajte 6-miestny verifikačný kód, ktorý vám bol zaslaný emailom",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Zobraziť všetky možnosti prihlásenia"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "Zobraziť všetky možnosti prihlásenia"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Odomknúť konto v novom okne",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Overovací kód TOTP",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Čas zostávajúci do vypršania aktuálneho TOTP",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Vyplňte prihlasovacie údaje pre",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Samodejno izpolni identiteto"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generiraj geslo (kopirano)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Vnesite 6-mestno verifikacijsko kodo iz svoje aplikacije za avtentikacijo."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Vnesite 6-mestno verifikacijsko kodo, ki vam je bila poslana na $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Ауто-пуњење идентитета"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Генериши Лозинку (копирано)"
|
||||
},
|
||||
@ -1126,7 +1133,7 @@
|
||||
"description": "WARNING (should stay in capitalized letters if the language permits)"
|
||||
},
|
||||
"warningCapitalized": {
|
||||
"message": "Warning",
|
||||
"message": "Упозорење",
|
||||
"description": "Warning (should maintain locale-relevant capitalization)"
|
||||
},
|
||||
"confirmVaultExport": {
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Унесите шестоцифрени верификациони код из апликације за утврђивање аутентичности."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Истекло је време аутентификације"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "Истекло је време сесије за аутентификацију. Молим вас покрените процес пријаве поново."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Унесите шестоцифрени верификациони код који је послан на $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -1768,7 +1781,7 @@
|
||||
"message": "SSH кључ"
|
||||
},
|
||||
"newItemHeader": {
|
||||
"message": "New $TYPE$",
|
||||
"message": "Нови $TYPE$",
|
||||
"placeholders": {
|
||||
"type": {
|
||||
"content": "$1",
|
||||
@ -1813,7 +1826,7 @@
|
||||
"message": "Колекције"
|
||||
},
|
||||
"nCollections": {
|
||||
"message": "$COUNT$ collections",
|
||||
"message": "$COUNT$ колекција",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
@ -1843,7 +1856,7 @@
|
||||
"message": "Сигурносне белешке"
|
||||
},
|
||||
"sshKeys": {
|
||||
"message": "SSH Keys"
|
||||
"message": "SSH Кључеви"
|
||||
},
|
||||
"clear": {
|
||||
"message": "Очисти",
|
||||
@ -2571,7 +2584,7 @@
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"sendExpiresInHours": {
|
||||
"message": "The Send will be available to anyone with the link for the next $HOURS$ hours.",
|
||||
"message": "Send ће бити доступан свакоме са везом у наредних $HOURS$ часова.",
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.",
|
||||
"placeholders": {
|
||||
"hours": {
|
||||
@ -2585,7 +2598,7 @@
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"sendExpiresInDays": {
|
||||
"message": "The Send will be available to anyone with the link for the next $DAYS$ days.",
|
||||
"message": "Send ће бити доступан свакоме са везом у наредних $DAYS$ дана.",
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.",
|
||||
"placeholders": {
|
||||
"days": {
|
||||
@ -2884,7 +2897,7 @@
|
||||
"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": {
|
||||
@ -2898,7 +2911,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": {
|
||||
@ -2908,7 +2921,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": {
|
||||
@ -3165,25 +3178,25 @@
|
||||
"message": "Поново послати обавештење"
|
||||
},
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Погледајте сав извештај у опције"
|
||||
},
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"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": "Пријава је покренута"
|
||||
@ -3279,16 +3292,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": "Запамти овај уређај"
|
||||
@ -3364,7 +3377,7 @@
|
||||
"message": "Недостаје имејл корисника"
|
||||
},
|
||||
"activeUserEmailNotFoundLoggingYouOut": {
|
||||
"message": "Active user email not found. Logging you out."
|
||||
"message": "Имејл активног корисника није пронађен. Одјављивање."
|
||||
},
|
||||
"deviceTrusted": {
|
||||
"message": "Уређај поуздан"
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Откључајте свој налог, отвара се у новом прозору",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Попунити акредитиве за",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
@ -3803,7 +3824,7 @@
|
||||
"message": "Приступ"
|
||||
},
|
||||
"loggedInExclamation": {
|
||||
"message": "Logged in!"
|
||||
"message": "Пријављено!"
|
||||
},
|
||||
"passkeyNotCopied": {
|
||||
"message": "Приступни кључ неће бити копиран"
|
||||
@ -4297,13 +4318,13 @@
|
||||
"message": "Филтери"
|
||||
},
|
||||
"filterVault": {
|
||||
"message": "Filter vault"
|
||||
"message": "Филтер сефа"
|
||||
},
|
||||
"filterApplied": {
|
||||
"message": "One filter applied"
|
||||
"message": "Примењен је један филтер"
|
||||
},
|
||||
"filterAppliedPlural": {
|
||||
"message": "$COUNT$ filters applied",
|
||||
"message": "Примењени су $COUNT$ филтера",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
@ -4775,55 +4796,55 @@
|
||||
"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": "Знак Ampersand",
|
||||
"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": {
|
||||
@ -4831,71 +4852,71 @@
|
||||
"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": "Бета"
|
||||
},
|
||||
"extensionWidth": {
|
||||
"message": "Extension width"
|
||||
"message": "Ширина додатка"
|
||||
},
|
||||
"wide": {
|
||||
"message": "Wide"
|
||||
"message": "Широко"
|
||||
},
|
||||
"extraWide": {
|
||||
"message": "Extra wide"
|
||||
"message": "Врло широко"
|
||||
}
|
||||
}
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofyll identitet"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Skapa lösenord (kopierad)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Ange den 6-siffriga verifieringskoden från din autentiseringsapp."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Ange den 6-siffriga verifieringskoden som skickades till $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Visa alla inloggningsalternativ"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Visa alla inloggningsalternativ"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "En avisering har skickats till din enhet."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fyll i uppgifter för",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate password (copied)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Autofill identity"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Generate Password (copied)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Enter the 6 digit verification code from your authenticator app."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Enter the 6 digit verification code that was emailed to $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Fill credentials for",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Kimliği otomatik doldur"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Doğrulama kodunu doldur"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Doğrulama kodunu doldur",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Parola oluştur (ve kopyala)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Kimlik doğrulama uygulamanızdaki 6 haneli doğrulama kodunu girin."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "$EMAIL$ adresine e-postayla gönderdiğimiz 6 haneli doğrulama kodunu girin.",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Tüm giriş seçeneklerini gör"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Tüm giriş seçeneklerini gör"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "Cihazınıza bir bildirim gönderildi."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Zamana dayalı tek seferlik parola doğrulama kodu",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Geçerli TOTP için kalan süre",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Bilgileri doldur",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Автозаповнення посвідчень"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Заповнити код підтвердження"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Заповнити код підтвердження",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Генерувати пароль (з копіюванням)"
|
||||
},
|
||||
@ -1126,7 +1133,7 @@
|
||||
"description": "WARNING (should stay in capitalized letters if the language permits)"
|
||||
},
|
||||
"warningCapitalized": {
|
||||
"message": "Warning",
|
||||
"message": "Попередження",
|
||||
"description": "Warning (should maintain locale-relevant capitalization)"
|
||||
},
|
||||
"confirmVaultExport": {
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Введіть 6-значний код підтвердження з програми автентифікації."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Час очікування автентифікації"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "Час очікування сеансу автентифікації завершився. Перезапустіть процес входу в систему."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Введіть 6-значний код підтвердження, надісланий на $EMAIL$.",
|
||||
"placeholders": {
|
||||
@ -1843,7 +1856,7 @@
|
||||
"message": "Захищені нотатки"
|
||||
},
|
||||
"sshKeys": {
|
||||
"message": "SSH Keys"
|
||||
"message": "Ключі SSH"
|
||||
},
|
||||
"clear": {
|
||||
"message": "Стерти",
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "Переглянути всі варіанти входу"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "Переглянути всі варіанти входу"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3279,16 +3292,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": "Запам'ятати цей пристрій"
|
||||
@ -3364,7 +3377,7 @@
|
||||
"message": "Немає адреси електронної пошти"
|
||||
},
|
||||
"activeUserEmailNotFoundLoggingYouOut": {
|
||||
"message": "Active user email not found. Logging you out."
|
||||
"message": "Адресу е-пошти активного користувача не знайдено. Виконується вихід із системи."
|
||||
},
|
||||
"deviceTrusted": {
|
||||
"message": "Довірений пристрій"
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Розблокування облікового запису – відкриється нове вікно",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Код підтвердження одноразового пароля",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Час, що залишився до завершення чинного TOTP",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Заповнити облікові дані для",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
@ -3803,7 +3824,7 @@
|
||||
"message": "Доступ"
|
||||
},
|
||||
"loggedInExclamation": {
|
||||
"message": "Logged in!"
|
||||
"message": "Ви увійшли!"
|
||||
},
|
||||
"passkeyNotCopied": {
|
||||
"message": "Ключ доступу не буде скопійовано"
|
||||
@ -4890,12 +4911,12 @@
|
||||
"message": "Бета"
|
||||
},
|
||||
"extensionWidth": {
|
||||
"message": "Extension width"
|
||||
"message": "Ширина вікна розширення"
|
||||
},
|
||||
"wide": {
|
||||
"message": "Wide"
|
||||
"message": "Широке"
|
||||
},
|
||||
"extraWide": {
|
||||
"message": "Extra wide"
|
||||
"message": "Дуже широке"
|
||||
}
|
||||
}
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "Tự động điền danh tính"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "Tạo mật khẩu (đã sao chép)"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "Nhập mã xác nhận 6 chữ số từ ứng dụng xác thực của bạn."
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "Nhập mã xác nhận 6 chữ số đã được gửi tới email",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "Xem tất cả tùy chọn đăng nhập"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "Một thông báo đã được gửi đến thiết bị của bạn."
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "Điền thông tin đăng nhập cho",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "自动填充身份"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "填写验证码"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "填写验证码",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "生成密码(并复制)"
|
||||
},
|
||||
@ -345,7 +352,7 @@
|
||||
"message": "免费 Bitwarden 家庭"
|
||||
},
|
||||
"freeBitwardenFamiliesPageDesc": {
|
||||
"message": "您有资格获得免费的 Bitwarden 家庭。立即在网页应用中兑换此优惠。"
|
||||
"message": "您有资格获得免费的 Bitwarden 家庭。立即在网页 App 中兑换此优惠。"
|
||||
},
|
||||
"version": {
|
||||
"message": "版本"
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "请输入您的验证器 App 中的 6 位数验证码。"
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "身份验证超时"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "身份验证会话超时。请重新启动登录过程。"
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "请输入发送给电子邮件 $EMAIL$ 的 6 位数验证码。",
|
||||
"placeholders": {
|
||||
@ -3167,7 +3180,7 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "查看所有登录选项"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "查看所有登录选项"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "解锁您的账户(在新窗口中打开)",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "基于时间的一次性密码验证码",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "TOTP 到期前剩余时间",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "为其填写凭据",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
@ -3705,7 +3726,7 @@
|
||||
}
|
||||
},
|
||||
"duoHealthCheckResultsInNullAuthUrlError": {
|
||||
"message": "与 Duo 服务连接时出错。请使用不同的两步登录方式或联系 Duo 寻求帮助。"
|
||||
"message": "与 Duo 服务连接时出错。请使用不同的两步登录方式或联系 Duo 获取协助。"
|
||||
},
|
||||
"launchDuoAndFollowStepsToFinishLoggingIn": {
|
||||
"message": "启动 DUO 并按照步骤完成登录。"
|
||||
|
@ -192,6 +192,13 @@
|
||||
"autoFillIdentity": {
|
||||
"message": "自動填入身分資訊"
|
||||
},
|
||||
"fillVerificationCode": {
|
||||
"message": "Fill verification code"
|
||||
},
|
||||
"fillVerificationCodeAria": {
|
||||
"message": "Fill Verification Code",
|
||||
"description": "Aria label for the heading displayed the inline menu for totp code autofill"
|
||||
},
|
||||
"generatePasswordCopied": {
|
||||
"message": "產生及複製密碼"
|
||||
},
|
||||
@ -1319,6 +1326,12 @@
|
||||
"enterVerificationCodeApp": {
|
||||
"message": "輸入驗證器應用程式提供的 6 位數驗證碼。"
|
||||
},
|
||||
"authenticationTimeout": {
|
||||
"message": "Authentication timeout"
|
||||
},
|
||||
"authenticationSessionTimedOut": {
|
||||
"message": "The authentication session timed out. Please restart the login process."
|
||||
},
|
||||
"enterVerificationCodeEmail": {
|
||||
"message": "輸入已傳送至 $EMAIL$ 的 6 位數驗證碼。",
|
||||
"placeholders": {
|
||||
@ -3167,8 +3180,8 @@
|
||||
"viewAllLogInOptions": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"viewAllLoginOptions": {
|
||||
"message": "檢視所有登入選項"
|
||||
"viewAllLoginOptionsV1": {
|
||||
"message": "View all log in options"
|
||||
},
|
||||
"notificationSentDevice": {
|
||||
"message": "已傳送通知至您的裝置。"
|
||||
@ -3574,6 +3587,14 @@
|
||||
"message": "Unlock your account, opens in a new window",
|
||||
"description": "Screen reader text (aria-label) for unlock account button in overlay"
|
||||
},
|
||||
"totpCodeAria": {
|
||||
"message": "Time-based One-Time Password Verification Code",
|
||||
"description": "Aria label for the totp code displayed in the inline menu for autofill"
|
||||
},
|
||||
"totpSecondsSpanAria": {
|
||||
"message": "Time remaining before current TOTP expires",
|
||||
"description": "Aria label for the totp seconds displayed in the inline menu for autofill"
|
||||
},
|
||||
"fillCredentialsFor": {
|
||||
"message": "填入登入資訊給",
|
||||
"description": "Screen reader text for when overlay item is in focused"
|
||||
|
@ -30,7 +30,7 @@
|
||||
|
||||
<div class="footer">
|
||||
{{ "loginWithDeviceEnabledInfo" | i18n }}
|
||||
<a href="#" (click)="back()">{{ "viewAllLoginOptions" | i18n }}</a>
|
||||
<a href="#" (click)="back()">{{ "viewAllLoginOptionsV1" | i18n }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
@ -53,7 +53,7 @@
|
||||
|
||||
<div class="footer">
|
||||
{{ "troubleLoggingIn" | i18n }}
|
||||
<a routerLink="/login-initiated">{{ "viewAllLoginOptions" | i18n }}</a>
|
||||
<a routerLink="/login-initiated">{{ "viewAllLoginOptionsV1" | i18n }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
|
@ -0,0 +1,67 @@
|
||||
import { TestBed } from "@angular/core/testing";
|
||||
import { mock, MockProxy } from "jest-mock-extended";
|
||||
import { BehaviorSubject } from "rxjs";
|
||||
|
||||
import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service";
|
||||
import {
|
||||
EnvironmentService,
|
||||
Environment,
|
||||
} 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 { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction";
|
||||
|
||||
import { BrowserApi } from "../../../platform/browser/browser-api";
|
||||
|
||||
import { ExtensionSsoComponentService } from "./extension-sso-component.service";
|
||||
|
||||
describe("ExtensionSsoComponentService", () => {
|
||||
let service: ExtensionSsoComponentService;
|
||||
const baseUrl = "https://vault.bitwarden.com";
|
||||
|
||||
let syncService: MockProxy<SyncService>;
|
||||
let authService: MockProxy<AuthService>;
|
||||
let environmentService: MockProxy<EnvironmentService>;
|
||||
let i18nService: MockProxy<I18nService>;
|
||||
let logService: MockProxy<LogService>;
|
||||
|
||||
beforeEach(() => {
|
||||
syncService = mock<SyncService>();
|
||||
authService = mock<AuthService>();
|
||||
environmentService = mock<EnvironmentService>();
|
||||
i18nService = mock<I18nService>();
|
||||
logService = mock<LogService>();
|
||||
environmentService.environment$ = new BehaviorSubject<Environment>({
|
||||
getWebVaultUrl: () => baseUrl,
|
||||
} as Environment);
|
||||
|
||||
TestBed.configureTestingModule({
|
||||
providers: [
|
||||
{ provide: SyncService, useValue: syncService },
|
||||
{ provide: AuthService, useValue: authService },
|
||||
{ provide: EnvironmentService, useValue: environmentService },
|
||||
{ provide: I18nService, useValue: i18nService },
|
||||
{ provide: LogService, useValue: logService },
|
||||
ExtensionSsoComponentService,
|
||||
],
|
||||
});
|
||||
|
||||
service = TestBed.inject(ExtensionSsoComponentService);
|
||||
|
||||
jest.spyOn(BrowserApi, "reloadOpenWindows").mockImplementation();
|
||||
});
|
||||
|
||||
it("creates the service", () => {
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
|
||||
describe("closeWindow", () => {
|
||||
it("closes window", async () => {
|
||||
const windowSpy = jest.spyOn(window, "close").mockImplementation();
|
||||
|
||||
await service.closeWindow?.();
|
||||
|
||||
expect(windowSpy).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
});
|
@ -0,0 +1,34 @@
|
||||
import { Injectable } from "@angular/core";
|
||||
|
||||
import { DefaultSsoComponentService, SsoComponentService } from "@bitwarden/auth/angular";
|
||||
import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service";
|
||||
import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
|
||||
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
||||
import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
|
||||
import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction";
|
||||
|
||||
/**
|
||||
* This service is used to handle the SSO login process for the browser extension.
|
||||
*/
|
||||
@Injectable()
|
||||
export class ExtensionSsoComponentService
|
||||
extends DefaultSsoComponentService
|
||||
implements SsoComponentService
|
||||
{
|
||||
constructor(
|
||||
protected syncService: SyncService,
|
||||
protected authService: AuthService,
|
||||
protected environmentService: EnvironmentService,
|
||||
protected i18nService: I18nService,
|
||||
protected logService: LogService,
|
||||
) {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes the popup window after a successful login.
|
||||
*/
|
||||
async closeWindow() {
|
||||
window.close();
|
||||
}
|
||||
}
|
@ -29,9 +29,9 @@ import { BrowserApi } from "../../platform/browser/browser-api";
|
||||
|
||||
@Component({
|
||||
selector: "app-sso",
|
||||
templateUrl: "sso.component.html",
|
||||
templateUrl: "sso-v1.component.html",
|
||||
})
|
||||
export class SsoComponent extends BaseSsoComponent {
|
||||
export class SsoComponentV1 extends BaseSsoComponent {
|
||||
constructor(
|
||||
ssoLoginService: SsoLoginServiceAbstraction,
|
||||
loginStrategyService: LoginStrategyServiceAbstraction,
|
@ -160,6 +160,9 @@ export type InlineMenuCipherData = {
|
||||
icon: WebsiteIconData;
|
||||
accountCreationFieldType?: string;
|
||||
login?: {
|
||||
totp?: string;
|
||||
totpField?: boolean;
|
||||
totpCodeTimeInterval?: number;
|
||||
username: string;
|
||||
passkey: {
|
||||
rpName: string;
|
||||
@ -262,6 +265,7 @@ export type InlineMenuListPortMessageHandlers = {
|
||||
updateAutofillInlineMenuListHeight: ({ message, port }: PortOnMessageHandlerParams) => void;
|
||||
refreshGeneratedPassword: () => Promise<void>;
|
||||
fillGeneratedPassword: ({ port }: PortConnectionParam) => Promise<void>;
|
||||
refreshOverlayCiphers: () => Promise<void>;
|
||||
};
|
||||
|
||||
export interface OverlayBackground {
|
||||
|
@ -928,6 +928,7 @@ describe("OverlayBackground", () => {
|
||||
login: {
|
||||
username: "username-1",
|
||||
passkey: null,
|
||||
totpField: false,
|
||||
},
|
||||
name: "name-1",
|
||||
reprompt: loginCipher1.reprompt,
|
||||
@ -1065,6 +1066,7 @@ describe("OverlayBackground", () => {
|
||||
login: {
|
||||
username: loginCipher1.login.username,
|
||||
passkey: null,
|
||||
totpField: false,
|
||||
},
|
||||
name: loginCipher1.name,
|
||||
reprompt: loginCipher1.reprompt,
|
||||
@ -1189,6 +1191,7 @@ describe("OverlayBackground", () => {
|
||||
rpName: passkeyCipher.login.fido2Credentials[0].rpName,
|
||||
userName: passkeyCipher.login.fido2Credentials[0].userName,
|
||||
},
|
||||
totpField: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -1207,6 +1210,7 @@ describe("OverlayBackground", () => {
|
||||
login: {
|
||||
username: passkeyCipher.login.username,
|
||||
passkey: null,
|
||||
totpField: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -1225,6 +1229,7 @@ describe("OverlayBackground", () => {
|
||||
login: {
|
||||
username: loginCipher1.login.username,
|
||||
passkey: null,
|
||||
totpField: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
@ -1272,6 +1277,7 @@ describe("OverlayBackground", () => {
|
||||
login: {
|
||||
username: passkeyCipher.login.username,
|
||||
passkey: null,
|
||||
totpField: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -1290,6 +1296,7 @@ describe("OverlayBackground", () => {
|
||||
login: {
|
||||
username: loginCipher1.login.username,
|
||||
passkey: null,
|
||||
totpField: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
@ -1337,6 +1344,7 @@ describe("OverlayBackground", () => {
|
||||
login: {
|
||||
username: passkeyCipher.login.username,
|
||||
passkey: null,
|
||||
totpField: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -1355,6 +1363,7 @@ describe("OverlayBackground", () => {
|
||||
login: {
|
||||
username: loginCipher1.login.username,
|
||||
passkey: null,
|
||||
totpField: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
@ -1400,6 +1409,7 @@ describe("OverlayBackground", () => {
|
||||
login: {
|
||||
username: loginCipher1.login.username,
|
||||
passkey: null,
|
||||
totpField: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -1418,6 +1428,7 @@ describe("OverlayBackground", () => {
|
||||
login: {
|
||||
username: loginCipher2.login.username,
|
||||
passkey: null,
|
||||
totpField: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
@ -204,6 +204,7 @@ export class OverlayBackground implements OverlayBackgroundInterface {
|
||||
updateAutofillInlineMenuListHeight: ({ message }) => this.updateInlineMenuListHeight(message),
|
||||
refreshGeneratedPassword: () => this.updateGeneratedPassword(true),
|
||||
fillGeneratedPassword: ({ port }) => this.fillGeneratedPassword(port),
|
||||
refreshOverlayCiphers: () => this.updateOverlayCiphers(false),
|
||||
};
|
||||
|
||||
constructor(
|
||||
@ -464,7 +465,7 @@ export class OverlayBackground implements OverlayBackgroundInterface {
|
||||
this.showPasskeysLabelsWithinInlineMenu = false;
|
||||
|
||||
if (this.shouldShowInlineMenuAccountCreation()) {
|
||||
inlineMenuCipherData = this.buildInlineMenuAccountCreationCiphers(
|
||||
inlineMenuCipherData = await this.buildInlineMenuAccountCreationCiphers(
|
||||
inlineMenuCiphersArray,
|
||||
true,
|
||||
);
|
||||
@ -485,7 +486,7 @@ export class OverlayBackground implements OverlayBackgroundInterface {
|
||||
* @param inlineMenuCiphersArray - Array of inline menu ciphers
|
||||
* @param showFavicons - Identifies whether favicons should be shown
|
||||
*/
|
||||
private buildInlineMenuAccountCreationCiphers(
|
||||
private async buildInlineMenuAccountCreationCiphers(
|
||||
inlineMenuCiphersArray: [string, CipherView][],
|
||||
showFavicons: boolean,
|
||||
) {
|
||||
@ -497,7 +498,7 @@ export class OverlayBackground implements OverlayBackgroundInterface {
|
||||
|
||||
if (cipher.type === CipherType.Login) {
|
||||
accountCreationLoginCiphers.push(
|
||||
this.buildCipherData({
|
||||
await this.buildCipherData({
|
||||
inlineMenuCipherId,
|
||||
cipher,
|
||||
showFavicons,
|
||||
@ -517,7 +518,7 @@ export class OverlayBackground implements OverlayBackgroundInterface {
|
||||
}
|
||||
|
||||
inlineMenuCipherData.push(
|
||||
this.buildCipherData({
|
||||
await this.buildCipherData({
|
||||
inlineMenuCipherId,
|
||||
cipher,
|
||||
showFavicons,
|
||||
@ -561,13 +562,13 @@ export class OverlayBackground implements OverlayBackgroundInterface {
|
||||
|
||||
if (!passkeysEnabled || !(await this.showCipherAsPasskey(cipher, domainExclusionsSet))) {
|
||||
inlineMenuCipherData.push(
|
||||
this.buildCipherData({ inlineMenuCipherId, cipher, showFavicons }),
|
||||
await this.buildCipherData({ inlineMenuCipherId, cipher, showFavicons }),
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
passkeyCipherData.push(
|
||||
this.buildCipherData({
|
||||
await this.buildCipherData({
|
||||
inlineMenuCipherId,
|
||||
cipher,
|
||||
showFavicons,
|
||||
@ -577,7 +578,7 @@ export class OverlayBackground implements OverlayBackgroundInterface {
|
||||
|
||||
if (cipher.login?.password && cipher.login.username) {
|
||||
inlineMenuCipherData.push(
|
||||
this.buildCipherData({ inlineMenuCipherId, cipher, showFavicons }),
|
||||
await this.buildCipherData({ inlineMenuCipherId, cipher, showFavicons }),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -620,6 +621,23 @@ export class OverlayBackground implements OverlayBackgroundInterface {
|
||||
return this.inlineMenuFido2Credentials.has(credentialId);
|
||||
}
|
||||
|
||||
private isTotpFieldForCurrentField(): boolean {
|
||||
if (!this.focusedFieldData) {
|
||||
return false;
|
||||
}
|
||||
const { tabId, frameId } = this.focusedFieldData;
|
||||
const pageDetailsMap = this.pageDetailsForTab[tabId];
|
||||
if (!pageDetailsMap || !pageDetailsMap.has(frameId)) {
|
||||
return false;
|
||||
}
|
||||
const pageDetail = pageDetailsMap.get(frameId);
|
||||
return (
|
||||
pageDetail?.details?.fields?.every((field) =>
|
||||
this.inlineMenuFieldQualificationService.isTotpField(field),
|
||||
) || false
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds the cipher data for the inline menu list.
|
||||
*
|
||||
@ -630,14 +648,14 @@ export class OverlayBackground implements OverlayBackgroundInterface {
|
||||
* @param hasPasskey - Identifies whether the cipher has a FIDO2 credential
|
||||
* @param identityData - Pre-created identity data
|
||||
*/
|
||||
private buildCipherData({
|
||||
private async buildCipherData({
|
||||
inlineMenuCipherId,
|
||||
cipher,
|
||||
showFavicons,
|
||||
showInlineMenuAccountCreation,
|
||||
hasPasskey,
|
||||
identityData,
|
||||
}: BuildCipherDataParams): InlineMenuCipherData {
|
||||
}: BuildCipherDataParams): Promise<InlineMenuCipherData> {
|
||||
const inlineMenuData: InlineMenuCipherData = {
|
||||
id: inlineMenuCipherId,
|
||||
name: cipher.name,
|
||||
@ -649,8 +667,13 @@ export class OverlayBackground implements OverlayBackgroundInterface {
|
||||
};
|
||||
|
||||
if (cipher.type === CipherType.Login) {
|
||||
const totpCode = await this.totpService.getCode(cipher.login?.totp);
|
||||
const totpCodeTimeInterval = this.totpService.getTimeInterval(cipher.login?.totp);
|
||||
inlineMenuData.login = {
|
||||
username: cipher.login.username,
|
||||
totp: totpCode,
|
||||
totpField: this.isTotpFieldForCurrentField(),
|
||||
totpCodeTimeInterval: totpCodeTimeInterval,
|
||||
passkey: hasPasskey
|
||||
? {
|
||||
rpName: cipher.login.fido2Credentials[0].rpName,
|
||||
@ -1980,35 +2003,39 @@ export class OverlayBackground implements OverlayBackgroundInterface {
|
||||
private getInlineMenuTranslations() {
|
||||
if (!this.inlineMenuPageTranslations) {
|
||||
const translationKeys = [
|
||||
"addNewCardItemAria",
|
||||
"addNewIdentityItemAria",
|
||||
"addNewLoginItemAria",
|
||||
"addNewVaultItem",
|
||||
"authenticating",
|
||||
"cardNumberEndsWith",
|
||||
"fillCredentialsFor",
|
||||
"fillGeneratedPassword",
|
||||
"fillVerificationCode",
|
||||
"fillVerificationCodeAria",
|
||||
"generatedPassword",
|
||||
"lowercaseAriaLabel",
|
||||
"logInWithPasskeyAriaLabel",
|
||||
"newCard",
|
||||
"newIdentity",
|
||||
"newItem",
|
||||
"newLogin",
|
||||
"noItemsToShow",
|
||||
"opensInANewWindow",
|
||||
"passkeys",
|
||||
"passwordRegenerated",
|
||||
"passwords",
|
||||
"regeneratePassword",
|
||||
"saveLoginToBitwarden",
|
||||
"toggleBitwardenVaultOverlay",
|
||||
"unlockYourAccountToViewAutofillSuggestions",
|
||||
"totpCodeAria",
|
||||
"totpSecondsSpanAria",
|
||||
"unlockAccount",
|
||||
"unlockAccountAria",
|
||||
"fillCredentialsFor",
|
||||
"unlockYourAccountToViewAutofillSuggestions",
|
||||
"uppercaseAriaLabel",
|
||||
"username",
|
||||
"view",
|
||||
"noItemsToShow",
|
||||
"newItem",
|
||||
"addNewVaultItem",
|
||||
"newLogin",
|
||||
"addNewLoginItemAria",
|
||||
"newCard",
|
||||
"addNewCardItemAria",
|
||||
"newIdentity",
|
||||
"addNewIdentityItemAria",
|
||||
"cardNumberEndsWith",
|
||||
"passkeys",
|
||||
"passwords",
|
||||
"logInWithPasskeyAriaLabel",
|
||||
"authenticating",
|
||||
"fillGeneratedPassword",
|
||||
"regeneratePassword",
|
||||
"passwordRegenerated",
|
||||
"saveLoginToBitwarden",
|
||||
"lowercaseAriaLabel",
|
||||
"uppercaseAriaLabel",
|
||||
"generatedPassword",
|
||||
...Object.values(specialCharacterToKeyMap),
|
||||
];
|
||||
this.inlineMenuPageTranslations = translationKeys.reduce(
|
||||
|
@ -25,6 +25,7 @@ import { BrowserScriptInjectorService } from "../../../platform/services/browser
|
||||
import { AbortManager } from "../../../vault/background/abort-manager";
|
||||
import { Fido2ContentScript, Fido2ContentScriptId } from "../enums/fido2-content-script.enum";
|
||||
import { Fido2PortName } from "../enums/fido2-port-name.enum";
|
||||
import { BrowserFido2ParentWindowReference } from "../services/browser-fido2-user-interface.service";
|
||||
|
||||
import { Fido2ExtensionMessage } from "./abstractions/fido2.background";
|
||||
import { Fido2Background } from "./fido2.background";
|
||||
@ -56,7 +57,7 @@ describe("Fido2Background", () => {
|
||||
let senderMock!: MockProxy<chrome.runtime.MessageSender>;
|
||||
let logService!: MockProxy<LogService>;
|
||||
let fido2ActiveRequestManager: MockProxy<Fido2ActiveRequestManager>;
|
||||
let fido2ClientService!: MockProxy<Fido2ClientService>;
|
||||
let fido2ClientService!: MockProxy<Fido2ClientService<BrowserFido2ParentWindowReference>>;
|
||||
let vaultSettingsService!: MockProxy<VaultSettingsService>;
|
||||
let scriptInjectorServiceMock!: MockProxy<BrowserScriptInjectorService>;
|
||||
let configServiceMock!: MockProxy<ConfigService>;
|
||||
@ -73,7 +74,7 @@ describe("Fido2Background", () => {
|
||||
});
|
||||
senderMock = mock<chrome.runtime.MessageSender>({ id: "1", tab: tabMock });
|
||||
logService = mock<LogService>();
|
||||
fido2ClientService = mock<Fido2ClientService>();
|
||||
fido2ClientService = mock<Fido2ClientService<BrowserFido2ParentWindowReference>>();
|
||||
vaultSettingsService = mock<VaultSettingsService>();
|
||||
abortManagerMock = mock<AbortManager>();
|
||||
abortController = mock<AbortController>();
|
||||
|
@ -23,10 +23,11 @@ import { ScriptInjectorService } from "../../../platform/services/abstractions/s
|
||||
import { AbortManager } from "../../../vault/background/abort-manager";
|
||||
import { Fido2ContentScript, Fido2ContentScriptId } from "../enums/fido2-content-script.enum";
|
||||
import { Fido2PortName } from "../enums/fido2-port-name.enum";
|
||||
import { BrowserFido2ParentWindowReference } from "../services/browser-fido2-user-interface.service";
|
||||
|
||||
import {
|
||||
Fido2Background as Fido2BackgroundInterface,
|
||||
Fido2BackgroundExtensionMessageHandlers,
|
||||
Fido2Background as Fido2BackgroundInterface,
|
||||
Fido2ExtensionMessage,
|
||||
SharedFido2ScriptInjectionDetails,
|
||||
SharedFido2ScriptRegistrationOptions,
|
||||
@ -56,7 +57,7 @@ export class Fido2Background implements Fido2BackgroundInterface {
|
||||
constructor(
|
||||
private logService: LogService,
|
||||
private fido2ActiveRequestManager: Fido2ActiveRequestManager,
|
||||
private fido2ClientService: Fido2ClientService,
|
||||
private fido2ClientService: Fido2ClientService<BrowserFido2ParentWindowReference>,
|
||||
private vaultSettingsService: VaultSettingsService,
|
||||
private scriptInjectorService: ScriptInjectorService,
|
||||
private configService: ConfigService,
|
||||
|
@ -111,11 +111,15 @@ export type BrowserFido2Message = { sessionId: string } & (
|
||||
}
|
||||
);
|
||||
|
||||
export type BrowserFido2ParentWindowReference = chrome.tabs.Tab;
|
||||
|
||||
/**
|
||||
* Browser implementation of the {@link Fido2UserInterfaceService}.
|
||||
* The user interface is implemented as a popout and the service uses the browser's messaging API to communicate with it.
|
||||
*/
|
||||
export class BrowserFido2UserInterfaceService implements Fido2UserInterfaceServiceAbstraction {
|
||||
export class BrowserFido2UserInterfaceService
|
||||
implements Fido2UserInterfaceServiceAbstraction<BrowserFido2ParentWindowReference>
|
||||
{
|
||||
constructor(private authService: AuthService) {}
|
||||
|
||||
async newSession(
|
||||
|
@ -681,10 +681,121 @@ exports[`AutofillInlineMenuList initAutofillInlineMenuList the list of ciphers f
|
||||
class="cipher-container"
|
||||
>
|
||||
<button
|
||||
aria-description="username: username5"
|
||||
aria-label="fillCredentialsFor website login 5"
|
||||
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
|
||||
aria-label=""
|
||||
class="cipher-subtitle"
|
||||
data-testid="totp-code"
|
||||
>
|
||||
123 456
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
<button
|
||||
aria-label="view website login 5, 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: username6"
|
||||
aria-label="fillCredentialsFor website login 6"
|
||||
class="fill-cipher-button inline-menu-list-action"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
aria-hidden="true"
|
||||
@ -696,18 +807,420 @@ exports[`AutofillInlineMenuList initAutofillInlineMenuList the list of ciphers f
|
||||
>
|
||||
<span
|
||||
class="cipher-name"
|
||||
title="website login 5"
|
||||
title="website login 6"
|
||||
>
|
||||
website login 5
|
||||
website login 6
|
||||
</span>
|
||||
<span
|
||||
class="cipher-subtitle"
|
||||
title="username5"
|
||||
title="username6"
|
||||
>
|
||||
username5
|
||||
username6
|
||||
</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
aria-label="view website login 6, 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 list of ciphers for an authenticated user creates the view for a totp field 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: username1"
|
||||
aria-label="fillCredentialsFor website login 1"
|
||||
class="fill-cipher-button inline-menu-list-action"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
aria-hidden="true"
|
||||
class="cipher-icon"
|
||||
style="background-image: url(https://jest-testing-website.com/image.png);"
|
||||
/>
|
||||
<span
|
||||
class="cipher-details"
|
||||
>
|
||||
<span
|
||||
class="cipher-name"
|
||||
title="website login 1"
|
||||
>
|
||||
website login 1
|
||||
</span>
|
||||
<span
|
||||
class="cipher-subtitle"
|
||||
title="username1"
|
||||
>
|
||||
username1
|
||||
</span>
|
||||
</span>
|
||||
</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: username2"
|
||||
aria-label="fillCredentialsFor website login 2"
|
||||
class="fill-cipher-button inline-menu-list-action"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
aria-hidden="true"
|
||||
class="cipher-icon bwi bw-icon"
|
||||
/>
|
||||
<span
|
||||
class="cipher-details"
|
||||
>
|
||||
<span
|
||||
class="cipher-name"
|
||||
title="website login 2"
|
||||
>
|
||||
website login 2
|
||||
</span>
|
||||
<span
|
||||
class="cipher-subtitle"
|
||||
title="username2"
|
||||
>
|
||||
username2
|
||||
</span>
|
||||
</span>
|
||||
</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>
|
||||
<li
|
||||
class="inline-menu-list-actions-item"
|
||||
role="listitem"
|
||||
>
|
||||
<div
|
||||
class="cipher-container"
|
||||
>
|
||||
<button
|
||||
aria-label="fillCredentialsFor "
|
||||
class="fill-cipher-button inline-menu-list-action"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
aria-hidden="true"
|
||||
class="cipher-icon bwi bw-icon"
|
||||
/>
|
||||
<span
|
||||
class="cipher-details"
|
||||
/>
|
||||
</button>
|
||||
<button
|
||||
aria-label="view , 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: username4"
|
||||
aria-label="fillCredentialsFor website login 4"
|
||||
class="fill-cipher-button inline-menu-list-action"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
aria-hidden="true"
|
||||
class="cipher-icon"
|
||||
>
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
fill="none"
|
||||
height="25"
|
||||
viewBox="0 0 24 25"
|
||||
width="24"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
clip-rule="evenodd"
|
||||
d="M18.026 17.842c-1.418 1.739-3.517 2.84-5.86 2.84a7.364 7.364 0 0 1-3.431-.848l.062-.15.062-.151.063-.157c.081-.203.17-.426.275-.646.133-.28.275-.522.426-.68.026-.028.101-.075.275-.115.165-.037.376-.059.629-.073.138-.008.288-.014.447-.02.399-.016.847-.034 1.266-.092.314-.044.566-.131.755-.271a.884.884 0 0 0 .352-.555c.037-.2.008-.392-.03-.543-.035-.135-.084-.264-.12-.355l-.01-.03a4.26 4.26 0 0 0-.145-.33c-.126-.264-.237-.497-.288-1.085-.03-.344.09-.73.251-1.138l.089-.22c.05-.123.1-.247.14-.355.064-.171.129-.375.129-.566a1.51 1.51 0 0 0-.134-.569 2.573 2.573 0 0 0-.319-.547c-.246-.323-.635-.669-1.093-.669-.44 0-1.006.169-1.487.368-.246.102-.48.216-.68.33-.192.111-.372.235-.492.359-.93.96-1.48 1.239-1.81 1.258-.277.017-.478-.15-.736-.525a9.738 9.738 0 0 1-.19-.29l-.006-.01a11.568 11.568 0 0 0-.198-.305 2.76 2.76 0 0 0-.521-.6 1.39 1.39 0 0 0-1.088-.314 8.302 8.302 0 0 1 1.987-3.936c.055.342.146.626.272.856.23.42.561.64.926.716.406.086.857-.061 1.26-.216.125-.047.248-.097.372-.147.309-.125.618-.25.947-.341.26-.072.581-.057.959.012.264.049.529.118.8.19l.36.091c.379.094.782.178 1.135.148.374-.032.733-.197.934-.623a.874.874 0 0 0 .024-.752c-.087-.197-.24-.355-.35-.47-.26-.267-.412-.427-.412-.685 0-.125.037-.2.09-.263a.982.982 0 0 1 .303-.211c.059-.03.119-.058.183-.089l.036-.016a3.79 3.79 0 0 0 .236-.118c.047-.026.098-.056.148-.093 1.936.747 3.51 2.287 4.368 4.249a7.739 7.739 0 0 0-.031-.004c-.38-.047-.738-.056-1.063.061-.34.123-.603.368-.817.74-.122.211-.284.43-.463.67l-.095.129c-.207.281-.431.595-.58.92-.15.326-.245.705-.142 1.103.104.397.387.738.837 1.036.099.065.225.112.314.145l.02.008c.108.04.195.074.268.117.07.042.106.08.124.114.017.03.037.087.022.206-.047.376-.069.73-.052 1.034.017.292.071.59.218.809.118.174.12.421.108.786v.01a2.46 2.46 0 0 0 .021.518.809.809 0 0 0 .15.35Zm1.357.059a9.654 9.654 0 0 0 1.62-5.386c0-5.155-3.957-9.334-8.836-9.334-4.88 0-8.836 4.179-8.836 9.334 0 3.495 1.82 6.543 4.513 8.142v.093h.161a8.426 8.426 0 0 0 4.162 1.098c2.953 0 5.568-1.53 7.172-3.882a.569.569 0 0 0 .048-.062l-.004-.003ZM8.152 19.495a43.345 43.345 0 0 1 .098-.238l.057-.142c.082-.205.182-.455.297-.698.143-.301.323-.624.552-.864.163-.172.392-.254.602-.302.219-.05.473-.073.732-.088.162-.01.328-.016.495-.023.386-.015.782-.03 1.168-.084.255-.036.392-.099.461-.15.06-.045.076-.084.083-.12a.534.534 0 0 0-.02-.223 2.552 2.552 0 0 0-.095-.278l-.01-.027a3.128 3.128 0 0 0-.104-.232c-.134-.282-.31-.65-.374-1.381-.046-.533.138-1.063.3-1.472.035-.09.069-.172.1-.249.046-.11.086-.21.123-.31.062-.169.083-.264.083-.312a.812.812 0 0 0-.076-.283 1.867 1.867 0 0 0-.23-.394c-.21-.274-.428-.408-.577-.408-.315 0-.788.13-1.246.32a5.292 5.292 0 0 0-.603.293 1.727 1.727 0 0 0-.347.244c-.936.968-1.641 1.421-2.235 1.457-.646.04-1.036-.413-1.31-.813-.07-.103-.139-.21-.203-.311l-.005-.007c-.064-.101-.125-.197-.188-.29a2.098 2.098 0 0 0-.387-.453.748.748 0 0 0-.436-.18c-.1-.006-.22.005-.365.046a8.707 8.707 0 0 0-.056.992c0 2.957 1.488 5.547 3.716 6.98Zm10.362-2.316.003-.192.002-.046c.01-.305.026-.786-.232-1.169-.036-.054-.082-.189-.096-.444-.014-.243.003-.55.047-.9a1.051 1.051 0 0 0-.105-.649.987.987 0 0 0-.374-.374 2.285 2.285 0 0 0-.367-.166h-.003a1.243 1.243 0 0 1-.205-.088c-.369-.244-.505-.46-.549-.629-.044-.168-.015-.364.099-.61.115-.25.297-.511.507-.796l.089-.12c.178-.239.368-.495.512-.745.152-.263.302-.382.466-.441.18-.065.416-.073.77-.03.142.018.275.04.397.063.274.837.423 1.736.423 2.671a8.45 8.45 0 0 1-1.384 4.665Zm-4.632-12.63a7.362 7.362 0 0 0-1.715-.201c-1.89 0-3.621.716-4.965 1.905.025.54.12.887.24 1.105.13.238.295.34.482.38.2.042.484-.027.905-.188l.328-.13c.32-.13.681-.275 1.048-.377.398-.111.833-.075 1.24 0 .289.053.59.132.871.205l.326.084c.383.094.694.151.932.13.216-.017.326-.092.395-.237.039-.083.027-.114.014-.144-.027-.062-.088-.136-.212-.264l-.043-.044c-.218-.222-.567-.578-.567-1.142 0-.305.101-.547.262-.734.137-.159.308-.267.46-.347Z"
|
||||
fill="#777"
|
||||
fill-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
<span
|
||||
class="cipher-details"
|
||||
>
|
||||
<span
|
||||
class="cipher-name"
|
||||
title="website login 4"
|
||||
>
|
||||
website login 4
|
||||
</span>
|
||||
<span
|
||||
class="cipher-subtitle"
|
||||
title="username4"
|
||||
>
|
||||
username4
|
||||
</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
aria-label="view website login 4, 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-label="fillCredentialsFor website login 5"
|
||||
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
|
||||
aria-label=""
|
||||
class="cipher-subtitle"
|
||||
data-testid="totp-code"
|
||||
>
|
||||
123 456
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
<button
|
||||
aria-label="view website login 5, opensInANewWindow"
|
||||
class="view-cipher-button"
|
||||
@ -1112,7 +1625,6 @@ exports[`AutofillInlineMenuList initAutofillInlineMenuList the list of ciphers f
|
||||
class="cipher-container"
|
||||
>
|
||||
<button
|
||||
aria-description="username: username5"
|
||||
aria-label="fillCredentialsFor website login 5"
|
||||
class="fill-cipher-button inline-menu-list-action"
|
||||
tabindex="-1"
|
||||
@ -1120,24 +1632,66 @@ exports[`AutofillInlineMenuList initAutofillInlineMenuList the list of ciphers f
|
||||
<span
|
||||
aria-hidden="true"
|
||||
class="cipher-icon"
|
||||
style="background-image: url(https://jest-testing-website.com/image.png);"
|
||||
/>
|
||||
<span
|
||||
>
|
||||
<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"
|
||||
title="website login 5"
|
||||
>
|
||||
website login 5
|
||||
</span>
|
||||
/>
|
||||
<span
|
||||
aria-label=""
|
||||
class="cipher-subtitle"
|
||||
title="username5"
|
||||
data-testid="totp-code"
|
||||
>
|
||||
username5
|
||||
123 456
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
<button
|
||||
aria-label="view website login 5, opensInANewWindow"
|
||||
@ -1543,7 +2097,6 @@ exports[`AutofillInlineMenuList initAutofillInlineMenuList the list of ciphers f
|
||||
class="cipher-container"
|
||||
>
|
||||
<button
|
||||
aria-description="username: username5"
|
||||
aria-label="fillCredentialsFor website login 5"
|
||||
class="fill-cipher-button inline-menu-list-action"
|
||||
tabindex="-1"
|
||||
@ -1551,24 +2104,66 @@ exports[`AutofillInlineMenuList initAutofillInlineMenuList the list of ciphers f
|
||||
<span
|
||||
aria-hidden="true"
|
||||
class="cipher-icon"
|
||||
style="background-image: url(https://jest-testing-website.com/image.png);"
|
||||
/>
|
||||
<span
|
||||
>
|
||||
<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"
|
||||
title="website login 5"
|
||||
>
|
||||
website login 5
|
||||
</span>
|
||||
/>
|
||||
<span
|
||||
aria-label=""
|
||||
class="cipher-subtitle"
|
||||
title="username5"
|
||||
data-testid="totp-code"
|
||||
>
|
||||
username5
|
||||
123 456
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
<button
|
||||
aria-label="view website login 5, opensInANewWindow"
|
||||
|
@ -140,6 +140,31 @@ describe("AutofillInlineMenuList", () => {
|
||||
expect(autofillInlineMenuList["inlineMenuListContainer"]).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it("creates the view for a totp field", () => {
|
||||
postWindowMessage(
|
||||
createInitAutofillInlineMenuListMessageMock({
|
||||
inlineMenuFillType: CipherType.Login,
|
||||
ciphers: [
|
||||
createAutofillOverlayCipherDataMock(5, {
|
||||
type: CipherType.Login,
|
||||
login: {
|
||||
totp: "123456",
|
||||
totpField: true,
|
||||
},
|
||||
}),
|
||||
],
|
||||
}),
|
||||
);
|
||||
|
||||
const cipherSubtitleElement = autofillInlineMenuList[
|
||||
"inlineMenuListContainer"
|
||||
].querySelector('[data-testid="totp-code"]');
|
||||
|
||||
expect(autofillInlineMenuList["inlineMenuListContainer"]).toMatchSnapshot();
|
||||
expect(cipherSubtitleElement).not.toBeNull();
|
||||
expect(cipherSubtitleElement.textContent).toBe("123 456");
|
||||
});
|
||||
|
||||
it("creates the views for a list of card ciphers", () => {
|
||||
postWindowMessage(
|
||||
createInitAutofillInlineMenuListMessageMock({
|
||||
|
@ -1046,6 +1046,64 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
|
||||
cipherIcon.classList.add("cipher-icon");
|
||||
cipherIcon.setAttribute("aria-hidden", "true");
|
||||
|
||||
if (cipher.login?.totpField && cipher.login?.totp) {
|
||||
const totpContainer = document.createElement("div");
|
||||
totpContainer.style.position = "relative";
|
||||
|
||||
const svgElement = buildSvgDomElement(`
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 29 29">
|
||||
<circle fill="none" cx="14.5" cy="14.5" r="12.5"
|
||||
stroke-width="3" stroke-dasharray="78.5"
|
||||
stroke-dashoffset="78.5" transform="rotate(-90 14.5 14.5)"></circle>
|
||||
<circle fill="none" cx="14.5" cy="14.5" r="14" stroke-width="1"></circle>
|
||||
</svg>
|
||||
`);
|
||||
|
||||
const [innerCircleElement, outerCircleElement] = svgElement.querySelectorAll("circle");
|
||||
innerCircleElement.classList.add("circle-color");
|
||||
outerCircleElement.classList.add("circle-color");
|
||||
|
||||
totpContainer.appendChild(svgElement);
|
||||
|
||||
const totpSecondsSpan = document.createElement("span");
|
||||
totpSecondsSpan.classList.add("totp-sec-span");
|
||||
totpSecondsSpan.setAttribute("bitTypography", "helper");
|
||||
totpSecondsSpan.setAttribute("aria-label", this.getTranslation("totpSecondsSpanAria"));
|
||||
totpContainer.appendChild(totpSecondsSpan);
|
||||
|
||||
cipherIcon.appendChild(totpContainer);
|
||||
|
||||
const intervalSeconds = cipher.login.totpCodeTimeInterval;
|
||||
|
||||
const updateCountdown = () => {
|
||||
const epoch = Math.round(Date.now() / 1000);
|
||||
const mod = epoch % intervalSeconds;
|
||||
const totpSeconds = intervalSeconds - mod;
|
||||
|
||||
totpSecondsSpan.textContent = `${totpSeconds}`;
|
||||
|
||||
/**
|
||||
* Design specifies a seven-second time span as the period where expiry is approaching.
|
||||
*/
|
||||
const totpExpiryApproaching = totpSeconds <= 7;
|
||||
|
||||
totpSecondsSpan.classList.toggle("totp-sec-span-danger", totpExpiryApproaching);
|
||||
innerCircleElement.classList.toggle("circle-danger-color", totpExpiryApproaching);
|
||||
outerCircleElement.classList.toggle("circle-danger-color", totpExpiryApproaching);
|
||||
|
||||
innerCircleElement.style.strokeDashoffset = `${((intervalSeconds - totpSeconds) / intervalSeconds) * (2 * Math.PI * 12.5)}`;
|
||||
|
||||
if (mod === 0) {
|
||||
this.postMessageToParent({ command: "refreshOverlayCiphers" });
|
||||
}
|
||||
};
|
||||
|
||||
updateCountdown();
|
||||
setInterval(updateCountdown, 1000);
|
||||
|
||||
return cipherIcon;
|
||||
}
|
||||
|
||||
if (cipher.icon?.image) {
|
||||
try {
|
||||
const url = new URL(cipher.icon.image);
|
||||
@ -1104,6 +1162,9 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
|
||||
return this.buildPasskeysCipherDetailsElement(cipher, cipherDetailsElement);
|
||||
}
|
||||
|
||||
if (cipher.login?.totpField && cipher.login?.totp) {
|
||||
return this.buildTotpElement(cipher.login?.totp);
|
||||
}
|
||||
const subTitleText = this.getSubTitleText(cipher);
|
||||
const cipherSubtitleElement = this.buildCipherSubtitleElement(subTitleText);
|
||||
if (cipherSubtitleElement) {
|
||||
@ -1113,6 +1174,38 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
|
||||
return cipherDetailsElement;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a TOTP element for a given TOTP code.
|
||||
*
|
||||
* @param totp - The TOTP code to display.
|
||||
*/
|
||||
|
||||
private buildTotpElement(totpCode: string): HTMLDivElement | null {
|
||||
if (!totpCode) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const formattedTotpCode = `${totpCode.substring(0, 3)} ${totpCode.substring(3)}`;
|
||||
|
||||
const containerElement = globalThis.document.createElement("div");
|
||||
containerElement.classList.add("cipher-details");
|
||||
const totpHeading = document.createElement("span");
|
||||
totpHeading.classList.add("cipher-name");
|
||||
totpHeading.textContent = this.getTranslation("fillVerificationCode");
|
||||
totpHeading.setAttribute("aria-label", this.getTranslation("fillVerificationCodeAria"));
|
||||
|
||||
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);
|
||||
|
||||
return containerElement;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds the name element for a given cipher.
|
||||
*
|
||||
|
@ -350,6 +350,32 @@ body * {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.totp-sec-span {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
@include themify($themes) {
|
||||
color: themed("textColor");
|
||||
}
|
||||
}
|
||||
|
||||
.totp-sec-span-danger {
|
||||
@include themify($themes) {
|
||||
color: themed("passwordSpecialColor");
|
||||
}
|
||||
}
|
||||
.circle-color {
|
||||
@include themify($themes) {
|
||||
stroke: themed("primaryColor");
|
||||
}
|
||||
}
|
||||
.circle-danger-color {
|
||||
@include themify($themes) {
|
||||
stroke: themed("passwordSpecialColor");
|
||||
}
|
||||
}
|
||||
|
||||
.cipher-name,
|
||||
.cipher-subtitle {
|
||||
display: block;
|
||||
|
@ -50,7 +50,7 @@
|
||||
<bit-section>
|
||||
<bit-item>
|
||||
<a bit-item-content routerLink="/excluded-domains">{{ "excludedDomains" | i18n }}</a>
|
||||
<i slot="end" class="bwi bwi-angle-right bwi-lg row-sub-icon" aria-hidden="true"></i>
|
||||
<i slot="end" class="bwi bwi-angle-right row-sub-icon" aria-hidden="true"></i>
|
||||
</bit-item>
|
||||
</bit-section>
|
||||
</div>
|
||||
|
@ -45,4 +45,5 @@ export interface InlineMenuFieldQualificationService {
|
||||
isFieldForIdentityUsername(field: AutofillField): boolean;
|
||||
isElementLoginSubmitButton(element: Element): boolean;
|
||||
isElementChangePasswordSubmitButton(element: Element): boolean;
|
||||
isTotpField(field: AutofillField): boolean;
|
||||
}
|
||||
|
@ -21,7 +21,23 @@ describe("InlineMenuFieldQualificationService", () => {
|
||||
});
|
||||
|
||||
describe("isFieldForLoginForm", () => {
|
||||
it("disqualifies totp fields", () => {
|
||||
it("does not disqualify totp fields with flag set to true", () => {
|
||||
inlineMenuFieldQualificationService["inlineMenuTotpFeatureFlag"] = true;
|
||||
const field = mock<AutofillField>({
|
||||
type: "text",
|
||||
autoCompleteType: "one-time-code",
|
||||
htmlName: "totp",
|
||||
htmlID: "totp",
|
||||
placeholder: "totp",
|
||||
});
|
||||
|
||||
expect(inlineMenuFieldQualificationService.isFieldForLoginForm(field, pageDetails)).toBe(
|
||||
true,
|
||||
);
|
||||
});
|
||||
|
||||
it("disqualify totp fields with flag set to false", () => {
|
||||
inlineMenuFieldQualificationService["inlineMenuTotpFeatureFlag"] = false;
|
||||
const field = mock<AutofillField>({
|
||||
type: "text",
|
||||
autoCompleteType: "one-time-code",
|
||||
|
@ -150,12 +150,16 @@ export class InlineMenuFieldQualificationService
|
||||
]);
|
||||
private totpFieldAutocompleteValue = "one-time-code";
|
||||
private inlineMenuFieldQualificationFlagSet = false;
|
||||
private inlineMenuTotpFeatureFlag = false;
|
||||
|
||||
constructor() {
|
||||
void sendExtensionMessage("getInlineMenuFieldQualificationFeatureFlag").then(
|
||||
(getInlineMenuFieldQualificationFlag) =>
|
||||
(this.inlineMenuFieldQualificationFlagSet = !!getInlineMenuFieldQualificationFlag?.result),
|
||||
);
|
||||
void Promise.all([
|
||||
sendExtensionMessage("getInlineMenuFieldQualificationFeatureFlag"),
|
||||
sendExtensionMessage("getInlineMenuTotpFeatureFlag"),
|
||||
]).then(([fieldQualificationFlag, totpFeatureFlag]) => {
|
||||
this.inlineMenuFieldQualificationFlagSet = !!fieldQualificationFlag?.result;
|
||||
this.inlineMenuTotpFeatureFlag = !!totpFeatureFlag?.result;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@ -169,8 +173,15 @@ export class InlineMenuFieldQualificationService
|
||||
return this.isFieldForLoginFormFallback(field);
|
||||
}
|
||||
|
||||
if (this.isTotpField(field)) {
|
||||
return false;
|
||||
/**
|
||||
* Autofill does not fill password type totp input fields
|
||||
*/
|
||||
if (this.inlineMenuTotpFeatureFlag) {
|
||||
const isTotpField = this.isTotpField(field);
|
||||
const passwordType = field.type === "password";
|
||||
if (isTotpField && !passwordType) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
const isCurrentPasswordField = this.isCurrentPasswordField(field);
|
||||
@ -987,7 +998,7 @@ export class InlineMenuFieldQualificationService
|
||||
*
|
||||
* @param field - The field to validate
|
||||
*/
|
||||
private isTotpField = (field: AutofillField): boolean => {
|
||||
isTotpField = (field: AutofillField): boolean => {
|
||||
if (this.fieldContainsAutocompleteValues(field, this.totpFieldAutocompleteValue)) {
|
||||
return true;
|
||||
}
|
||||
|
@ -5,20 +5,34 @@ $dark-icon-themes: "theme_dark", "theme_solarizedDark", "theme_nord";
|
||||
$font-family-sans-serif: "DM Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
$font-family-source-code-pro: "Source Code Pro", monospace;
|
||||
$font-size-base: 14px;
|
||||
$text-color: #212529;
|
||||
$muted-text-color: #6c747c;
|
||||
$border-color: #ced4dc;
|
||||
|
||||
$text-color-light: #212529;
|
||||
$muted-text-color-light: #6c747c;
|
||||
$background-color-light: #ffffff;
|
||||
$background-offset-color-light: #f0f0f0;
|
||||
$brand-primary-light: #175ddc;
|
||||
$password-special-color-light: #b80017;
|
||||
$password-number-color-light: #1452c1;
|
||||
$success-color-light: #017e45;
|
||||
$error-color-light: #c83522;
|
||||
|
||||
$text-color-dark: #ffffff;
|
||||
$muted-text-color-dark: #bac0ce;
|
||||
$background-color-dark: #2f343d;
|
||||
$background-offset-color-dark: darken(#2f343d, 2.75%);
|
||||
$border-color-dark: #ddd;
|
||||
$brand-primary-dark: #6f9df1;
|
||||
$password-special-color-dark: #ff8d85;
|
||||
$password-number-color-dark: #6f9df1;
|
||||
$success-color-dark: #8db89b;
|
||||
$error-color-dark: #ee9792;
|
||||
|
||||
$muted-blue: #5a6d91;
|
||||
$muted-grey: #bac0ce;
|
||||
$border-color: #ced4dc;
|
||||
|
||||
$border-radius: 3px;
|
||||
$focus-outline-color: #1252a3;
|
||||
$muted-blue: #5a6d91;
|
||||
$password-special-color: #b80017;
|
||||
$password-number-color: #1452c1;
|
||||
|
||||
$brand-primary: #175ddc;
|
||||
|
||||
$background-color: #ffffff;
|
||||
$background-offset-color: #f0f0f0;
|
||||
|
||||
$solarizedDarkBase0: #839496;
|
||||
$solarizedDarkBase03: #002b36;
|
||||
@ -28,48 +42,42 @@ $solarizedDarkBase2: #eee8d5;
|
||||
$solarizedDarkCyan: #2aa198;
|
||||
$solarizedDarkGreen: #859900;
|
||||
|
||||
$success-color-light: #017e45;
|
||||
$success-color-dark: #8db89b;
|
||||
|
||||
$error-color-light: #c83522;
|
||||
$error-color-dark: #ee9792;
|
||||
|
||||
$themes: (
|
||||
light: (
|
||||
textColor: $text-color,
|
||||
mutedTextColor: $muted-text-color,
|
||||
backgroundColor: $background-color,
|
||||
backgroundOffsetColor: $background-offset-color,
|
||||
primaryColor: $brand-primary,
|
||||
buttonPrimaryColor: $brand-primary,
|
||||
textContrast: $background-color,
|
||||
textColor: $text-color-light,
|
||||
mutedTextColor: $muted-text-color-light,
|
||||
backgroundColor: $background-color-light,
|
||||
backgroundOffsetColor: $background-offset-color-light,
|
||||
primaryColor: $brand-primary-light,
|
||||
buttonPrimaryColor: $brand-primary-light,
|
||||
textContrast: $background-color-light,
|
||||
inputBorderColor: darken($border-color-dark, 2.75%),
|
||||
inputBackgroundColor: #ffffff,
|
||||
inputBackgroundColor: $background-color-light,
|
||||
borderColor: $border-color,
|
||||
focusOutlineColor: $focus-outline-color,
|
||||
successColor: $success-color-light,
|
||||
errorColor: $error-color-light,
|
||||
passkeysAuthenticating: $muted-blue,
|
||||
passwordSpecialColor: $password-special-color,
|
||||
passwordNumberColor: $password-number-color,
|
||||
passwordSpecialColor: $password-special-color-light,
|
||||
passwordNumberColor: $password-number-color-light,
|
||||
),
|
||||
dark: (
|
||||
textColor: #ffffff,
|
||||
mutedTextColor: #bac0ce,
|
||||
backgroundColor: #2f343d,
|
||||
backgroundOffsetColor: darken(#2f343d, 2.75%),
|
||||
buttonPrimaryColor: #6f9df1,
|
||||
primaryColor: #6f9df1,
|
||||
textContrast: #2f343d,
|
||||
textColor: $text-color-dark,
|
||||
mutedTextColor: $muted-text-color-dark,
|
||||
backgroundColor: $background-color-dark,
|
||||
backgroundOffsetColor: $background-offset-color-dark,
|
||||
buttonPrimaryColor: $brand-primary-dark,
|
||||
primaryColor: $brand-primary-dark,
|
||||
textContrast: $background-color-dark,
|
||||
inputBorderColor: #4c525f,
|
||||
inputBackgroundColor: #2f343d,
|
||||
inputBackgroundColor: $background-color-dark,
|
||||
borderColor: #4c525f,
|
||||
focusOutlineColor: lighten($focus-outline-color, 25%),
|
||||
successColor: $success-color-dark,
|
||||
errorColor: $error-color-dark,
|
||||
passkeysAuthenticating: #bac0ce,
|
||||
passwordSpecialColor: #ff8d85,
|
||||
passwordNumberColor: #6f9df1,
|
||||
passkeysAuthenticating: $muted-grey,
|
||||
passwordSpecialColor: $password-special-color-dark,
|
||||
passwordNumberColor: $password-number-color-dark,
|
||||
),
|
||||
nord: (
|
||||
textColor: $nord5,
|
||||
|
@ -241,7 +241,7 @@ export function createInitAutofillInlineMenuListMessageMock(
|
||||
createAutofillOverlayCipherDataMock(4, {
|
||||
icon: { imageEnabled: false, image: "", fallbackImage: "", icon: "" },
|
||||
}),
|
||||
createAutofillOverlayCipherDataMock(5),
|
||||
createAutofillOverlayCipherDataMock(5, { login: { totp: "123456", totpField: true } }),
|
||||
createAutofillOverlayCipherDataMock(6),
|
||||
createAutofillOverlayCipherDataMock(7),
|
||||
createAutofillOverlayCipherDataMock(8),
|
||||
|
@ -201,11 +201,11 @@ import {
|
||||
ImportServiceAbstraction,
|
||||
} from "@bitwarden/importer/core";
|
||||
import {
|
||||
DefaultKdfConfigService,
|
||||
KdfConfigService,
|
||||
BiometricStateService,
|
||||
BiometricsService,
|
||||
DefaultBiometricStateService,
|
||||
DefaultKdfConfigService,
|
||||
KdfConfigService,
|
||||
KeyService as KeyServiceAbstraction,
|
||||
} from "@bitwarden/key-management";
|
||||
import {
|
||||
@ -232,7 +232,10 @@ import { MainContextMenuHandler } from "../autofill/browser/main-context-menu-ha
|
||||
import LegacyOverlayBackground from "../autofill/deprecated/background/overlay.background.deprecated";
|
||||
import { Fido2Background as Fido2BackgroundAbstraction } from "../autofill/fido2/background/abstractions/fido2.background";
|
||||
import { Fido2Background } from "../autofill/fido2/background/fido2.background";
|
||||
import { BrowserFido2UserInterfaceService } from "../autofill/fido2/services/browser-fido2-user-interface.service";
|
||||
import {
|
||||
BrowserFido2ParentWindowReference,
|
||||
BrowserFido2UserInterfaceService,
|
||||
} from "../autofill/fido2/services/browser-fido2-user-interface.service";
|
||||
import { AutofillService as AutofillServiceAbstraction } from "../autofill/services/abstractions/autofill.service";
|
||||
import AutofillService from "../autofill/services/autofill.service";
|
||||
import { InlineMenuFieldQualificationService } from "../autofill/services/inline-menu-field-qualification.service";
|
||||
@ -337,10 +340,10 @@ export default class MainBackground {
|
||||
policyApiService: PolicyApiServiceAbstraction;
|
||||
sendApiService: SendApiServiceAbstraction;
|
||||
userVerificationApiService: UserVerificationApiServiceAbstraction;
|
||||
fido2UserInterfaceService: Fido2UserInterfaceServiceAbstraction;
|
||||
fido2AuthenticatorService: Fido2AuthenticatorServiceAbstraction;
|
||||
fido2UserInterfaceService: Fido2UserInterfaceServiceAbstraction<BrowserFido2ParentWindowReference>;
|
||||
fido2AuthenticatorService: Fido2AuthenticatorServiceAbstraction<BrowserFido2ParentWindowReference>;
|
||||
fido2ActiveRequestManager: Fido2ActiveRequestManagerAbstraction;
|
||||
fido2ClientService: Fido2ClientServiceAbstraction;
|
||||
fido2ClientService: Fido2ClientServiceAbstraction<BrowserFido2ParentWindowReference>;
|
||||
avatarService: AvatarServiceAbstraction;
|
||||
mainContextMenuHandler: MainContextMenuHandler;
|
||||
cipherContextMenuHandler: CipherContextMenuHandler;
|
||||
@ -693,7 +696,7 @@ export default class MainBackground {
|
||||
);
|
||||
|
||||
this.domainSettingsService = new DefaultDomainSettingsService(this.stateProvider);
|
||||
this.fileUploadService = new FileUploadService(this.logService);
|
||||
this.fileUploadService = new FileUploadService(this.logService, this.apiService);
|
||||
this.cipherFileUploadService = new CipherFileUploadService(
|
||||
this.apiService,
|
||||
this.fileUploadService,
|
||||
@ -1053,14 +1056,6 @@ export default class MainBackground {
|
||||
|
||||
const systemUtilsServiceReloadCallback = async () => {
|
||||
await this.taskSchedulerService.clearAllScheduledTasks();
|
||||
if (this.platformUtilsService.isSafari()) {
|
||||
// If we do `chrome.runtime.reload` on safari they will send an onInstalled reason of install
|
||||
// and that prompts us to show a new tab, this apparently doesn't happen on sideloaded
|
||||
// extensions and only shows itself production scenarios. See: https://bitwarden.atlassian.net/browse/PM-12298
|
||||
self.location.reload();
|
||||
return;
|
||||
}
|
||||
|
||||
BrowserApi.reloadExtension();
|
||||
};
|
||||
|
||||
@ -1338,7 +1333,7 @@ export default class MainBackground {
|
||||
return new Promise<void>((resolve) => {
|
||||
setTimeout(async () => {
|
||||
await this.refreshBadge();
|
||||
await this.fullSync(true);
|
||||
await this.fullSync(false);
|
||||
this.taskSchedulerService.setInterval(
|
||||
ScheduledTaskNames.scheduleNextSyncInterval,
|
||||
5 * 60 * 1000, // check every 5 minutes
|
||||
|
@ -73,6 +73,7 @@ export default class RuntimeBackground {
|
||||
"biometricUnlockAvailable",
|
||||
"getUseTreeWalkerApiForPageDetailsCollectionFeatureFlag",
|
||||
"getInlineMenuFieldQualificationFeatureFlag",
|
||||
"getInlineMenuTotpFeatureFlag",
|
||||
];
|
||||
|
||||
if (messagesWithResponse.includes(msg.command)) {
|
||||
@ -197,6 +198,9 @@ export default class RuntimeBackground {
|
||||
case "getInlineMenuFieldQualificationFeatureFlag": {
|
||||
return await this.configService.getFeatureFlag(FeatureFlag.InlineMenuFieldQualification);
|
||||
}
|
||||
case "getInlineMenuTotpFeatureFlag": {
|
||||
return await this.configService.getFeatureFlag(FeatureFlag.InlineMenuTotp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
"manifest_version": 2,
|
||||
"name": "__MSG_extName__",
|
||||
"short_name": "__MSG_appName__",
|
||||
"version": "2024.12.0",
|
||||
"version": "2024.12.3",
|
||||
"description": "__MSG_extDesc__",
|
||||
"default_locale": "en",
|
||||
"author": "Bitwarden Inc.",
|
||||
|
@ -3,7 +3,7 @@
|
||||
"minimum_chrome_version": "102.0",
|
||||
"name": "__MSG_extName__",
|
||||
"short_name": "__MSG_appName__",
|
||||
"version": "2024.12.0",
|
||||
"version": "2024.12.3",
|
||||
"description": "__MSG_extDesc__",
|
||||
"default_locale": "en",
|
||||
"author": "Bitwarden Inc.",
|
||||
|
@ -439,6 +439,12 @@ export class BrowserApi {
|
||||
* Handles reloading the extension using the underlying functionality exposed by the browser API.
|
||||
*/
|
||||
static reloadExtension() {
|
||||
// If we do `chrome.runtime.reload` on safari they will send an onInstalled reason of install
|
||||
// and that prompts us to show a new tab, this apparently doesn't happen on sideloaded
|
||||
// extensions and only shows itself production scenarios. See: https://bitwarden.atlassian.net/browse/PM-12298
|
||||
if (this.isSafariApi) {
|
||||
self.location.reload();
|
||||
}
|
||||
return chrome.runtime.reload();
|
||||
}
|
||||
|
||||
|
@ -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"
|
||||
|
@ -18,6 +18,7 @@ import {
|
||||
import { canAccessFeature } from "@bitwarden/angular/platform/guard/feature-flag.guard";
|
||||
import { extensionRefreshRedirect } from "@bitwarden/angular/utils/extension-refresh-redirect";
|
||||
import { extensionRefreshSwap } from "@bitwarden/angular/utils/extension-refresh-swap";
|
||||
import { NewDeviceVerificationNoticeGuard } from "@bitwarden/angular/vault/guards";
|
||||
import {
|
||||
AnonLayoutWrapperComponent,
|
||||
AnonLayoutWrapperData,
|
||||
@ -38,12 +39,18 @@ import {
|
||||
VaultIcon,
|
||||
LoginDecryptionOptionsComponent,
|
||||
DevicesIcon,
|
||||
SsoComponent,
|
||||
TwoFactorTimeoutIcon,
|
||||
TwoFactorAuthComponent,
|
||||
TwoFactorTimeoutComponent,
|
||||
TwoFactorAuthGuard,
|
||||
} from "@bitwarden/auth/angular";
|
||||
import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum";
|
||||
import {
|
||||
NewDeviceVerificationNoticePageOneComponent,
|
||||
NewDeviceVerificationNoticePageTwoComponent,
|
||||
VaultIcons,
|
||||
} from "@bitwarden/vault";
|
||||
|
||||
import { fido2AuthGuard } from "../auth/guards/fido2-auth.guard";
|
||||
import { AccountSwitcherComponent } from "../auth/popup/account-switching/account-switcher.component";
|
||||
@ -63,7 +70,7 @@ import { RemovePasswordComponent } from "../auth/popup/remove-password.component
|
||||
import { SetPasswordComponent } from "../auth/popup/set-password.component";
|
||||
import { AccountSecurityComponent as AccountSecurityV1Component } from "../auth/popup/settings/account-security-v1.component";
|
||||
import { AccountSecurityComponent } from "../auth/popup/settings/account-security.component";
|
||||
import { SsoComponent } from "../auth/popup/sso.component";
|
||||
import { SsoComponentV1 } from "../auth/popup/sso-v1.component";
|
||||
import { TwoFactorOptionsComponent } from "../auth/popup/two-factor-options.component";
|
||||
import { TwoFactorComponentV1 } from "../auth/popup/two-factor-v1.component";
|
||||
import { UpdateTempPasswordComponent } from "../auth/popup/update-temp-password.component";
|
||||
@ -90,15 +97,10 @@ import { SendAddEditComponent as SendAddEditV2Component } from "../tools/popup/s
|
||||
import { SendCreatedComponent } from "../tools/popup/send-v2/send-created/send-created.component";
|
||||
import { SendV2Component } from "../tools/popup/send-v2/send-v2.component";
|
||||
import { AboutPageV2Component } from "../tools/popup/settings/about-page/about-page-v2.component";
|
||||
import { AboutPageComponent } from "../tools/popup/settings/about-page/about-page.component";
|
||||
import { MoreFromBitwardenPageV2Component } from "../tools/popup/settings/about-page/more-from-bitwarden-page-v2.component";
|
||||
import { MoreFromBitwardenPageComponent } from "../tools/popup/settings/about-page/more-from-bitwarden-page.component";
|
||||
import { ExportBrowserV2Component } from "../tools/popup/settings/export/export-browser-v2.component";
|
||||
import { ExportBrowserComponent } from "../tools/popup/settings/export/export-browser.component";
|
||||
import { ImportBrowserV2Component } from "../tools/popup/settings/import/import-browser-v2.component";
|
||||
import { ImportBrowserComponent } from "../tools/popup/settings/import/import-browser.component";
|
||||
import { SettingsV2Component } from "../tools/popup/settings/settings-v2.component";
|
||||
import { SettingsComponent } from "../tools/popup/settings/settings.component";
|
||||
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";
|
||||
@ -230,12 +232,40 @@ const routes: Routes = [
|
||||
canActivate: [unauthGuardFn(unauthRouteOverrides)],
|
||||
data: { elevation: 1 } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "sso",
|
||||
component: SsoComponent,
|
||||
canActivate: [unauthGuardFn(unauthRouteOverrides)],
|
||||
data: { elevation: 1 } satisfies RouteDataProperties,
|
||||
},
|
||||
...unauthUiRefreshSwap(
|
||||
SsoComponentV1,
|
||||
ExtensionAnonLayoutWrapperComponent,
|
||||
{
|
||||
path: "sso",
|
||||
canActivate: [unauthGuardFn(unauthRouteOverrides)],
|
||||
data: { elevation: 1 } satisfies RouteDataProperties,
|
||||
},
|
||||
{
|
||||
path: "sso",
|
||||
canActivate: [unauthGuardFn(unauthRouteOverrides)],
|
||||
data: {
|
||||
pageIcon: VaultIcon,
|
||||
pageTitle: {
|
||||
key: "enterpriseSingleSignOn",
|
||||
},
|
||||
pageSubtitle: {
|
||||
key: "singleSignOnEnterOrgIdentifierText",
|
||||
},
|
||||
elevation: 1,
|
||||
} satisfies RouteDataProperties & ExtensionAnonLayoutWrapperData,
|
||||
children: [
|
||||
{ path: "", component: SsoComponent },
|
||||
{
|
||||
path: "",
|
||||
component: EnvironmentSelectorComponent,
|
||||
outlet: "environment-selector",
|
||||
data: {
|
||||
overlayPosition: ExtensionDefaultOverlayPosition,
|
||||
} satisfies EnvironmentSelectorRouteData,
|
||||
},
|
||||
],
|
||||
},
|
||||
),
|
||||
{
|
||||
path: "set-password",
|
||||
component: SetPasswordComponent,
|
||||
@ -321,16 +351,18 @@ const routes: Routes = [
|
||||
canActivate: [authGuard],
|
||||
data: { elevation: 1 } satisfies RouteDataProperties,
|
||||
}),
|
||||
...extensionRefreshSwap(ImportBrowserComponent, ImportBrowserV2Component, {
|
||||
{
|
||||
path: "import",
|
||||
component: ImportBrowserV2Component,
|
||||
canActivate: [authGuard],
|
||||
data: { elevation: 1 } satisfies RouteDataProperties,
|
||||
}),
|
||||
...extensionRefreshSwap(ExportBrowserComponent, ExportBrowserV2Component, {
|
||||
},
|
||||
{
|
||||
path: "export",
|
||||
component: ExportBrowserV2Component,
|
||||
canActivate: [authGuard],
|
||||
data: { elevation: 2 } satisfies RouteDataProperties,
|
||||
}),
|
||||
},
|
||||
...extensionRefreshSwap(AutofillV1Component, AutofillComponent, {
|
||||
path: "autofill",
|
||||
canActivate: [authGuard],
|
||||
@ -630,7 +662,18 @@ const routes: Routes = [
|
||||
},
|
||||
showReadonlyHostname: true,
|
||||
showAcctSwitcher: true,
|
||||
} satisfies ExtensionAnonLayoutWrapperData,
|
||||
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
|
||||
* 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.
|
||||
*/
|
||||
doNotSaveUrl: true,
|
||||
} satisfies ExtensionAnonLayoutWrapperData & RouteDataProperties,
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
@ -666,16 +709,45 @@ const routes: Routes = [
|
||||
canActivate: [canAccessFeature(FeatureFlag.ExtensionRefresh, true, "/")],
|
||||
data: { elevation: 1 } satisfies RouteDataProperties,
|
||||
},
|
||||
...extensionRefreshSwap(AboutPageComponent, AboutPageV2Component, {
|
||||
{
|
||||
path: "about",
|
||||
component: AboutPageV2Component,
|
||||
canActivate: [authGuard],
|
||||
data: { elevation: 1 } satisfies RouteDataProperties,
|
||||
}),
|
||||
...extensionRefreshSwap(MoreFromBitwardenPageComponent, MoreFromBitwardenPageV2Component, {
|
||||
},
|
||||
{
|
||||
path: "more-from-bitwarden",
|
||||
component: MoreFromBitwardenPageV2Component,
|
||||
canActivate: [authGuard],
|
||||
data: { elevation: 2 } satisfies RouteDataProperties,
|
||||
}),
|
||||
},
|
||||
{
|
||||
path: "new-device-notice",
|
||||
component: ExtensionAnonLayoutWrapperComponent,
|
||||
canActivate: [],
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: NewDeviceVerificationNoticePageOneComponent,
|
||||
data: {
|
||||
pageIcon: VaultIcons.ExclamationTriangle,
|
||||
pageTitle: {
|
||||
key: "importantNotice",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "setup",
|
||||
component: NewDeviceVerificationNoticePageTwoComponent,
|
||||
data: {
|
||||
pageIcon: VaultIcons.UserLock,
|
||||
pageTitle: {
|
||||
key: "setupTwoStepLogin",
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
...extensionRefreshSwap(TabsComponent, TabsV2Component, {
|
||||
path: "tabs",
|
||||
data: { elevation: 0 } satisfies RouteDataProperties,
|
||||
@ -695,7 +767,7 @@ const routes: Routes = [
|
||||
},
|
||||
...extensionRefreshSwap(VaultFilterComponent, VaultV2Component, {
|
||||
path: "vault",
|
||||
canActivate: [authGuard],
|
||||
canActivate: [authGuard, NewDeviceVerificationNoticeGuard],
|
||||
canDeactivate: [clearVaultStateGuard],
|
||||
data: { elevation: 0 } satisfies RouteDataProperties,
|
||||
}),
|
||||
@ -704,11 +776,12 @@ const routes: Routes = [
|
||||
canActivate: [authGuard],
|
||||
data: { elevation: 0 } satisfies RouteDataProperties,
|
||||
}),
|
||||
...extensionRefreshSwap(SettingsComponent, SettingsV2Component, {
|
||||
{
|
||||
path: "settings",
|
||||
component: SettingsV2Component,
|
||||
canActivate: [authGuard],
|
||||
data: { elevation: 0 } satisfies RouteDataProperties,
|
||||
}),
|
||||
},
|
||||
...extensionRefreshSwap(SendGroupingsComponent, SendV2Component, {
|
||||
path: "send",
|
||||
canActivate: [authGuard],
|
||||
|
@ -33,7 +33,7 @@ import { SetPasswordComponent } from "../auth/popup/set-password.component";
|
||||
import { AccountSecurityComponent as AccountSecurityComponentV1 } from "../auth/popup/settings/account-security-v1.component";
|
||||
import { AccountSecurityComponent } from "../auth/popup/settings/account-security.component";
|
||||
import { VaultTimeoutInputComponent } from "../auth/popup/settings/vault-timeout-input.component";
|
||||
import { SsoComponent } from "../auth/popup/sso.component";
|
||||
import { SsoComponentV1 } from "../auth/popup/sso-v1.component";
|
||||
import { TwoFactorOptionsComponent } from "../auth/popup/two-factor-options.component";
|
||||
import { TwoFactorComponentV1 } from "../auth/popup/two-factor-v1.component";
|
||||
import { UpdateTempPasswordComponent } from "../auth/popup/update-temp-password.component";
|
||||
@ -63,7 +63,6 @@ import { SendListComponent } from "../tools/popup/send/components/send-list.comp
|
||||
import { SendAddEditComponent } from "../tools/popup/send/send-add-edit.component";
|
||||
import { SendGroupingsComponent } from "../tools/popup/send/send-groupings.component";
|
||||
import { SendTypeComponent } from "../tools/popup/send/send-type.component";
|
||||
import { SettingsComponent } from "../tools/popup/settings/settings.component";
|
||||
import { ActionButtonsComponent } from "../vault/popup/components/action-buttons.component";
|
||||
import { CipherRowComponent } from "../vault/popup/components/cipher-row.component";
|
||||
import { AddEditCustomFieldsComponent } from "../vault/popup/components/vault/add-edit-custom-fields.component";
|
||||
@ -174,10 +173,9 @@ import "../platform/popup/locales";
|
||||
SendListComponent,
|
||||
SendTypeComponent,
|
||||
SetPasswordComponent,
|
||||
SettingsComponent,
|
||||
VaultSettingsComponent,
|
||||
ShareComponent,
|
||||
SsoComponent,
|
||||
SsoComponentV1,
|
||||
SyncComponent,
|
||||
TabsComponent,
|
||||
TabsV2Component,
|
||||
|
@ -26,6 +26,7 @@ import {
|
||||
AnonLayoutWrapperDataService,
|
||||
LoginComponentService,
|
||||
LockComponentService,
|
||||
SsoComponentService,
|
||||
LoginDecryptionOptionsService,
|
||||
TwoFactorAuthComponentService,
|
||||
TwoFactorAuthEmailComponentService,
|
||||
@ -122,6 +123,7 @@ import { PasswordRepromptService } from "@bitwarden/vault";
|
||||
import { ForegroundLockService } from "../../auth/popup/accounts/foreground-lock.service";
|
||||
import { ExtensionAnonLayoutWrapperDataService } from "../../auth/popup/extension-anon-layout-wrapper/extension-anon-layout-wrapper-data.service";
|
||||
import { ExtensionLoginComponentService } from "../../auth/popup/login/extension-login-component.service";
|
||||
import { ExtensionSsoComponentService } from "../../auth/popup/login/extension-sso-component.service";
|
||||
import { ExtensionLoginDecryptionOptionsService } from "../../auth/popup/login-decryption-options/extension-login-decryption-options.service";
|
||||
import { ExtensionTwoFactorAuthComponentService } from "../../auth/services/extension-two-factor-auth-component.service";
|
||||
import { ExtensionTwoFactorAuthEmailComponentService } from "../../auth/services/extension-two-factor-auth-email-component.service";
|
||||
@ -612,6 +614,11 @@ const safeProviders: SafeProvider[] = [
|
||||
useExisting: PopupCompactModeService,
|
||||
deps: [],
|
||||
}),
|
||||
safeProvider({
|
||||
provide: SsoComponentService,
|
||||
useClass: ExtensionSsoComponentService,
|
||||
deps: [SyncService, AuthService, EnvironmentService, I18nServiceAbstraction, LogService],
|
||||
}),
|
||||
safeProvider({
|
||||
provide: LoginDecryptionOptionsService,
|
||||
useClass: ExtensionLoginDecryptionOptionsService,
|
||||
|
@ -1,63 +0,0 @@
|
||||
<header>
|
||||
<div class="left">
|
||||
<button type="button" routerLink="/tabs/settings">
|
||||
<span class="header-icon"><i class="bwi bwi-angle-left" aria-hidden="true"></i></span>
|
||||
<span>{{ "back" | i18n }}</span>
|
||||
</button>
|
||||
</div>
|
||||
<h1 class="center">
|
||||
<span class="title">{{ "about" | i18n }}</span>
|
||||
</h1>
|
||||
<div class="right">
|
||||
<app-pop-out></app-pop-out>
|
||||
</div>
|
||||
</header>
|
||||
<main tabindex="-1">
|
||||
<div class="box list">
|
||||
<div class="box-content single-line">
|
||||
<button
|
||||
type="button"
|
||||
class="box-content-row box-content-row-flex text-default"
|
||||
appStopClick
|
||||
(click)="about()"
|
||||
>
|
||||
<div class="row-main">{{ "aboutBitwarden" | i18n }}</div>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="box-content-row box-content-row-flex text-default"
|
||||
appStopClick
|
||||
(click)="launchHelp()"
|
||||
>
|
||||
<div class="row-main">{{ "helpCenter" | i18n }}</div>
|
||||
<i class="bwi bwi-external-link bwi-lg row-sub-icon" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="box-content-row box-content-row-flex text-default"
|
||||
appStopClick
|
||||
(click)="openWebVault()"
|
||||
>
|
||||
<div class="row-main">{{ "bitWebVaultApp" | i18n }}</div>
|
||||
<i class="bwi bwi-external-link bwi-lg row-sub-icon" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="box-content-row box-content-row-flex text-default"
|
||||
routerLink="/more-from-bitwarden"
|
||||
>
|
||||
<div class="row-main">{{ "moreFromBitwarden" | i18n }}</div>
|
||||
<i class="bwi bwi-angle-right bwi-lg row-sub-icon" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="box-content-row box-content-row-flex text-default"
|
||||
appStopClick
|
||||
(click)="rate()"
|
||||
>
|
||||
<div class="row-main">{{ "rateExtension" | i18n }}</div>
|
||||
<i class="bwi bwi-external-link bwi-lg row-sub-icon" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
@ -1,84 +0,0 @@
|
||||
import { CommonModule } from "@angular/common";
|
||||
import { Component } from "@angular/core";
|
||||
import { RouterModule } from "@angular/router";
|
||||
import { firstValueFrom } from "rxjs";
|
||||
|
||||
import { JslibModule } from "@bitwarden/angular/jslib.module";
|
||||
import { DeviceType } from "@bitwarden/common/enums";
|
||||
import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
|
||||
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
|
||||
import { DialogService } from "@bitwarden/components";
|
||||
|
||||
import { BrowserApi } from "../../../../platform/browser/browser-api";
|
||||
import { PopOutComponent } from "../../../../platform/popup/components/pop-out.component";
|
||||
import { AboutDialogComponent } from "../about-dialog/about-dialog.component";
|
||||
|
||||
const RateUrls = {
|
||||
[DeviceType.ChromeExtension]:
|
||||
"https://chromewebstore.google.com/detail/bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb/reviews",
|
||||
[DeviceType.FirefoxExtension]:
|
||||
"https://addons.mozilla.org/en-US/firefox/addon/bitwarden-password-manager/#reviews",
|
||||
[DeviceType.OperaExtension]:
|
||||
"https://addons.opera.com/en/extensions/details/bitwarden-free-password-manager/#feedback-container",
|
||||
[DeviceType.EdgeExtension]:
|
||||
"https://microsoftedge.microsoft.com/addons/detail/jbkfoedolllekgbhcbcoahefnbanhhlh",
|
||||
[DeviceType.VivaldiExtension]:
|
||||
"https://chromewebstore.google.com/detail/bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb/reviews",
|
||||
[DeviceType.SafariExtension]: "https://apps.apple.com/app/bitwarden/id1352778147",
|
||||
};
|
||||
|
||||
@Component({
|
||||
templateUrl: "about-page.component.html",
|
||||
standalone: true,
|
||||
imports: [CommonModule, JslibModule, RouterModule, PopOutComponent],
|
||||
})
|
||||
export class AboutPageComponent {
|
||||
constructor(
|
||||
private dialogService: DialogService,
|
||||
private environmentService: EnvironmentService,
|
||||
private platformUtilsService: PlatformUtilsService,
|
||||
) {}
|
||||
|
||||
about() {
|
||||
this.dialogService.open(AboutDialogComponent);
|
||||
}
|
||||
|
||||
async launchHelp() {
|
||||
const confirmed = await this.dialogService.openSimpleDialog({
|
||||
title: { key: "continueToHelpCenter" },
|
||||
content: { key: "continueToHelpCenterDesc" },
|
||||
type: "info",
|
||||
acceptButtonText: { key: "continue" },
|
||||
});
|
||||
if (confirmed) {
|
||||
await BrowserApi.createNewTab("https://bitwarden.com/help/");
|
||||
}
|
||||
}
|
||||
|
||||
async openWebVault() {
|
||||
const confirmed = await this.dialogService.openSimpleDialog({
|
||||
title: { key: "continueToWebApp" },
|
||||
content: { key: "continueToWebAppDesc" },
|
||||
type: "info",
|
||||
acceptButtonText: { key: "continue" },
|
||||
});
|
||||
if (confirmed) {
|
||||
const env = await firstValueFrom(this.environmentService.environment$);
|
||||
const url = env.getWebVaultUrl();
|
||||
await BrowserApi.createNewTab(url);
|
||||
}
|
||||
}
|
||||
|
||||
async rate() {
|
||||
const confirmed = await this.dialogService.openSimpleDialog({
|
||||
title: { key: "continueToBrowserExtensionStore" },
|
||||
content: { key: "continueToBrowserExtensionStoreDesc" },
|
||||
type: "info",
|
||||
acceptButtonText: { key: "continue" },
|
||||
});
|
||||
if (confirmed) {
|
||||
const deviceType = this.platformUtilsService.getDevice();
|
||||
await BrowserApi.createNewTab((RateUrls as any)[deviceType]);
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user